mirror of
https://gitlab.massbug.com/massbug/judge4c.git
synced 2025-07-04 12:52:11 +00:00
feat(workspaces): enhance workspace creation with member role assignment and invite code generation
This commit is contained in:
parent
24dd663611
commit
6b3e851d4a
@ -1,17 +1,36 @@
|
||||
import {
|
||||
DATABASE_ID,
|
||||
IMAGES_BUCKET_ID,
|
||||
MEMBERS_ID,
|
||||
WORKSPACES_ID,
|
||||
} from "@/config";
|
||||
import { Hono } from "hono";
|
||||
import { ID } from "node-appwrite";
|
||||
import { ID, Query } from "node-appwrite";
|
||||
import { generateInviteCode } from "@/lib/utils";
|
||||
import { zValidator } from "@hono/zod-validator";
|
||||
import { createWorkspaceSchema } from "../schemas";
|
||||
import { MemberRole } from "@/features/members/types";
|
||||
import { sessionMiddleware } from "@/lib/session-middleware";
|
||||
import { DATABASE_ID, IMAGES_BUCKET_ID, WORKSPACES_ID } from "@/config";
|
||||
|
||||
const app = new Hono()
|
||||
.get("/", sessionMiddleware, async (c) => {
|
||||
const user = c.get("user");
|
||||
const databases = c.get("databases");
|
||||
|
||||
const members = await databases.listDocuments(DATABASE_ID, MEMBERS_ID, [
|
||||
Query.equal("userId", user.$id),
|
||||
]);
|
||||
|
||||
if (members.total === 0) {
|
||||
return c.json({ data: { documents: [], total: 0 } });
|
||||
}
|
||||
|
||||
const workspaceIds = members.documents.map((member) => member.workspaceId);
|
||||
|
||||
const workspaces = await databases.listDocuments(
|
||||
DATABASE_ID,
|
||||
WORKSPACES_ID
|
||||
WORKSPACES_ID,
|
||||
[Query.orderDesc("$createdAt"), Query.contains("$id", workspaceIds)]
|
||||
);
|
||||
|
||||
return c.json({ data: workspaces });
|
||||
@ -54,9 +73,16 @@ const app = new Hono()
|
||||
name,
|
||||
userId: user.$id,
|
||||
imageUrl: uploadImageUrl,
|
||||
inviteCode: generateInviteCode(6),
|
||||
}
|
||||
);
|
||||
|
||||
await databases.createDocument(DATABASE_ID, MEMBERS_ID, ID.unique(), {
|
||||
userId: user.$id,
|
||||
workspaceId: workspace.$id,
|
||||
role: MemberRole.ADMIN,
|
||||
});
|
||||
|
||||
return c.json({ data: workspace });
|
||||
}
|
||||
);
|
||||
|
Loading…
Reference in New Issue
Block a user