unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
67 lines • 2.1 kB
JavaScript
import { USER_COLUMNS_PUBLIC, USERS_TABLE } from './user-store.js';
const toResponse = (row) => {
return {
id: row.id,
name: row.name,
username: row.username,
email: row.email,
imageUrl: row.image_url,
seenAt: row.seen_at,
createdAt: row.created_at,
updatedAt: row.updated_at,
deletedAt: row.deleted_at,
};
};
export class UserUpdatesReadModel {
constructor(db, _getLogger) {
this.db = db;
}
async getLastUpdatedAt() {
const result = await this.db(USERS_TABLE)
.select('id', 'updated_at')
.where({
// also consider deleted users (different than activeUsers query)
is_system: false,
is_service: false,
})
.orderBy('updated_at', 'desc')
.orderBy('id', 'desc')
.first();
return result
? {
lastUpdatedAt: result.updated_at,
userId: result.id,
}
: null;
}
/** @deprecated */
async getUsersUpdatedAfter(date, limit = 100) {
return this.getUsersUpdatedAfterOrEqual(date, limit, 0);
}
async getUsersUpdatedAfterOrEqual(date, limit = 100, afterId = 0) {
const result = await this.db(USERS_TABLE)
.where({
// also consider deleted users (different than activeUsers query)
is_system: false,
is_service: false,
})
.where((builder) => {
builder.where('updated_at', '>', date).orWhere((subBuilder) => {
subBuilder
.where('updated_at', '=', date)
.where('id', '>', afterId);
});
})
.orderBy('updated_at', 'asc')
.orderBy('id', 'asc')
.select([
...USER_COLUMNS_PUBLIC,
'created_at',
'updated_at',
'deleted_at',
])
.limit(limit);
return result.map(toResponse);
}
}
//# sourceMappingURL=user-updates-read-model.js.map