mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-23 15:36:33 +00:00
310a3b0ad3
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.
33 lines
1.3 KiB
TypeScript
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`),
|
|
},
|
|
});
|