UNPKG

appwrite-server-wrapper

Version:

Wrapper library to handle Appwrite methods including server handling using SSR with NextJS v15 (useActionState, useAction,...)

198 lines (197 loc) 5.79 kB
"use server"; import { handleApwError } from "../exceptions"; import { createAdminClient } from "../appwriteClients"; /** * Creates a new team with the specified ID, name, and optional roles. */ const createTeam = async ({ teamId, name, roles = [], }) => { try { const { teams } = await createAdminClient(); const data = await teams.create(teamId, name, roles); return { data, error: null }; } catch (error) { return { data: null, error: await handleApwError({ error }), }; } }; /** * Creates a new membership for a team, optionally inviting a user via email or phone. */ const createTeamMembership = async ({ teamId, roles, email, userId, phone, url, name, }) => { try { const { teams } = await createAdminClient(); const data = await teams.createMembership(teamId, roles, email, userId, phone, url, name); return { data, error: null }; } catch (error) { return { data: null, error: await handleApwError({ error }), }; } }; /** * Deletes a team using its unique ID. */ const deleteTeam = async ({ teamId, }) => { try { const { teams } = await createAdminClient(); await teams.delete(teamId); return { data: null, error: null }; } catch (error) { return { data: null, error: await handleApwError({ error }), }; } }; /** * Deletes a team membership by its unique ID. */ const deleteTeamMembership = async ({ teamId, membershipId, }) => { try { const { teams } = await createAdminClient(); await teams.deleteMembership(teamId, membershipId); return { data: null, error: null }; } catch (error) { return { data: null, error: await handleApwError({ error }), }; } }; /** * Retrieves details of a specific team by its unique ID. */ const getTeam = async ({ teamId, }) => { try { const { teams } = await createAdminClient(); const data = await teams.get(teamId); return { data, error: null }; } catch (error) { return { data: null, error: await handleApwError({ error }), }; } }; /** * Retrieves details of a specific team membership by its unique ID. */ const getTeamMembership = async ({ teamId, membershipId, }) => { try { const { teams } = await createAdminClient(); const data = await teams.getMembership(teamId, membershipId); return { data, error: null }; } catch (error) { return { data: null, error: await handleApwError({ error }), }; } }; /** * Retrieves the shared preferences for a specific team by its unique ID. */ const getTeamPreferences = async ({ teamId, }) => { try { const { teams } = await createAdminClient(); const data = await teams.getPrefs(teamId); return { data, error: null }; } catch (error) { return { data: null, error: await handleApwError({ error }), }; } }; /** * Lists all memberships for a specific team, optionally filtered by queries or search terms. */ const listTeamMemberships = async ({ teamId, queries = [], search, }) => { try { const { teams } = await createAdminClient(); const data = await teams.listMemberships(teamId, queries, search); return { data, error: null }; } catch (error) { return { data: null, error: await handleApwError({ error }), }; } }; const listTeams = async ({ queries = [], search, }) => { try { const { teams } = await createAdminClient(); const data = await teams.list(queries, search); return { data, error: null }; } catch (error) { return { data: null, error: await handleApwError({ error }), }; } }; const updateTeamMembership = async ({ teamId, membershipId, roles, }) => { try { const { teams } = await createAdminClient(); const data = await teams.updateMembership(teamId, membershipId, roles); return { data, error: null }; } catch (error) { return { data: null, error: await handleApwError({ error }), }; } }; const updateTeamMembershipStatus = async ({ teamId, membershipId, userId, secret, }) => { try { const { teams } = await createAdminClient(); const data = await teams.updateMembershipStatus(teamId, membershipId, userId, secret); return { data, error: null }; } catch (error) { return { data: null, error: await handleApwError({ error }), }; } }; const updateTeamName = async ({ teamId, name, }) => { try { const { teams } = await createAdminClient(); const data = await teams.updateName(teamId, name); return { data, error: null }; } catch (error) { return { data: null, error: await handleApwError({ error }), }; } }; const updateTeamPreferences = async ({ teamId, prefs, }) => { try { const { teams } = await createAdminClient(); const data = await teams.updatePrefs(teamId, prefs); return { data, error: null }; } catch (error) { return { data: null, error: await handleApwError({ error }), }; } }; export { createTeam, createTeamMembership, deleteTeam, deleteTeamMembership, getTeam, getTeamMembership, getTeamPreferences, listTeamMemberships, listTeams, updateTeamMembership, updateTeamMembershipStatus, updateTeamName, updateTeamPreferences, };