Files
TREK/server/src/db/entities/CollectionMembers.entity.ts
T
jubnl 310a3b0ad3 fix(db): generator captures inline UNIQUE constraints
SqliteSchemaHelper.getIndexes() drops every unnamed sqlite_autoindex_
entry before entity-generator ever sees it, so a table-level
UNIQUE(...) constraint with no separate named CREATE UNIQUE INDEX
(settings' UNIQUE(user_id, key) among ~40 others) never reached the
generated entity's uniques: metadata. Adds a general
RULE9_addImplicitUniqueConstraints (skips a column set identical to
the table's own primary key — AppSettings.key/Addons.id noise) fed by
a PRAGMA index_list/index_info scan, and regenerates every entity.
2026-09-22 14:13:09 +02:00

33 lines
1.3 KiB
TypeScript

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 & Opt;
collection!: Ref<Collections>;
collection_id!: number;
user!: Ref<Users>;
user_id!: number;
status: string & Opt = 'pending';
role: string & Opt = 'editor';
created_at?: string | null;
}
export const CollectionMembersSchema = defineEntity({
class: CollectionMembers,
repository: () => CollectionMembersRepository,
uniques: [{ properties: ['collection_id', 'user_id'] }],
properties: {
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`),
},
});