diff options
| author | Fuwn <[email protected]> | 2024-01-03 05:36:06 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-01-03 05:36:06 -0800 |
| commit | 076299e85b4e63acb7fdf32f12770dc04b88652e (patch) | |
| tree | feef3a510083212224ebc3c1db3eb79116311ebd | |
| parent | deps(bun): update for 0.1.15 (diff) | |
| download | due.moe-076299e85b4e63acb7fdf32f12770dc04b88652e.tar.xz due.moe-076299e85b4e63acb7fdf32f12770dc04b88652e.zip | |
ci: move to vercel
| -rw-r--r-- | .gitignore | 3 | ||||
| -rw-r--r-- | Earthfile | 68 | ||||
| -rwxr-xr-x | bun.lockb | bin | 126395 -> 156332 bytes | |||
| -rw-r--r-- | due_moe_schema.sql | 9 | ||||
| -rw-r--r-- | package.json | 3 | ||||
| -rw-r--r-- | src/lib/Database/badges.ts | 87 | ||||
| -rw-r--r-- | src/routes/api/badges/+server.ts | 12 | ||||
| -rw-r--r-- | svelte.config.js | 2 |
8 files changed, 41 insertions, 143 deletions
@@ -20,3 +20,6 @@ package-lock.json # Visual Studio Code .vscode + +# Vercel +.vercel diff --git a/Earthfile b/Earthfile deleted file mode 100644 index ec3a71ed..00000000 --- a/Earthfile +++ /dev/null @@ -1,68 +0,0 @@ -VERSION 0.7 - -FROM oven/bun:1.0.15-alpine - -WORKDIR /due - -all: - RUN apk add --update --no-cache git - - COPY .git .git - - BUILD +lint - BUILD +docker --GIT_SHORT_SHA=$(git rev-parse --short HEAD) - -dev: - LOCALLY - - RUN fuser -k 5173/tcp || true - RUN npm run dev -- --host - -lint: - FROM +source - - COPY .eslintignore .eslintignore - COPY .eslintrc.cjs .eslintrc.cjs - COPY .prettierignore .prettierignore - COPY .prettierrc .prettierrc - - RUN bun --bun run lint - RUN bun --bun run check - -docker: - ARG GIT_SHORT_SHA - - COPY +build/build . - - RUN echo "PUBLIC_GIT_SHORT_SHA=$GIT_SHORT_SHA" > .env - - CMD ["bun", "--bun", "./index.js"] - - SAVE IMAGE --push fuwn/due-next:latest - -build: - FROM +source - - RUN mkdir data - RUN sqlite3 data/due_moe.sqlite3 < due_moe_schema.sql - RUN bun --bun run vite build - - SAVE ARTIFACT build - -deps: - RUN apk add --update --no-cache sqlite-dev - - COPY package.json ./ - COPY bun.lockb ./ - - RUN bun install - -source: - FROM +deps - - COPY due_moe_schema.sql due_moe_schema.sql - COPY svelte.config.js svelte.config.js - COPY tsconfig.json tsconfig.json - COPY vite.config.ts vite.config.ts - COPY static static - COPY src src Binary files differdiff --git a/due_moe_schema.sql b/due_moe_schema.sql deleted file mode 100644 index 0dae4479..00000000 --- a/due_moe_schema.sql +++ /dev/null @@ -1,9 +0,0 @@ -CREATE TABLE user_badges ( - id integer primary key, - user_id integer not null, - post text(1000) not null, - image text(1000) not null, - description text(1000) default null, - category text(1000) default null, - time timestamp default current_timestamp -); diff --git a/package.json b/package.json index ffd441ee..93d1a046 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ }, "devDependencies": { "@sveltejs/adapter-auto": "^2.0.0", + "@sveltejs/adapter-vercel": "next", "@sveltejs/kit": "^1.20.4", "@types/dom-to-image": "^2.6.5", "@types/fast-levenshtein": "^0.0.4", @@ -35,7 +36,7 @@ }, "type": "module", "dependencies": { - "bun-types": "^1.0.15", + "@vercel/postgres": "^0.5.1", "dexie": "^4.0.1-alpha.25", "fast-levenshtein": "^3.0.0", "fetch-jsonp": "^1.3.0", diff --git a/src/lib/Database/badges.ts b/src/lib/Database/badges.ts index 9819e10e..aaf08d8f 100644 --- a/src/lib/Database/badges.ts +++ b/src/lib/Database/badges.ts @@ -1,5 +1,5 @@ import { databaseTimeToDate } from '$lib/Utility/time'; -import { Database } from 'bun:sqlite'; +import { sql } from '@vercel/postgres'; export interface Badge { post?: string; @@ -10,78 +10,47 @@ export interface Badge { category?: string; } -const database = new Database('./data/due_moe.sqlite3', { - create: true -}); - -database - .query( - `CREATE TABLE IF NOT EXISTS user_badges ( - id INTEGER PRIMARY KEY, - user_id INTEGER NOT NULL, - post TEXT(1000) NOT NULL, - image TEXT(1000) NOT NULL, - description TEXT(1000) DEFAULT NULL, - category TEXT(1000) DEFAULT NULL, - time TIMESTAMP DEFAULT CURRENT_TIMESTAMP -)` - ) - .run(); - -export const getUserBadges = (userId: number): Badge[] => { - return database - .query('SELECT * FROM user_badges WHERE user_id = $userId') - .all({ $userId: String(userId) }) - .sort((a, b) => - databaseTimeToDate((a as Badge).time ?? '').getTime() > - databaseTimeToDate((b as Badge).time ?? '').getTime() - ? -1 - : 1 - ) as Badge[]; +export const getUserBadges = async (userId: number): Promise<Badge[]> => { + return (await sql`SELECT * FROM user_badges WHERE user_id = ${userId};`).rows.sort((a, b) => + databaseTimeToDate((a as Badge).time ?? '').getTime() > + databaseTimeToDate((b as Badge).time ?? '').getTime() + ? -1 + : 1 + ) as Badge[]; }; -export const addUserBadge = (userId: number, badge: Badge) => { +export const addUserBadge = async (userId: number, badge: Badge) => { const { post, image, description, time, category } = badge; if (post === undefined || image === undefined) return; if (time) { - database - .query( - `INSERT INTO user_badges (user_id, post, image, description, time, category) VALUES (?1, ?2, ?3, ?4, ?5, ?6);` - ) - .run(userId.toString(), post, image, description || null, time, category || null); + ( + await sql`INSERT INTO user_badges (user_id, post, image, description, time, category) VALUES (${userId}, ${post}, ${image}, ${ + description || null + }, ${time}, ${category || null});` + ).rows; } else { - database - .query( - `INSERT INTO user_badges (user_id, post, image, description, category) VALUES (?1, ?2, ?3, ?4, ?5);` - ) - .run(userId.toString(), post, image, description || null, category || null); + ( + await sql`INSERT INTO user_badges (user_id, post, image, description, category) VALUES (${userId}, ${post}, ${image}, ${ + description || null + }, ${category || null});` + ).rows; } }; -export const removeUserBadge = (userId: number, id: number) => { - if (!isNaN(id)) - database.query('DELETE FROM user_badges WHERE user_id = $userId AND id = $id').run({ - $userId: userId, - $id: id - }); +export const removeUserBadge = async (userId: number, id: number) => { + if (!isNaN(id)) await sql`DELETE FROM user_badges WHERE user_id = ${userId} AND id = ${id};`; }; -export const updateUserBadge = (userId: number, id: number, badge: Badge) => { +export const updateUserBadge = async (userId: number, id: number, badge: Badge) => { if (badge.post === undefined || badge.image === undefined || badge.description === undefined) return; - database - .query( - 'UPDATE user_badges SET post = ?1, image = ?2, description = ?3, category = ?6 WHERE id = ?4 AND user_id = ?5' - ) - .run( - badge.post || null, - badge.image || null, - badge.description || null, - id, - userId, - badge.category || null - ); + await sql` + UPDATE user_badges SET post = ${badge.post || null}, image = ${ + badge.image || null + }, description = ${badge.description || null}, category = ${ + badge.category || null + } WHERE id = ${id} AND user_id = ${userId};`; }; diff --git a/src/routes/api/badges/+server.ts b/src/routes/api/badges/+server.ts index 63e6ace4..922ba359 100644 --- a/src/routes/api/badges/+server.ts +++ b/src/routes/api/badges/+server.ts @@ -4,7 +4,7 @@ import { getUserBadges } from '$lib/Database/badges'; import { addUserBadge } from '$lib/Database/badges'; export const GET = async ({ url }) => { - return Response.json(getUserBadges(Number(url.searchParams.get('id') || 0))); + return Response.json(await getUserBadges(Number(url.searchParams.get('id') || 0))); }; export const DELETE = async ({ url, cookies }) => { @@ -22,7 +22,7 @@ export const DELETE = async ({ url, cookies }) => { refreshToken: user['refresh_token'] }); - removeUserBadge(identity.id, Number(url.searchParams.get('id'))); + await removeUserBadge(identity.id, Number(url.searchParams.get('id'))); return Response.json({}); }; @@ -43,9 +43,11 @@ export const PUT = async ({ cookies, url }) => { }); if ( - getUserBadges(identity.id).find((badge) => badge.id === Number(url.searchParams.get('update'))) + (await getUserBadges(identity.id)).find( + (badge) => badge.id === Number(url.searchParams.get('update')) + ) ) { - updateUserBadge(identity.id, Number(url.searchParams.get('update')), { + await updateUserBadge(identity.id, Number(url.searchParams.get('update')), { post: url.searchParams.get('post') || undefined, image: url.searchParams.get('image') || undefined, description: url.searchParams.get('description') || undefined, @@ -53,7 +55,7 @@ export const PUT = async ({ cookies, url }) => { category: url.searchParams.get('category') || undefined }); } else { - addUserBadge(identity.id, { + await addUserBadge(identity.id, { post: url.searchParams.get('post') || undefined, image: url.searchParams.get('image') || undefined, description: url.searchParams.get('description') || undefined, diff --git a/svelte.config.js b/svelte.config.js index 4c173d7d..c378da70 100644 --- a/svelte.config.js +++ b/svelte.config.js @@ -1,4 +1,4 @@ -import adapter from 'svelte-adapter-bun'; +import adapter from '@sveltejs/adapter-vercel'; import { vitePreprocess } from '@sveltejs/kit/vite'; /** @type {import('@sveltejs/kit').Config} */ |