- docs/00-15: دراسة، بنية، محرك تعرفة، تسعير، نموذج استئجار، تكاملات، بيانات، realtime، خطة، devops، لاندنج، مخاطر، اصطلاحات سيرفر، تدفق نشر - backend/: NestJS 11 على Docker (health + tenants + عزل tenant_id + بادئة tripz_ + Redis DB 3) - apps/rider, apps/driver, dashboards/admin-web, dashboards/superadmin-web (هياكل) - sync-to-server.sh + .gitignore Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
51 lines
1.1 KiB
TypeScript
51 lines
1.1 KiB
TypeScript
import {
|
|
Column,
|
|
CreateDateColumn,
|
|
Entity,
|
|
PrimaryGeneratedColumn,
|
|
UpdateDateColumn,
|
|
} from 'typeorm';
|
|
|
|
export type TenantMode = 'shared' | 'sovereign';
|
|
export type TenantPlan = 'launch' | 'brand' | 'fleet' | 'sovereign';
|
|
|
|
/**
|
|
* المستأجر = مكتب تكسي / أسطول / مشغّل. الجدول الفعلي: tripz_tenants
|
|
* (البادئة من entityPrefix). راجع docs/06 و docs/08.
|
|
*/
|
|
@Entity('tenants')
|
|
export class Tenant {
|
|
@PrimaryGeneratedColumn('uuid')
|
|
id: string;
|
|
|
|
@Column()
|
|
name: string;
|
|
|
|
@Column({ unique: true })
|
|
slug: string;
|
|
|
|
@Column({ name: 'country_pack', default: 'jo' })
|
|
countryPack: string;
|
|
|
|
@Column({ type: 'varchar', default: 'launch' })
|
|
plan: TenantPlan;
|
|
|
|
@Column({ type: 'varchar', default: 'shared' })
|
|
mode: TenantMode;
|
|
|
|
@Column({ type: 'jsonb', default: {} })
|
|
branding: Record<string, any>;
|
|
|
|
@Column({ type: 'jsonb', default: {} })
|
|
features: Record<string, any>;
|
|
|
|
@Column({ default: 'active' })
|
|
status: string;
|
|
|
|
@CreateDateColumn({ name: 'created_at' })
|
|
createdAt: Date;
|
|
|
|
@UpdateDateColumn({ name: 'updated_at' })
|
|
updatedAt: Date;
|
|
}
|