mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-24 07:53:09 +00:00
refactor(db): every entity in the snake_case shape; document-sync entities added; one repository per entity
This commit is contained in:
@@ -1,27 +1,31 @@
|
||||
import { type Opt, type Ref, defineEntity, p, EntityRepository } from '@mikro-orm/core';
|
||||
import { type Opt, type Ref, defineEntity, p } from '@mikro-orm/core';
|
||||
import { CollectionMembersRepository } from '../repositories/CollectionMembers.repository';
|
||||
import { DbTimestampType } from '../types';
|
||||
import { Collections } from './Collections.entity';
|
||||
import { Users } from './Users.entity';
|
||||
|
||||
export class CollectionMembers {
|
||||
id?: number | null;
|
||||
id!: number & Opt;
|
||||
collection!: Ref<Collections>;
|
||||
collection_id!: number;
|
||||
user!: Ref<Users>;
|
||||
user_id!: number;
|
||||
status: string & Opt = 'pending';
|
||||
role: string & Opt = 'editor';
|
||||
createdAt?: Date | null;
|
||||
created_at?: string | null;
|
||||
}
|
||||
|
||||
export class CollectionMembersRepository extends EntityRepository<CollectionMembers> {}
|
||||
|
||||
export const CollectionMembersSchema = defineEntity({
|
||||
class: CollectionMembers,
|
||||
repository: () => CollectionMembersRepository,
|
||||
properties: {
|
||||
id: p.integer().primary().autoincrement(),
|
||||
collection: () => p.manyToOne(Collections).ref().deleteRule('cascade'),
|
||||
user: () => p.manyToOne(Users).ref().deleteRule('cascade').index('idx_collection_members_user'),
|
||||
status: p.text(),
|
||||
role: p.text(),
|
||||
createdAt: p.datetime().nullable().onCreate(() => new Date()),
|
||||
id: p.integer().primary(),
|
||||
collection: () => p.manyToOne(Collections).ref().deleteRule('cascade').hidden(),
|
||||
collection_id: p.integer().persist(false),
|
||||
user: () => p.manyToOne(Users).ref().deleteRule('cascade').hidden().index('idx_collection_members_user'),
|
||||
user_id: p.integer().persist(false).index('idx_collection_members_user'),
|
||||
status: p.text().default('pending'),
|
||||
role: p.text().default('editor'),
|
||||
created_at: p.type(DbTimestampType).nullable().defaultRaw(`CURRENT_TIMESTAMP`),
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user