import { OrganizationSchema } from '#database/schema' import { column, hasMany } from '@adonisjs/lucid/orm' import type { HasMany } from '@adonisjs/lucid/types/relations' import User from '#models/user' import BankConnection from '#models/bank_connection' import type { BrandSettings } from '#services/brand' import type { InvoiceSettings } from '#services/invoice_settings' export default class Organization extends OrganizationSchema { /** * Settings de marque blanche (plan Business) — JSONB, null = palette * Rubis par défaut. Cf. `#services/brand` pour la résolution et la * validation. Cette déclaration manuelle existe en attendant que * `schema.ts` soit régénéré par `node ace migration:run` (cf. migration * `1778400000000_add_brand_settings_to_organizations_table.ts`). */ @column() declare brandSettings: BrandSettings | null /** * Settings de facturation native — JSONB, null = defaults applicatifs. * Cf. `#services/invoice_settings` pour la résolution et la validation. * Cette déclaration manuelle existe en attendant que `schema.ts` soit * régénéré par `node ace migration:run` (cf. migration * `1778800000000_add_invoice_settings_to_organizations_table.ts`). */ @column() declare invoiceSettings: InvoiceSettings | null @hasMany(() => User) declare users: HasMany /** * V1 = une seule connection active par org, mais on garde hasMany pour * l'historique (connections révoquées passent en state='revoked'). Les * services filtrent sur state='active' quand ils ont besoin de "la" * connection courante. */ @hasMany(() => BankConnection) declare bankConnections: HasMany }