add: move upload server to buckets

This commit is contained in:
trisua 2025-08-21 00:30:29 -04:00
parent 8116307ba0
commit 75fe720f21
83 changed files with 351 additions and 458 deletions

View file

@ -0,0 +1,2 @@
ALTER TABLE apps
ADD COLUMN api_key TEXT NOT NULL DEFAULT '';

View file

@ -0,0 +1,2 @@
ALTER TABLE apps
ADD COLUMN data_used INT NOT NULL DEFAULT 0 CHECK (data_used >= 0);

View file

@ -0,0 +1,2 @@
ALTER TABLE apps
ADD COLUMN scopes TEXT NOT NULL DEFAULT '[]';

View file

@ -0,0 +1,2 @@
ALTER TABLE users
ADD COLUMN browser_session TEXT NOT NULL DEFAULT '';

View file

@ -0,0 +1,2 @@
ALTER TABLE channels
ADD COLUMN last_message BIGINT NOT NULL DEFAULT '0';

View file

@ -0,0 +1,2 @@
ALTER TABLE channels
ADD COLUMN members TEXT NOT NULL DEFAULT '[]';

View file

@ -0,0 +1,2 @@
ALTER TABLE channels
ADD COLUMN title TEXT NOT NULL DEFAULT '';

View file

@ -0,0 +1,2 @@
ALTER TABLE communities
ADD COLUMN is_forge INT NOT NULL DEFAULT 0;

View file

@ -0,0 +1,2 @@
ALTER TABLE communities
ADD COLUMN post_count INT NOT NULL DEFAULT 0;

View file

@ -0,0 +1,2 @@
ALTER TABLE journals
ADD COLUMN dirs TEXT NOT NULL DEFAULT '[]';

View file

@ -0,0 +1,2 @@
ALTER TABLE messages
ADD COLUMN reactions TEXT NOT NULL DEFAULT '{}';

View file

@ -0,0 +1,5 @@
ALTER TABLE notes
ADD COLUMN dir BIGINT NOT NULL DEFAULT 0;
ALTER TABLE notes
ADD COLUMN tags TEXT NOT NULL DEFAULT '[]';

View file

@ -0,0 +1,2 @@
ALTER TABLE notes
ADD COLUMN is_global INT NOT NULL DEFAULT 0;

View file

@ -0,0 +1,7 @@
-- remove users subscriptions
ALTER TABLE users
DROP COLUMN subscriptions;
-- add notifications tag
ALTER TABLE notifications
ADD COLUMN tag TEXT NOT NULL DEFAULT '';

View file

@ -0,0 +1,2 @@
ALTER TABLE posts
ADD COLUMN is_deleted INT NOT NULL DEFAULT 0;

View file

@ -0,0 +1,2 @@
ALTER TABLE posts
ADD COLUMN is_open INT NOT NULL DEFAULT 1;

View file

@ -0,0 +1,2 @@
ALTER TABLE posts
ADD COLUMN poll_id BIGINT NOT NULL DEFAULT 0;

View file

@ -0,0 +1,5 @@
ALTER TABLE posts
DROP COLUMN circle;
ALTER TABLE posts
ADD COLUMN stack BIGINT NOT NULL DEFAULT 0;

View file

@ -0,0 +1,2 @@
ALTER TABLE posts
ADD COLUMN title TEXT NOT NULL DEFAULT '';

View file

@ -0,0 +1,4 @@
ALTER TABLE posts
ADD COLUMN tsvector_content tsvector GENERATED ALWAYS AS (to_tsvector ('english', coalesce(content, ''))) STORED;
CREATE INDEX tsvector_content_idx ON posts USING GIN (tsvector_content);

View file

@ -0,0 +1,2 @@
ALTER TABLE posts
ADD COLUMN uploads TEXT NOT NULL DEFAULT '[]';

View file

@ -0,0 +1,2 @@
ALTER TABLE questions
ADD COLUMN context TEXT NOT NULL DEFAULT '{}';

View file

@ -0,0 +1,2 @@
ALTER TABLE questions
ADD COLUMN drawings TEXT NOT NULL DEFAULT '[]';

View file

@ -0,0 +1,2 @@
ALTER TABLE questions
ADD COLUMN ip TEXT NOT NULL DEFAULT '';

View file

@ -0,0 +1,5 @@
ALTER TABLE questions
ADD COLUMN likes INT NOT NULL DEFAULT 0;
ALTER TABLE questions
ADD COLUMN dislikes INT NOT NULL DEFAULT 0;

View file

@ -0,0 +1 @@
ALTER TABLE reactions ADD CONSTRAINT uq_reactions UNIQUE (owner, asset);

View file

@ -0,0 +1,2 @@
ALTER TABLE requests
DROP CONSTRAINT requests_pkey;

View file

@ -0,0 +1 @@
ALTER TABLE requests ADD CONSTRAINT requests_pkey PRIMARY KEY (id, owner, linked_asset);

View file

@ -0,0 +1,2 @@
ALTER TABLE services
ADD COLUMN revision BIGINT NOT NULL DEFAULT 0;

View file

@ -0,0 +1,5 @@
ALTER TABLE stacks
ADD COLUMN mode TEXT NOT NULL DEFAULT '"Include"';
ALTER TABLE stacks
ADD COLUMN sort TEXT NOT NULL DEFAULT '"Created"';

View file

@ -0,0 +1,43 @@
import postgres from "npm:postgres";
import { parse } from "npm:smol-toml";
const config = parse(await Deno.readTextFile(Deno.cwd() + "/tetratto.toml"), {
integersAsBigInt: true,
});
const db = postgres({
user: config.database.user,
password: config.database.password,
database: config.database.name,
hostname: config.database.url.split(":")[0],
port: config.database.url.split(":")[1],
});
const whats = {};
const alts = {};
for (const row of await db`SELECT * FROM uploads;`) {
whats[row.id] = row.what.replaceAll('"', "");
alts[row.id] = row.alt;
}
await db`ALTER TABLE uploads DROP COLUMN IF EXISTS what;`;
await db`ALTER TABLE uploads DROP COLUMN IF EXISTS alt;`;
await db`ALTER TABLE uploads ADD COLUMN IF NOT EXISTS bucket TEXT NOT NULL DEFAULT '';`;
await db`ALTER TABLE uploads ADD COLUMN IF NOT EXISTS metadata TEXT NOT NULL DEFAULT '';`;
let i = 0;
for (const row of await db`SELECT * FROM uploads;`) {
await db`DELETE FROM uploads WHERE id = ${BigInt(row.id)}`;
await db`INSERT INTO uploads VALUES (${BigInt(row.id)}, ${BigInt(row.created)}, ${BigInt(row.owner)}, DEFAULT, ${JSON.stringify(
{
what: whats[row.id],
alt: whats[row.alt],
},
)});`;
i += 1;
console.log(`done ${i}`);
}
await db.end();

View file

@ -0,0 +1,2 @@
ALTER TABLE uploads
ADD COLUMN alt TEXT NOT NULL DEFAULT '';

View file

@ -0,0 +1,2 @@
ALTER TABLE users
ADD COLUMN achievements TEXT NOT NULL DEFAULT '[]';

View file

@ -0,0 +1,2 @@
ALTER TABLE users
ADD COLUMN associated TEXT NOT NULL DEFAULT '[]';

View file

@ -0,0 +1,5 @@
ALTER TABLE users
ADD COLUMN awaiting_purchase INT NOT NULL DEFAULT 0;
ALTER TABLE users
ADD COLUMN was_purchased INT NOT NULL DEFAULT 0;

View file

@ -0,0 +1,2 @@
ALTER TABLE users
ADD COLUMN ban_reason TEXT NOT NULL DEFAULT '';

View file

@ -0,0 +1,2 @@
ALTER TABLE users
ADD COLUMN connections TEXT NOT NULL DEFAULT '{}';

View file

@ -0,0 +1,2 @@
ALTER TABLE users
ADD COLUMN grants TEXT NOT NULL DEFAULT '[]';

View file

@ -0,0 +1,2 @@
ALTER TABLE users
ADD COLUMN invite_code BIGINT NOT NULL DEFAULT 0;

View file

@ -0,0 +1,2 @@
ALTER TABLE users
DROP COLUMN layouts;

View file

@ -0,0 +1,2 @@
ALTER TABLE users
ADD COLUMN post_count INT NOT NULL DEFAULT 0;

View file

@ -0,0 +1,2 @@
ALTER TABLE users
ADD COLUMN request_count INT NOT NULL DEFAULT 0;

View file

@ -0,0 +1,2 @@
ALTER TABLE users
ADD COLUMN secondary_permissions INT NOT NULL DEFAULT 1;

View file

@ -0,0 +1,2 @@
ALTER TABLE users
ADD COLUMN seller_data TEXT NOT NULL DEFAULT '{}';

View file

@ -0,0 +1,2 @@
ALTER TABLE users
ADD COLUMN stripe_id TEXT DEFAULT '';

View file

@ -0,0 +1,5 @@
ALTER TABLE users
ADD COLUMN totp TEXT DEFAULT '';
ALTER TABLE users
ADD COLUMN recovery_codes TEXT DEFAULT '[]';