feat(db): primary-relation entities proven (BudgetCategoryOrder, VacayUserSettings)

This commit is contained in:
jubnl
2026-09-22 08:35:46 +02:00
parent 6d6b6932f4
commit 4a67be3f87
5 changed files with 202 additions and 18 deletions
@@ -1,21 +1,22 @@
import { type Opt, PrimaryKeyProp, type Ref, defineEntity, p, EntityRepository } from '@mikro-orm/core';
import { type Opt, PrimaryKeyProp, type Ref, defineEntity, p } from '@mikro-orm/core';
import { BudgetCategoryOrderRepository } from '../repositories/BudgetCategoryOrder.repository';
import { Trips } from './Trips.entity';
export class BudgetCategoryOrder {
[PrimaryKeyProp]?: ['trip', 'category'];
trip!: Ref<Trips>;
trip_id!: number;
category!: string;
sortOrder: number & Opt = 0;
sort_order: number & Opt = 0;
}
export class BudgetCategoryOrderRepository extends EntityRepository<BudgetCategoryOrder> {}
export const BudgetCategoryOrderSchema = defineEntity({
class: BudgetCategoryOrder,
repository: () => BudgetCategoryOrderRepository,
properties: {
trip: () => p.manyToOne(Trips).primary().ref().deleteRule('cascade'),
trip: () => p.manyToOne(Trips).primary().ref().hidden().deleteRule('cascade'),
trip_id: p.integer().persist(false),
category: p.text().primary(),
sortOrder: p.integer(),
sort_order: p.integer().default(0),
},
});
@@ -1,25 +1,26 @@
import { type Opt, PrimaryKeyProp, type Ref, defineEntity, p, EntityRepository } from '@mikro-orm/core';
import { type Opt, PrimaryKeyProp, type Ref, defineEntity, p } from '@mikro-orm/core';
import { VacayUserSettingsRepository } from '../repositories/VacayUserSettings.repository';
import { Users } from './Users.entity';
export class VacayUserSettings {
[PrimaryKeyProp]?: 'user';
user?: Ref<Users> | null;
yearType: string & Opt = 'calendar';
yearStartMonth: number & Opt = 1;
yearStartDay: number & Opt = 1;
hireDate?: string | null;
user_id!: number;
year_type: string & Opt = 'calendar';
year_start_month: number & Opt = 1;
year_start_day: number & Opt = 1;
hire_date?: string | null;
}
export class VacayUserSettingsRepository extends EntityRepository<VacayUserSettings> {}
export const VacayUserSettingsSchema = defineEntity({
class: VacayUserSettings,
repository: () => VacayUserSettingsRepository,
properties: {
user: () => p.oneToOne(Users).primary().ref().nullable(),
yearType: p.text(),
yearStartMonth: p.integer(),
yearStartDay: p.integer(),
hireDate: p.text().nullable(),
user: () => p.oneToOne(Users).primary().ref().hidden().nullable(),
user_id: p.integer().persist(false),
year_type: p.text().default('calendar'),
year_start_month: p.integer().default(1),
year_start_day: p.integer().default(1),
hire_date: p.text().nullable(),
},
});
@@ -0,0 +1,4 @@
import type { BudgetCategoryOrder } from '../entities/BudgetCategoryOrder.entity';
import { EntityRepository } from '@mikro-orm/sql';
export class BudgetCategoryOrderRepository extends EntityRepository<BudgetCategoryOrder> {}
@@ -0,0 +1,4 @@
import type { VacayUserSettings } from '../entities/VacayUserSettings.entity';
import { EntityRepository } from '@mikro-orm/sql';
export class VacayUserSettingsRepository extends EntityRepository<VacayUserSettings> {}