aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-01-03 05:36:06 -0800
committerFuwn <[email protected]>2024-01-03 05:36:06 -0800
commit076299e85b4e63acb7fdf32f12770dc04b88652e (patch)
treefeef3a510083212224ebc3c1db3eb79116311ebd
parentdeps(bun): update for 0.1.15 (diff)
downloaddue.moe-076299e85b4e63acb7fdf32f12770dc04b88652e.tar.xz
due.moe-076299e85b4e63acb7fdf32f12770dc04b88652e.zip
ci: move to vercel
-rw-r--r--.gitignore3
-rw-r--r--Earthfile68
-rwxr-xr-xbun.lockbbin126395 -> 156332 bytes
-rw-r--r--due_moe_schema.sql9
-rw-r--r--package.json3
-rw-r--r--src/lib/Database/badges.ts87
-rw-r--r--src/routes/api/badges/+server.ts12
-rw-r--r--svelte.config.js2
8 files changed, 41 insertions, 143 deletions
diff --git a/.gitignore b/.gitignore
index 9e85a9a0..2f0fdbdc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/bun.lockb b/bun.lockb
index 366e0cc4..5d7d2793 100755
--- a/bun.lockb
+++ b/bun.lockb
Binary files differ
diff --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} */