feat: use api key for init tickets

This commit is contained in:
Torsten Dittmann
2024-02-20 14:47:09 +01:00
parent ebc5a9396e
commit 0a420c738e
7 changed files with 45 additions and 28 deletions

View File

@@ -1,6 +1,10 @@
PUBLIC_APPWRITE_PROJECT_INIT_ID=
PUBLIC_APPWRITE_PROJECT_ID=
PUBLIC_APPWRITE_DB_MAIN_ID=
PUBLIC_APPWRITE_COL_THREADS_ID=
PUBLIC_APPWRITE_COL_MESSAGES_ID= PUBLIC_APPWRITE_COL_MESSAGES_ID=
PUBLIC_APPWRITE_FN_TLDR_ID= PUBLIC_APPWRITE_COL_THREADS_ID=
PUBLIC_APPWRITE_DB_MAIN_ID=
PUBLIC_APPWRITE_FN_TLDR_ID=
PUBLIC_APPWRITE_ENDPOINT=
PUBLIC_APPWRITE_PROJECT_ID=
PUBLIC_APPWRITE_PROJECT_INIT_ID=
APPWRITE_DB_INIT_ID=
APPWRITE_COL_INIT_ID=
APPWRITE_API_KEY_INIT=

View File

@@ -0,0 +1,13 @@
import { APPWRITE_API_KEY_INIT } from '$env/static/private';
import { PUBLIC_APPWRITE_PROJECT_INIT_ID } from '$env/static/public';
import { Client, Databases } from '@appwrite.io/console';
const clientServer = new Client();
clientServer
.setEndpoint('https://cloud.appwrite.io/v1')
.setProject(PUBLIC_APPWRITE_PROJECT_INIT_ID)
.setKey(APPWRITE_API_KEY_INIT);
export const appwriteInitServer = {
databases: new Databases(clientServer)
};

View File

@@ -1,12 +1,12 @@
import { PUBLIC_APPWRITE_PROJECT_INIT_ID } from '$env/static/public'; import { PUBLIC_APPWRITE_PROJECT_INIT_ID } from '$env/static/public';
import { Client, Account, Databases } from '@appwrite.io/console'; import { Client, Account } from '@appwrite.io/console';
const client = new Client(); const client = new Client();
client
client.setEndpoint('https://cloud.appwrite.io/v1').setProject(PUBLIC_APPWRITE_PROJECT_INIT_ID); .setEndpoint('https://cloud.appwrite.io/v1')
.setProject(PUBLIC_APPWRITE_PROJECT_INIT_ID);
export const appwriteInit = { export const appwriteInit = {
client, client,
account: new Account(client), account: new Account(client)
database: new Databases(client)
}; };

View File

@@ -1,10 +1,10 @@
import { APPWRITE_DB_INIT_ID, APPWRITE_COL_INIT_ID } from '$env/static/private'; import { APPWRITE_DB_INIT_ID, APPWRITE_COL_INIT_ID } from '$env/static/private';
import { appwriteInit } from '$lib/appwrite/init'; import { appwriteInitServer } from '$lib/appwrite/init.server';
import parse from 'node-html-parser'; import parse from 'node-html-parser';
import type { TicketData, ContributionsMatrix } from '../../constants'; import type { TicketData, ContributionsMatrix } from '../../constants';
export async function getContributions(id: string): Promise<ContributionsMatrix | null> { export async function getContributions(id: string): Promise<ContributionsMatrix | null> {
const { gh_user, contributions } = (await appwriteInit.database.getDocument( const { gh_user, contributions } = (await appwriteInitServer.databases.getDocument(
APPWRITE_DB_INIT_ID, APPWRITE_DB_INIT_ID,
APPWRITE_COL_INIT_ID, APPWRITE_COL_INIT_ID,
id id
@@ -48,7 +48,7 @@ export async function getContributions(id: string): Promise<ContributionsMatrix
} }
// Update the document with the new contributions // Update the document with the new contributions
await appwriteInit.database.updateDocument(APPWRITE_DB_INIT_ID, APPWRITE_COL_INIT_ID, id, { await appwriteInitServer.databases.updateDocument(APPWRITE_DB_INIT_ID, APPWRITE_COL_INIT_ID, id, {
contributions: matrix.flat() contributions: matrix.flat()
}); });

View File

@@ -1,12 +1,12 @@
import { APPWRITE_COL_INIT_ID, APPWRITE_DB_INIT_ID } from '$env/static/private'; import { APPWRITE_COL_INIT_ID, APPWRITE_DB_INIT_ID } from '$env/static/private';
import { appwriteInit } from '$lib/appwrite/init.js'; import { appwriteInitServer } from '$lib/appwrite/init.server';
import { getTicketVariant } from '$routes/init/helpers.js'; import { getTicketVariant } from '$routes/init/helpers';
import sharp from 'sharp'; import sharp from 'sharp';
import type { TicketData } from '../../constants.js'; import type { TicketData } from '../../constants.js';
import { getTicketSvg } from './getTicketSvg.server.js'; import { getTicketSvg } from './getTicketSvg.server.js';
export async function GET({ params, fetch }) { export async function GET({ params, fetch }) {
const ticket = (await appwriteInit.database.getDocument( const ticket = (await appwriteInitServer.databases.getDocument(
APPWRITE_DB_INIT_ID, APPWRITE_DB_INIT_ID,
APPWRITE_COL_INIT_ID, APPWRITE_COL_INIT_ID,
params.id params.id

View File

@@ -1,5 +1,5 @@
import { APPWRITE_COL_INIT_ID, APPWRITE_DB_INIT_ID } from '$env/static/private'; import { APPWRITE_COL_INIT_ID, APPWRITE_DB_INIT_ID } from '$env/static/private';
import { appwriteInit } from '$lib/appwrite/init.js'; import { appwriteInitServer } from '$lib/appwrite/init.server';
import { isProUser } from '$lib/utils/console.js'; import { isProUser } from '$lib/utils/console.js';
import type { User } from '$routes/init/helpers.js'; import type { User } from '$routes/init/helpers.js';
import { ID, Query } from '@appwrite.io/console'; import { ID, Query } from '@appwrite.io/console';
@@ -33,12 +33,12 @@ async function getTicketDocByUser(user: User) {
const [gh, aw, isPro] = await Promise.all([ const [gh, aw, isPro] = await Promise.all([
user.github?.login user.github?.login
? appwriteInit.database.listDocuments(APPWRITE_DB_INIT_ID, APPWRITE_COL_INIT_ID, [ ? appwriteInitServer.databases.listDocuments(APPWRITE_DB_INIT_ID, APPWRITE_COL_INIT_ID, [
Query.equal('gh_user', user.github.login) Query.equal('gh_user', user.github.login)
]) ])
: null, : null,
user.appwrite?.$id user.appwrite?.$id
? appwriteInit.database.listDocuments(APPWRITE_DB_INIT_ID, APPWRITE_COL_INIT_ID, [ ? appwriteInitServer.databases.listDocuments(APPWRITE_DB_INIT_ID, APPWRITE_COL_INIT_ID, [
Query.equal('aw_email', user.appwrite.email) Query.equal('aw_email', user.appwrite.email)
]) ])
: null, : null,
@@ -53,7 +53,7 @@ async function getTicketDocByUser(user: User) {
if (gh_doc && aw_doc && gh_doc.$id !== aw_doc.$id) { if (gh_doc && aw_doc && gh_doc.$id !== aw_doc.$id) {
const oldest = gh_doc.id < aw_doc.id ? gh_doc.$id : aw_doc.$id; const oldest = gh_doc.id < aw_doc.id ? gh_doc.$id : aw_doc.$id;
const newest = gh_doc.id > aw_doc.id ? gh_doc.$id : aw_doc.$id; const newest = gh_doc.id > aw_doc.id ? gh_doc.$id : aw_doc.$id;
await appwriteInit.database.updateDocument( await appwriteInitServer.databases.updateDocument(
APPWRITE_DB_INIT_ID, APPWRITE_DB_INIT_ID,
APPWRITE_COL_INIT_ID, APPWRITE_COL_INIT_ID,
oldest, oldest,
@@ -62,7 +62,7 @@ async function getTicketDocByUser(user: User) {
aw_email: null aw_email: null
} }
); );
return (await appwriteInit.database.updateDocument( return (await appwriteInitServer.databases.updateDocument(
APPWRITE_DB_INIT_ID, APPWRITE_DB_INIT_ID,
APPWRITE_COL_INIT_ID, APPWRITE_COL_INIT_ID,
newest, newest,
@@ -77,7 +77,7 @@ async function getTicketDocByUser(user: User) {
// If the document is missing either the GitHub or Appwrite user, update it // If the document is missing either the GitHub or Appwrite user, update it
if (!doc.gh_user || !doc.aw_email) { if (!doc.gh_user || !doc.aw_email) {
return (await appwriteInit.database.updateDocument( return (await appwriteInitServer.databases.updateDocument(
APPWRITE_DB_INIT_ID, APPWRITE_DB_INIT_ID,
APPWRITE_COL_INIT_ID, APPWRITE_COL_INIT_ID,
doc.$id, doc.$id,
@@ -90,7 +90,7 @@ async function getTicketDocByUser(user: User) {
// If the user's pro status has changed, update the document // If the user's pro status has changed, update the document
if (!!user.appwrite && doc.is_pro !== isPro) { if (!!user.appwrite && doc.is_pro !== isPro) {
return (await appwriteInit.database.updateDocument( return (await appwriteInitServer.databases.updateDocument(
APPWRITE_DB_INIT_ID, APPWRITE_DB_INIT_ID,
APPWRITE_COL_INIT_ID, APPWRITE_COL_INIT_ID,
doc.$id, doc.$id,
@@ -104,11 +104,11 @@ async function getTicketDocByUser(user: User) {
return doc; return doc;
} else { } else {
// If no document exists, create one // If no document exists, create one
const allDocs = await appwriteInit.database.listDocuments( const allDocs = await appwriteInitServer.databases.listDocuments(
APPWRITE_DB_INIT_ID, APPWRITE_DB_INIT_ID,
APPWRITE_COL_INIT_ID APPWRITE_COL_INIT_ID
); );
return (await appwriteInit.database.createDocument( return (await appwriteInitServer.databases.createDocument(
APPWRITE_DB_INIT_ID, APPWRITE_DB_INIT_ID,
APPWRITE_COL_INIT_ID, APPWRITE_COL_INIT_ID,
ID.unique(), ID.unique(),
@@ -124,7 +124,7 @@ async function getTicketDocByUser(user: User) {
} }
async function getTicketDocById(id: string) { async function getTicketDocById(id: string) {
return (await appwriteInit.database.getDocument( return (await appwriteInitServer.databases.getDocument(
APPWRITE_DB_INIT_ID, APPWRITE_DB_INIT_ID,
APPWRITE_COL_INIT_ID, APPWRITE_COL_INIT_ID,
id id

View File

@@ -1,10 +1,10 @@
import { APPWRITE_COL_INIT_ID, APPWRITE_DB_INIT_ID } from '$env/static/private'; import { APPWRITE_COL_INIT_ID, APPWRITE_DB_INIT_ID } from '$env/static/private';
import { appwriteInit } from '$lib/appwrite/init.js'; import { appwriteInitServer } from '$lib/appwrite/init.server';
export async function POST({ request }) { export async function POST({ request }) {
const data = await request.json() const data = await request.json()
await appwriteInit.database.updateDocument( await appwriteInitServer.databases.updateDocument(
APPWRITE_DB_INIT_ID, APPWRITE_DB_INIT_ID,
APPWRITE_COL_INIT_ID, APPWRITE_COL_INIT_ID,
data.ticketId, data.ticketId,