summaryrefslogtreecommitdiff
path: root/lib/owner-companies/service.ts
diff options
context:
space:
mode:
Diffstat (limited to 'lib/owner-companies/service.ts')
-rw-r--r--lib/owner-companies/service.ts77
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