refactor: switch to vercel pg

This commit is contained in:
iCrawl
2023-11-13 21:07:01 +01:00
parent 9a8110047e
commit c4767bacde
10 changed files with 125 additions and 89 deletions

View File

@@ -43,7 +43,7 @@
"@actions/core": "^1.10.1",
"@actions/glob": "^0.4.0",
"@discordjs/scripts": "workspace:^",
"@planetscale/database": "^1.11.0",
"@vercel/postgres": "^0.5.1",
"meilisearch": "^0.35.0",
"tslib": "^2.6.2",
"undici": "5.27.2"

View File

@@ -2,8 +2,7 @@ import { readFile } from 'node:fs/promises';
import process from 'node:process';
import { getInput, setFailed } from '@actions/core';
import { create } from '@actions/glob';
import { connect } from '@planetscale/database';
import { fetch } from 'undici';
import { createPool } from '@vercel/postgres';
if (!process.env.DATABASE_URL) {
setFailed('DATABASE_URL is not set');
@@ -12,9 +11,8 @@ if (!process.env.DATABASE_URL) {
const pkg = getInput('package') || '*';
const version = getInput('version') || 'main';
const sql = connect({
fetch,
url: process.env.DATABASE_URL!,
const pool = createPool({
connectionString: process.env.DATABASE_URL,
});
const globber = await create(`packages/${pkg}/docs/docs.api.json`);
@@ -22,7 +20,7 @@ for await (const file of globber.globGenerator()) {
const data = await readFile(file, 'utf8');
try {
console.log(`Uploading ${file} with ${version}...`);
await sql.execute('replace into documentation (version, data) values (?, ?)', [version, data]);
await pool.sql`insert into documentation (version, data) values (${version}, ${data}) on conflict (version) do update set data = EXCLUDED.data`;
} catch (error) {
const err = error as Error;
setFailed(err.message);

View File

@@ -1,9 +1,8 @@
import process from 'node:process';
import { setFailed } from '@actions/core';
import { generateAllIndices } from '@discordjs/scripts';
import { connect } from '@planetscale/database';
import { createPool } from '@vercel/postgres';
import { MeiliSearch } from 'meilisearch';
import { fetch } from 'undici';
if (!process.env.DATABASE_URL) {
setFailed('DATABASE_URL is not set');
@@ -17,9 +16,8 @@ if (!process.env.SEARCH_API_KEY) {
setFailed('SEARCH_API_KEY is not set');
}
const sql = connect({
fetch,
url: process.env.DATABASE_URL!,
const pool = createPool({
connectionString: process.env.DATABASE_URL,
});
const client = new MeiliSearch({
@@ -32,20 +30,15 @@ try {
const indices = await generateAllIndices({
fetchPackageVersions: async (pkg) => {
console.log(`Fetching versions for ${pkg}...`);
const { rows } = await sql.execute('select version from documentation where name = ?', [pkg]);
const { rows } = await pool.sql`select version from documentation where name = ${pkg}`;
// @ts-expect-error: https://github.com/planetscale/database-js/issues/71
return rows.map((row) => row.version);
},
fetchPackageVersionDocs: async (pkg, version) => {
console.log(`Fetching data for ${pkg} ${version}...`);
const { rows } = await sql.execute('select data from documentation where name = ? and version = ?', [
pkg,
version,
]);
const { rows } = await pool.sql`select data from documentation where name = ${pkg} and version = ${version}`;
// @ts-expect-error: https://github.com/planetscale/database-js/issues/71
return rows[0].data;
return rows[0]?.data ?? null;
},
writeToFile: false,
});

View File

@@ -58,7 +58,7 @@
"@discordjs/api-extractor-utils": "workspace:^",
"@microsoft/tsdoc": "0.14.2",
"@microsoft/tsdoc-config": "0.16.2",
"@planetscale/database": "^1.11.0",
"@vercel/postgres": "^0.5.1",
"tslib": "^2.6.2",
"undici": "5.27.2",
"yaml": "2.3.4"

View File

@@ -1,15 +1,14 @@
import { readFile } from 'node:fs/promises';
import process, { cwd } from 'node:process';
import { create } from '@actions/glob';
import { connect } from '@planetscale/database';
import { createPool } from '@vercel/postgres';
const sql = connect({
url: process.env.DATABASE_URL!,
const pool = createPool({
connectionString: process.env.DATABASE_URL,
});
process.chdir(`${cwd()}/../../`);
const globber = await create(`packages/*/docs/*.api.json`);
// const globber2 = await create(`discord.js/*.json`);
for await (const file of globber.globGenerator()) {
const parsed = /(?<semver>\d+.\d+.\d+)-?.*/.exec(file);
const data = await readFile(file, 'utf8');
@@ -17,14 +16,14 @@ for await (const file of globber.globGenerator()) {
if (parsed?.groups) {
console.log(parsed.groups.semver, file);
try {
await sql.execute('replace into documentation (version, data) values (?, ?)', [parsed.groups.semver, data]);
await pool.sql`insert into documentation (version, data) values (${parsed.groups.semver}, ${data}) on conflict (name, version) do update set data = EXCLUDED.data`;
} catch (error) {
console.error(error);
}
} else {
console.log('main', file);
try {
await sql.execute('replace into documentation (version, data) values (?, ?)', ['main', data]);
await pool.sql`insert into documentation (version, data) values (${'main'}, ${data}) on conflict (name, version) do update set data = EXCLUDED.data`;
} catch (error) {
console.error(error);
}