29044867dd
This PR adds the docs app back into the tldraw monorepo. ## Deploying We'll want to update our deploy script to update the SOURCE_SHA to the newest release sha... and then deploy the docs pulling api.json files from that release. We _could_ update the docs on every push to main, but we don't have to unless something has changed. Right now there's no automated deployments from this repo. ## Side effects To make this one work, I needed to update the lock file. This might be ok (new year new lock file), and everything builds as expected, though we may want to spend some time with our scripts to be sure that things are all good. I also updated our prettier installation, which decided to add trailing commas to every generic type. Which is, I suppose, [correct behavior](https://github.com/prettier/prettier-vscode/issues/955)? But that caused diffs in every file, which is unfortunate. ### Change Type - [x] `internal` — Any other changes that don't affect the published package[^2]
91 lines
2.3 KiB
TypeScript
91 lines
2.3 KiB
TypeScript
import path from 'path'
|
|
import { open } from 'sqlite'
|
|
import sqlite3 from 'sqlite3'
|
|
|
|
export async function connect(opts = {} as { reset?: boolean }) {
|
|
const db = await open({
|
|
filename: path.join(process.cwd(), 'content.db'),
|
|
driver: sqlite3.Database,
|
|
})
|
|
|
|
if (opts.reset) {
|
|
// Create the authors table if it does not exist
|
|
|
|
await db.run(`DROP TABLE IF EXISTS authors`)
|
|
await db.run(`CREATE TABLE IF NOT EXISTS authors (
|
|
id TEXT PRIMARY_KEY,
|
|
name TEXT NOT NULL,
|
|
email TEXT NOT NULL,
|
|
twitter TEXT NOT NULL,
|
|
image TEXT NOT NULL
|
|
)`)
|
|
|
|
// Create the sections table if it does not exist
|
|
|
|
await db.run(`DROP TABLE IF EXISTS sections`)
|
|
await db.run(`CREATE TABLE sections (
|
|
id TEXT PRIMARY KEY,
|
|
idx INTEGER NOT NULL,
|
|
title TEXT NOT NULL,
|
|
path TEXT NOT NULL,
|
|
description TEXT,
|
|
sidebar_behavior TEXT
|
|
)`)
|
|
|
|
// Create the categories table if it does not exist
|
|
|
|
await db.run(`DROP TABLE IF EXISTS categories`)
|
|
await db.run(`CREATE TABLE IF NOT EXISTS categories (
|
|
id TEXT PRIMARY KEY,
|
|
title TEXT NOT NULL,
|
|
description TEXT,
|
|
sectionId TEXT NOT NULL,
|
|
sectionIndex INTEGER NOT NULL,
|
|
path TEXT,
|
|
FOREIGN KEY (id) REFERENCES sections(id)
|
|
)`)
|
|
|
|
// Create the articles table if it does not exist
|
|
|
|
// drop the table if it exists
|
|
|
|
await db.run(`DROP TABLE IF EXISTS articles`)
|
|
await db.run(`CREATE TABLE IF NOT EXISTS articles (
|
|
id TEXT PRIMARY KEY,
|
|
groupIndex INTEGER NOT NULL,
|
|
categoryIndex INTEGER NOT NULL,
|
|
sectionIndex INTEGER NOT NULL,
|
|
groupId TEXT,
|
|
categoryId TEXT NOT NULL,
|
|
sectionId TEXT NOT NULL,
|
|
authorId TEXT NOT NULL,
|
|
title TEXT NOT NULL,
|
|
description TEXT,
|
|
hero TEXT,
|
|
status TEXT NOT NULL,
|
|
date TEXT,
|
|
sourceUrl TEXT,
|
|
keywords TEXT,
|
|
content TEXT NOT NULL,
|
|
path TEXT,
|
|
FOREIGN KEY (authorId) REFERENCES authors(id),
|
|
FOREIGN KEY (sectionId) REFERENCES sections(id),
|
|
FOREIGN KEY (categoryId) REFERENCES categories(id)
|
|
)`)
|
|
|
|
await db.run(`DROP TABLE IF EXISTS headings`)
|
|
await db.run(`CREATE TABLE IF NOT EXISTS headings (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
idx INTEGER NOT NULL,
|
|
articleId TEXT NOT NULL,
|
|
level INTEGER NOT NULL,
|
|
title TEXT NOT NULL,
|
|
slug TEXT NOT NULL,
|
|
isCode BOOL NOT NULL,
|
|
path TEXT NOT NULL,
|
|
FOREIGN KEY (articleId) REFERENCES articles(id)
|
|
)`)
|
|
}
|
|
|
|
return db
|
|
}
|