diff options
Diffstat (limited to 'lib/owner-companies/service.ts')
| -rw-r--r-- | lib/owner-companies/service.ts | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/lib/owner-companies/service.ts b/lib/owner-companies/service.ts new file mode 100644 index 00000000..3692abd4 --- /dev/null +++ b/lib/owner-companies/service.ts @@ -0,0 +1,77 @@ +// lib/owner-companies/service.ts +"use server"; + +import db from "@/db/db"; +import { ownerCompanies, users } from "@/db/schema"; +import { revalidatePath } from "next/cache"; +import { eq } from "drizzle-orm"; + +export async function createOwnerCompany(data: { name: string }) { + const [company] = await db + .insert(ownerCompanies) + .values({ + name: data.name, + }) + .returning(); + + revalidatePath("/owner-companies"); + return { success: true, data: company }; +} + +export async function updateOwnerCompany( + id: number, + data: { name: string } +) { + const [company] = await db + .update(ownerCompanies) + .set({ + name: data.name, + }) + .where(eq(ownerCompanies.id, id)) + .returning(); + + revalidatePath("/owner-companies"); + revalidatePath(`/owner-companies/${id}`); + return { success: true, data: company }; +} + +export async function createOwnerCompanyUser( + companyId: number, + data: { + name: string; + email: string; + phone?: string; + employeeNumber?: string; + } +) { + // 이메일 중복 체크 + const existing = await db + .select() + .from(users) + .where(eq(users.email, data.email)) + .limit(1); + + if (existing.length > 0) { + return { success: false, error: "이미 사용 중인 이메일입니다." }; + } + + const [user] = await db + .insert(users) + .values({ + ...data, + ownerCompanyId: companyId, + domain: "owner", // 발주처 도메인 + isActive: true, + }) + .returning(); + + revalidatePath(`/owner-companies/${companyId}/users`); + return { success: true, data: user }; +} + +export async function getOwnerCompanyUsers(companyId: number) { + return await db + .select() + .from(users) + .where(eq(users.ownerCompanyId, companyId)); +}
\ No newline at end of file |
