From 0c74c0a0a9df6ccf29c89027eb3eb577bdedbf7b Mon Sep 17 00:00:00 2001 From: SrJuggernaut Date: Wed, 3 Jan 2024 17:31:22 -0600 Subject: [PATCH] feat: move appwrite to entgamers-database package --- .env.example | 8 ++----- bun.lockb | Bin 259746 -> 263050 bytes package.json | 1 + src/app/equipo/unirse/ApplyForm.tsx | 5 ++-- src/lib/appwrite.ts | 9 ------- src/lib/nodeAppwrite.ts | 12 ---------- src/services/backend/database.ts | 18 -------------- src/services/backend/roles.ts | 35 ---------------------------- src/services/backend/teamApply.ts | 32 ------------------------- src/services/frontend/database.ts | 2 -- src/services/frontend/teamApply.ts | 25 -------------------- 11 files changed, 5 insertions(+), 142 deletions(-) delete mode 100644 src/lib/appwrite.ts delete mode 100644 src/lib/nodeAppwrite.ts delete mode 100644 src/services/backend/database.ts delete mode 100644 src/services/backend/roles.ts delete mode 100644 src/services/backend/teamApply.ts delete mode 100644 src/services/frontend/database.ts delete mode 100644 src/services/frontend/teamApply.ts diff --git a/.env.example b/.env.example index f306c51..6e0fd0d 100644 --- a/.env.example +++ b/.env.example @@ -21,10 +21,6 @@ NEXT_PUBLIC_APPWRITE_ENDPOINT="" NEXT_PUBLIC_APPWRITE_PROJECT_ID="" APPWRITE_API_KEY="" -# Appwrite optional variables +# Prisma required variables -NEXT_PUBLIC_APPWRITE_DATABASE_ID="" -NEXT_PUBLIC_APPWRITE_COLLECTION_ID="" -NEXT_PUBLIC_APPWRITE_ADMIN_TEAM_ID="" -NEXT_PUBLIC_APPWRITE_ADMIN_MODERATOR_TEAM_ID="" -NEXT_PUBLIC_APPWRITE_ADMIN_COLLABORATOR_TEAM_ID="" \ No newline at end of file +DATABASE_URL="" \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 8b9f9815de423c59d8a7856f4c21fe184bda7721..0a7a2b099cde522720dc1c4b97fa0a7b698e08c5 100755 GIT binary patch delta 44541 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 z { message: '', role: 'administrator' }, - onSubmit: async (values) => { + onSubmit: async (_values) => { try { - await createTeamApply(values) + // await createTeamApply(values) } catch (error) { if (error instanceof AppwriteException) { setAlert({ diff --git a/src/lib/appwrite.ts b/src/lib/appwrite.ts deleted file mode 100644 index 8e7be23..0000000 --- a/src/lib/appwrite.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Client, Databases } from 'appwrite' - -export const appwriteClient = new Client() - .setEndpoint(process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT ?? '') - .setProject(process.env.NEXT_PUBLIC_APPWRITE_PROJECT ?? '') - -export const databases = new Databases(appwriteClient) - -export { ID } from 'appwrite' diff --git a/src/lib/nodeAppwrite.ts b/src/lib/nodeAppwrite.ts deleted file mode 100644 index 2d09cf0..0000000 --- a/src/lib/nodeAppwrite.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Client, Databases, Teams } from 'node-appwrite' - -export const clientNodeAppwrite = new Client() - .setEndpoint(process.env.NEXT_PUBLIC_APPWRITE_ENDPOINT ?? '') - .setProject(process.env.NEXT_PUBLIC_APPWRITE_PROJECT_ID ?? '') - .setKey(process.env.APPWRITE_API_KEY ?? '') - -export const databases = new Databases(clientNodeAppwrite) - -export const teams = new Teams(clientNodeAppwrite) - -export { Permission, Role } from 'node-appwrite' diff --git a/src/services/backend/database.ts b/src/services/backend/database.ts deleted file mode 100644 index 63c627c..0000000 --- a/src/services/backend/database.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { databases } from '@/lib/nodeAppwrite' - -export const DATABASE_NAME = 'entgamers-website' -export const DATABASE_ID = process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID ?? DATABASE_NAME - -export const ensureDatabase = (() => { - let databaseEnsured = false - return async () => { - if (databaseEnsured) return - try { - await databases.get(DATABASE_ID) - } catch (error) { - await databases.create(DATABASE_ID, DATABASE_NAME) - } finally { - databaseEnsured = true - } - } -})() diff --git a/src/services/backend/roles.ts b/src/services/backend/roles.ts deleted file mode 100644 index 00f31ad..0000000 --- a/src/services/backend/roles.ts +++ /dev/null @@ -1,35 +0,0 @@ -import { teams } from '@/lib/nodeAppwrite' -import { type UserPreferences } from '@/types/User' - -export const ADMIN_TEAM_NAME = 'admin' -export const ADMIN_TEAM_ID = process.env.NEXT_PUBLIC_APPWRITE_ADMIN_TEAM_ID ?? ADMIN_TEAM_NAME -export const MODERATOR_TEAM_NAME = 'moderator' -export const MODERATOR_TEAM_ID = process.env.NEXT_PUBLIC_APPWRITE_MODERATOR_TEAM_ID ?? MODERATOR_TEAM_NAME -export const COLLABORATOR_TEAM_NAME = 'collaborator' -export const COLLABORATOR_TEAM_ID = process.env.NEXT_PUBLIC_APPWRITE_COLLABORATOR_TEAM_ID ?? COLLABORATOR_TEAM_NAME - -const ensureRoleExists = (roleId: string, roleName: string): (() => Promise) => { - let roleExists = false - return async (): Promise => { - if (roleExists) return - try { - await teams.get(roleId) - roleExists = true - } catch (error) { - await teams.create(roleId, roleName) - roleExists = true - } - } -} - -export const ensureRoles = async (): Promise => { - const adminRole = ensureRoleExists(ADMIN_TEAM_ID, ADMIN_TEAM_NAME) - const moderatorRole = ensureRoleExists(MODERATOR_TEAM_ID, MODERATOR_TEAM_NAME) - const collaboratorRole = ensureRoleExists(COLLABORATOR_TEAM_ID, COLLABORATOR_TEAM_NAME) - - await Promise.all([ - adminRole(), - moderatorRole(), - collaboratorRole() - ]) -} diff --git a/src/services/backend/teamApply.ts b/src/services/backend/teamApply.ts deleted file mode 100644 index bedfd68..0000000 --- a/src/services/backend/teamApply.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Permission, Role, databases } from '@/lib/nodeAppwrite' -import { DATABASE_ID, ensureDatabase } from '@/services/backend/database' -import { ADMIN_TEAM_ID } from './roles' - -export const TEAM_APPLY_COLLECTION_NAME = 'team-apply' -export const TEAM_APPLY_COLLECTION_ID = process.env.NEXT_PUBLIC_APPWRITE_TEAM_APPLY_COLLECTION_ID ?? TEAM_APPLY_COLLECTION_NAME - -export const ensureTeamApplyCollection = (() => { - let collectionEnsured = false - return async () => { - if (collectionEnsured) return - await ensureDatabase() - try { - await databases.getCollection(DATABASE_ID, TEAM_APPLY_COLLECTION_ID) - } catch (error) { - const permissions = [ - Permission.create(Role.any()), - Permission.read(Role.team(ADMIN_TEAM_ID)), - Permission.update(Role.team(ADMIN_TEAM_ID)), - Permission.delete(Role.team(ADMIN_TEAM_ID)) - ] - await databases.createCollection(DATABASE_ID, TEAM_APPLY_COLLECTION_ID, TEAM_APPLY_COLLECTION_NAME, permissions, false, true) - await databases.createStringAttribute(DATABASE_ID, TEAM_APPLY_COLLECTION_ID, 'name', 128, true) - await databases.createEmailAttribute(DATABASE_ID, TEAM_APPLY_COLLECTION_ID, 'email', true) - await databases.createStringAttribute(DATABASE_ID, TEAM_APPLY_COLLECTION_ID, 'discordName', 128, true) - await databases.createStringAttribute(DATABASE_ID, TEAM_APPLY_COLLECTION_ID, 'role', 24, true) - await databases.createStringAttribute(DATABASE_ID, TEAM_APPLY_COLLECTION_ID, 'message', 4096, true) - } finally { - collectionEnsured = true - } - } -})() diff --git a/src/services/frontend/database.ts b/src/services/frontend/database.ts deleted file mode 100644 index 2257640..0000000 --- a/src/services/frontend/database.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const DATABASE_NAME = 'entgamers-website' -export const DATABASE_ID = process.env.NEXT_PUBLIC_APPWRITE_DATABASE_ID ?? DATABASE_NAME diff --git a/src/services/frontend/teamApply.ts b/src/services/frontend/teamApply.ts deleted file mode 100644 index ded76a4..0000000 --- a/src/services/frontend/teamApply.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { ID, databases } from '@/lib/appwrite' -import { DATABASE_ID } from '@/services/frontend/database' -import { type TeamApplyData, type TeamApplyDocument, type TeamApplyList } from '@/types/teamApply' - -export const TEAM_APPLY_COLLECTION_NAME = 'team-apply' -export const TEAM_APPLY_COLLECTION_ID = process.env.NEXT_PUBLIC_APPWRITE_TEAM_APPLY_COLLECTION_ID ?? TEAM_APPLY_COLLECTION_NAME - -export const createTeamApply = async (data: TeamApplyData): Promise => { - const createdTeamApply = await databases.createDocument(DATABASE_ID, TEAM_APPLY_COLLECTION_ID, ID.unique(), data) - return createdTeamApply -} - -export const getTeamApply = async (teamApplyId: string): Promise => { - const teamApply = await databases.getDocument(DATABASE_ID, TEAM_APPLY_COLLECTION_ID, teamApplyId) - return teamApply -} - -export const listTeamApply = async (): Promise => { - const teamApplyList = await databases.listDocuments(DATABASE_ID, TEAM_APPLY_COLLECTION_ID) - return teamApplyList -} - -export const deleteTeamApply = async (teamApplyId: string): Promise => { - await databases.deleteDocument(DATABASE_ID, TEAM_APPLY_COLLECTION_ID, teamApplyId) -}