33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { storage } from '../../lib/storage.js';
|
|
import { logger } from '../../lib/logger.js';
|
|
import { Tenant, TenantStatus } from '../../core/types.js';
|
|
|
|
const TENANTS_FILE = 'tenants.json';
|
|
|
|
export class TenantsService {
|
|
async listTenants(): Promise<Tenant[]> {
|
|
return storage.readCollection<Tenant>(TENANTS_FILE);
|
|
}
|
|
|
|
async getTenant(id: string): Promise<Tenant | undefined> {
|
|
const tenants = await storage.readCollection<Tenant>(TENANTS_FILE);
|
|
return tenants.find((tenant) => tenant.id === id);
|
|
}
|
|
|
|
async createTenant(input: { name: string; plan?: string; status?: TenantStatus }): Promise<Tenant> {
|
|
const tenants = await storage.readCollection<Tenant>(TENANTS_FILE);
|
|
const now = new Date().toISOString();
|
|
const tenant: Tenant = {
|
|
id: crypto.randomUUID(),
|
|
name: input.name,
|
|
plan: input.plan ?? 'standard',
|
|
status: input.status ?? 'active',
|
|
createdAt: now,
|
|
updatedAt: now,
|
|
};
|
|
tenants.push(tenant);
|
|
await storage.writeCollection(TENANTS_FILE, tenants);
|
|
logger.info('Tenant created', { tenantId: tenant.id });
|
|
return tenant;
|
|
}
|
|
}
|