import { OpenAPIHono } from '@hono/zod-openapi';
import { createCrudRoutes } from '@d8d/shared-crud';
import { TenantEntityMt } from '../entities/tenant.entity';
import { CreateTenantDto, UpdateTenantDto, TenantSchema } from '../schemas/tenant.schema';
import { tenantAuthMiddleware } from '../middleware';

// 导出认证路由
import { authRoutes } from './auth.routes';
// 统一的租户管理路由（使用固定的超级管理员账号进行管理）
const tenantCrudRoutes = createCrudRoutes({
  entity: TenantEntityMt,
  createSchema: CreateTenantDto,
  updateSchema: UpdateTenantDto,
  getSchema: TenantSchema,
  listSchema: TenantSchema,
  searchFields: ['name', 'code', 'contactName', 'phone'],
  middleware: [tenantAuthMiddleware],
  userTracking: {
    createdByField: 'createdBy',
    updatedByField: 'updatedBy'
  },
  dataPermission: {
    enabled: false, // 租户管理不使用数据权限控制，由固定的超级管理员账号管理
    userIdField: 'id'
  }
});

// 创建路由实例并聚合所有子路由
const tenantRoutes = new OpenAPIHono()
.route('/', authRoutes)
.route('/', tenantCrudRoutes)

export { tenantRoutes }