stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
40 lines • 2.04 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.selectReactionsForMessages = void 0;
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _schema = require("../../schema");
var _SqliteClient = require("../../SqliteClient");
var selectReactionsForMessages = exports.selectReactionsForMessages = function () {
var _ref = (0, _asyncToGenerator2.default)(function* (messageIds, limit = 25, filters, sort) {
var questionMarks = Array(messageIds.length).fill('?').join(',');
var reactionsColumnNames = Object.keys(_schema.tables.reactions.columns).map(name => `'${name}', a.${name}`).join(', ');
var userColumnNames = Object.keys(_schema.tables.users.columns).map(name => `'${name}', b.${name}`).join(', ');
var filterValue = filters?.type ? [typeof filters.type === 'string' ? filters.type : filters.type.$eq] : [];
var createdAtSort = Array.isArray(sort) ? sort.find(s => !!s.created_at)?.created_at : sort?.created_at;
var orderByClause = createdAtSort ? `ORDER BY cast(strftime('%s', a.createdAt) AS INTEGER) ${createdAtSort === 1 ? 'ASC' : 'DESC'}` : '';
_SqliteClient.SqliteClient.logger?.('info', 'selectReactionsForMessages', {
messageIds
});
var result = yield _SqliteClient.SqliteClient.executeSql(`SELECT
json_object(
'user', json_object(
${userColumnNames}
),
${reactionsColumnNames}
) as value
FROM reactions a
LEFT JOIN
users b
ON b.id = a.userId
WHERE a.messageId in (${questionMarks}) ${filters?.type ? `AND a.type = ?` : ''}
${orderByClause}
${limit ? 'LIMIT ?' : ''}`, [...messageIds, ...filterValue, ...(limit ? [limit] : [])]);
return result.map(r => JSON.parse(r.value));
});
return function selectReactionsForMessages(_x) {
return _ref.apply(this, arguments);
};
}();
//# sourceMappingURL=selectReactionsForMessages.js.map