mirror of
https://github.com/Shadowfita/docmost.git
synced 2025-11-12 07:42:34 +10:00
fixes
This commit is contained in:
@ -9,15 +9,32 @@ import {
|
||||
} from '@docmost/db/types/entity.types';
|
||||
import { PaginationOptions } from '@docmost/db/pagination/pagination-options';
|
||||
import { executeWithPagination } from '@docmost/db/pagination/pagination';
|
||||
import { jsonObjectFrom } from 'kysely/helpers/postgres';
|
||||
import { ExpressionBuilder } from 'kysely';
|
||||
import { DB } from '@docmost/db/types/db';
|
||||
|
||||
@Injectable()
|
||||
export class PageHistoryRepo {
|
||||
constructor(@InjectKysely() private readonly db: KyselyDB) {}
|
||||
|
||||
private baseFields: Array<keyof PageHistory> = [
|
||||
'id',
|
||||
'pageId',
|
||||
'title',
|
||||
'slug',
|
||||
'icon',
|
||||
'coverPhoto',
|
||||
'version',
|
||||
'lastUpdatedById',
|
||||
'workspaceId',
|
||||
'createdAt',
|
||||
'updatedAt',
|
||||
];
|
||||
|
||||
async findById(pageHistoryId: string): Promise<PageHistory> {
|
||||
return await this.db
|
||||
.selectFrom('pageHistory')
|
||||
.selectAll()
|
||||
.select((eb) => [...this.baseFields, this.withLastUpdatedBy(eb)])
|
||||
.where('id', '=', pageHistoryId)
|
||||
.executeTakeFirst();
|
||||
}
|
||||
@ -48,26 +65,9 @@ export class PageHistoryRepo {
|
||||
}
|
||||
|
||||
async findPageHistoryByPageId(pageId: string, pagination: PaginationOptions) {
|
||||
// todo: fix user relationship
|
||||
const query = this.db
|
||||
.selectFrom('pageHistory as history')
|
||||
.innerJoin('users as user', 'user.id', 'history.lastUpdatedById')
|
||||
.select([
|
||||
'history.id',
|
||||
'history.pageId',
|
||||
'history.title',
|
||||
'history.slug',
|
||||
'history.icon',
|
||||
'history.coverPhoto',
|
||||
'history.version',
|
||||
'history.lastUpdatedById',
|
||||
'history.workspaceId',
|
||||
'history.createdAt',
|
||||
'history.updatedAt',
|
||||
'user.id',
|
||||
'user.name',
|
||||
'user.avatarUrl',
|
||||
])
|
||||
.selectFrom('pageHistory')
|
||||
.select((eb) => [...this.baseFields, this.withLastUpdatedBy(eb)])
|
||||
.where('pageId', '=', pageId)
|
||||
.orderBy('createdAt', 'desc');
|
||||
|
||||
@ -78,4 +78,13 @@ export class PageHistoryRepo {
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
withLastUpdatedBy(eb: ExpressionBuilder<DB, 'pageHistory'>) {
|
||||
return jsonObjectFrom(
|
||||
eb
|
||||
.selectFrom('users')
|
||||
.select(['users.id', 'users.name', 'users.avatarUrl'])
|
||||
.whereRef('users.id', '=', 'pageHistory.lastUpdatedById'),
|
||||
).as('withLastUpdatedBy');
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,16 +36,13 @@ export class SpaceMemberRepo {
|
||||
.leftJoin('users', 'users.id', 'spaceMembers.userId')
|
||||
.leftJoin('groups', 'groups.id', 'spaceMembers.groupId')
|
||||
.select([
|
||||
'groups.id as group_id',
|
||||
'groups.name as group_name',
|
||||
'groups.isDefault as group_isDefault',
|
||||
'groups.id as groups_id',
|
||||
'groups.id as groups_id',
|
||||
'groups.id as groups_id',
|
||||
'users.id as user_id',
|
||||
'users.name as user_name',
|
||||
'users.avatarUrl as user_avatarUrl',
|
||||
'users.email as user_email',
|
||||
'groups.id as groupId',
|
||||
'groups.name as groupName',
|
||||
'groups.isDefault as groupIsDefault',
|
||||
'users.id as userId',
|
||||
'users.name as userName',
|
||||
'users.avatarUrl as userAvatarUrl',
|
||||
'users.email as userEmail',
|
||||
'spaceMembers.role',
|
||||
])
|
||||
.where('spaceId', '=', spaceId)
|
||||
@ -59,19 +56,20 @@ export class SpaceMemberRepo {
|
||||
let memberInfo: MemberInfo;
|
||||
|
||||
const members = result.items.map((member) => {
|
||||
if (member.user_id) {
|
||||
if (member.userId) {
|
||||
memberInfo = {
|
||||
id: member.user_id,
|
||||
name: member.user_name,
|
||||
email: member.user_email,
|
||||
avatarUrl: member.user_avatarUrl,
|
||||
id: member.userId,
|
||||
name: member.userName,
|
||||
email: member.userEmail,
|
||||
avatarUrl: member.userAvatarUrl,
|
||||
type: 'user',
|
||||
};
|
||||
} else if (member.group_id) {
|
||||
} else if (member.groupId) {
|
||||
// todo: get group member count
|
||||
memberInfo = {
|
||||
id: member.group_id,
|
||||
name: member.group_name,
|
||||
isDefault: member.group_isDefault,
|
||||
id: member.groupId,
|
||||
name: member.groupName,
|
||||
isDefault: member.groupIsDefault,
|
||||
type: 'group',
|
||||
};
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ import { executeWithPagination } from '@docmost/db/pagination/pagination';
|
||||
export class UserRepo {
|
||||
constructor(@InjectKysely() private readonly db: KyselyDB) {}
|
||||
|
||||
private baseFields: Array<keyof Users> = [
|
||||
public baseFields: Array<keyof Users> = [
|
||||
'id',
|
||||
'email',
|
||||
'name',
|
||||
@ -129,7 +129,11 @@ export class UserRepo {
|
||||
|
||||
if (pagination.query) {
|
||||
query = query.where((eb) =>
|
||||
eb('users.name', 'ilike', `%${pagination.query}%`),
|
||||
eb('users.name', 'ilike', `%${pagination.query}%`).or(
|
||||
'users.email',
|
||||
'ilike',
|
||||
`%${pagination.query}%`,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user