From cdec7e78b7c84d24c04568b35fd992c9ee9ddb15 Mon Sep 17 00:00:00 2001 From: Hare Date: Mon, 2 Sep 2024 18:35:11 +0900 Subject: [PATCH 1/6] Update subproject --- articles | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/articles b/articles index 172da35..1af78ed 160000 --- a/articles +++ b/articles @@ -1 +1 @@ -Subproject commit 172da3590a2e7cec7b41dcf9a60306db277b7159 +Subproject commit 1af78edd4c4e4e5b3834303e19f3507998019825 From 5c01942948d9c8fd0edc66dfa144b278ae7bd402 Mon Sep 17 00:00:00 2001 From: Hare Date: Mon, 2 Sep 2024 21:48:59 +0900 Subject: [PATCH 2/6] feat: Update pg type --- src/lib/server/database.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/lib/server/database.ts b/src/lib/server/database.ts index 88aa140..38c2e36 100644 --- a/src/lib/server/database.ts +++ b/src/lib/server/database.ts @@ -1,10 +1,9 @@ import pg from 'pg'; -const { Pool } = pg; import { getConnection } from './database/get_connection'; export class Postgres { client: pg.PoolClient | null = null; - public static async new(pool: Pool) { + public static async new(pool: pg.Pool) { const pg = new Postgres(); pg.client = await getConnection().connect(); return pg; @@ -32,7 +31,7 @@ export class Postgres { } export default async ( - pool: Pool + pool: pg.Pool ) => { return await Postgres.new(pool); }; import { building } from '$app/environment'; From 4fb912cbf92a9206b90143ac54f966a3a38e8525 Mon Sep 17 00:00:00 2001 From: Hare Date: Mon, 2 Sep 2024 22:02:19 +0900 Subject: [PATCH 3/6] fix: use hook data to create a new DB instance --- src/lib/server/database.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/server/database.ts b/src/lib/server/database.ts index 38c2e36..189b72f 100644 --- a/src/lib/server/database.ts +++ b/src/lib/server/database.ts @@ -5,7 +5,7 @@ export class Postgres { client: pg.PoolClient | null = null; public static async new(pool: pg.Pool) { const pg = new Postgres(); - pg.client = await getConnection().connect(); + pg.client = await pool.connect(); return pg; } From bc0b59042e7b3ae9916c2b4ead4fe79f2a58b4a5 Mon Sep 17 00:00:00 2001 From: Hare Date: Mon, 2 Sep 2024 22:02:30 +0900 Subject: [PATCH 4/6] chore: Add fetch_articles server route --- src/routes/api/fetch_articles/+server.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/routes/api/fetch_articles/+server.ts diff --git a/src/routes/api/fetch_articles/+server.ts b/src/routes/api/fetch_articles/+server.ts new file mode 100644 index 0000000..322e8a5 --- /dev/null +++ b/src/routes/api/fetch_articles/+server.ts @@ -0,0 +1,16 @@ +import { json } from '@sveltejs/kit'; +import { error } from '@sveltejs/kit'; +import type { RequestHandler } from './$types'; + +import { + TOKEN +} from '$env/static/private' + +export const POST: RequestHandler = ({ url }) => { + const token = url.searchParams.get('token'); + console.log(token); + if (token !== TOKEN) { + return error(401, 'Unauthorized'); + } + return new Response(String(token)); +}; From 0da14f3ebfbba4044d5a79a52cb53dbfd20a6231 Mon Sep 17 00:00:00 2001 From: Hare Date: Tue, 3 Sep 2024 04:45:42 +0900 Subject: [PATCH 5/6] feat: pull articles when database initialization --- src/lib/server/database/init_db.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/lib/server/database/init_db.ts b/src/lib/server/database/init_db.ts index 1964187..cd090f8 100644 --- a/src/lib/server/database/init_db.ts +++ b/src/lib/server/database/init_db.ts @@ -2,8 +2,15 @@ import type { Postgres } from '$lib/server/database'; import fs from 'fs'; import { compile } from 'mdsvex'; +import { execSync } from 'child_process'; + export default async function init(db: Postgres) { - // Create tables(when not exists) + if (fs.existsSync('./articles/')) { + console.log('Pulling articles from git..'); + const stdout = execSync('git pull', { cwd: './articles/' }); + console.log(stdout.toString()); + } + const schemas = [ { name: 'article', @@ -107,7 +114,7 @@ export default async function init(db: Postgres) { for (const { path, id } of articleFiles) { const res = await db.query('select * from article where id = $1', [id]); const compiled = await compile(fs.readFileSync(path, 'utf-8')); - + const title = compiled.data.fm.title; const category = path.split('/')[3]; const tags: string[] = compiled.data.fm.tags; From 6c619cc01915c724cfac543169172a83ec307df9 Mon Sep 17 00:00:00 2001 From: Hare Date: Tue, 3 Sep 2024 04:46:20 +0900 Subject: [PATCH 6/6] feat: Initialize database connection in fetch_articles server route --- src/routes/api/fetch_articles/+server.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/routes/api/fetch_articles/+server.ts b/src/routes/api/fetch_articles/+server.ts index 322e8a5..2520687 100644 --- a/src/routes/api/fetch_articles/+server.ts +++ b/src/routes/api/fetch_articles/+server.ts @@ -6,11 +6,18 @@ import { TOKEN } from '$env/static/private' -export const POST: RequestHandler = ({ url }) => { +import PG from '$lib/server/database'; +import { getConnection } from '$lib/server/database/get_connection'; +// import { building } from '$app/environment'; +import init from '$lib/server/database/init_db'; + +export const POST: RequestHandler = async ({ url }) => { const token = url.searchParams.get('token'); console.log(token); if (token !== TOKEN) { return error(401, 'Unauthorized'); } + + await init(await PG(getConnection())); return new Response(String(token)); };