core/baas-control-plane/src/modules/tenants/tenants.service.ts
2025-12-27 13:49:00 -03:00

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;
}
}