mirror of
https://github.com/LukeHagar/website.git
synced 2025-12-06 12:57:48 +00:00
feat: use api key for init tickets
This commit is contained in:
14
.env.example
14
.env.example
@@ -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=
|
||||||
|
|||||||
13
src/lib/appwrite/init.server.ts
Normal file
13
src/lib/appwrite/init.server.ts
Normal 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)
|
||||||
|
};
|
||||||
@@ -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)
|
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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()
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user