import { Tenant } from "@repo/drizzle/src/schema/tenant";
import { selectUserSchema, insertUserSchema } from "./users";
import { createInsertSchema, createSelectSchema } from "drizzle-zod";
import { initContract } from "@ts-rest/core";
import { z } from "zod";
export const insertTenantSchema = createInsertSchema(Tenant).required({ name: true ,subdomain: true}).omit({ id: true, createdAt: true, updatedAt: true })
export const selectTenantSchema = createSelectSchema(Tenant)
const c = initContract();
export const tenantsContract = c.router({
create: {
method: 'POST',
path: '/tenants',
responses: {
201: z.object({
tenant: selectTenantSchema,
adminUser: selectUserSchema.omit({ password: true })
})
},
body: z.object({
tenant: insertTenantSchema,
adminUser: insertUserSchema
}),
summary: 'Create a new tenant with an admin user'
}
});
import { Tenant } from "@repo/drizzle/src/schema/tenant";
import { selectUserSchema, insertUserSchema } from "./users";
import { createInsertSchema, createSelectSchema } from "drizzle-zod";
import { initContract } from "@ts-rest/core";
import { z } from "zod";
export const insertTenantSchema = createInsertSchema(Tenant).required({ name: true ,subdomain: true}).omit({ id: true, createdAt: true, updatedAt: true })
export const selectTenantSchema = createSelectSchema(Tenant)
const c = initContract();
export const tenantsContract = c.router({
create: {
method: 'POST',
path: '/tenants',
responses: {
201: z.object({
tenant: selectTenantSchema,
adminUser: selectUserSchema.omit({ password: true })
})
},
body: z.object({
tenant: insertTenantSchema,
adminUser: insertUserSchema
}),
summary: 'Create a new tenant with an admin user'
}
});