86 lines
2.8 KiB
Go
86 lines
2.8 KiB
Go
/*
|
|
* Copyright 2026 Oleg Borodin <onborodin@gmail.com>
|
|
*
|
|
* This work is published and licensed under a Creative Commons
|
|
* Attribution-NonCommercial-NoDerivatives 4.0 International License.
|
|
*
|
|
* Distribution of this work is permitted, but commercial use and
|
|
* modifications are strictly prohibited.
|
|
*/
|
|
package maindb
|
|
|
|
const schema = `
|
|
CREATE TABLE IF NOT EXISTS files (
|
|
id VARCHAR(255) NOT NULL,
|
|
collection VARCHAR(255) NOT NULL,
|
|
name VARCHAR(255) NOT NULL,
|
|
type VARCHAR(255) NOT NULL,
|
|
checksum VARCHAR(255) NOT NULL,
|
|
size INTEGER,
|
|
created_at VARCHAR(255) NOT NULL,
|
|
updated_at VARCHAR(255) NOT NULL,
|
|
created_by VARCHAR(255) NOT NULL,
|
|
updated_by VARCHAR(255) NOT NULL
|
|
);
|
|
CREATE UNIQUE INDEX IF NOT EXISTS files_index
|
|
ON files(collection, name);
|
|
|
|
--- DROP TABLE IF EXISTS manifests;
|
|
CREATE TABLE IF NOT EXISTS manifests (
|
|
id VARCHAR(255) NOT NULL,
|
|
name VARCHAR(255) NOT NULL,
|
|
reference VARCHAR(255) NOT NULL,
|
|
digest VARCHAR(1024) NOT NULL,
|
|
contentType VARCHAR(255) NOT NULL,
|
|
payload VARCHAR(4096) NOT NULL,
|
|
created_at VARCHAR(255) NOT NULL,
|
|
updated_at VARCHAR(255) NOT NULL,
|
|
created_by VARCHAR(255) NOT NULL,
|
|
updated_by VARCHAR(255) NOT NULL
|
|
);
|
|
CREATE UNIQUE INDEX IF NOT EXISTS manifests_index
|
|
ON manifests(name, reference);
|
|
|
|
CREATE TABLE IF NOT EXISTS blobs (
|
|
id VARCHAR(255) NOT NULL,
|
|
name VARCHAR(255) NOT NULL,
|
|
reference VARCHAR(255) NOT NULL,
|
|
mediaType VARCHAR(255) NOT NULL,
|
|
digest VARCHAR(255) NOT NULL,
|
|
size INTEGER NOT NULL,
|
|
created_at VARCHAR(255) NOT NULL,
|
|
updated_at VARCHAR(255) NOT NULL,
|
|
created_by VARCHAR(255) NOT NULL,
|
|
updated_by VARCHAR(255) NOT NULL
|
|
);
|
|
CREATE UNIQUE INDEX IF NOT EXISTS blobs_index
|
|
ON blobs(name, reference, digest);
|
|
|
|
--- DROP TABLE IF EXISTS accounts;
|
|
CREATE TABLE IF NOT EXISTS accounts (
|
|
id TEXT NOT NULL,
|
|
username TEXT NOT NULL,
|
|
passhash TEXT NOT NULL,
|
|
created_at TEXT NOT NULL,
|
|
updated_at TEXT NOT NULL,
|
|
disabled BOOL
|
|
);
|
|
CREATE UNIQUE INDEX IF NOT EXISTS accounts_index01
|
|
ON accounts(id);
|
|
CREATE UNIQUE INDEX IF NOT EXISTS accounts_index02
|
|
ON accounts(username);
|
|
|
|
--- DROP TABLE IF EXISTS grants;
|
|
CREATE TABLE IF NOT EXISTS grants (
|
|
id TEXT NOT NULL,
|
|
account_id INT NOT NULL,
|
|
operation TEXT NOT NULL,
|
|
created_at TEXT NOT NULL
|
|
);
|
|
CREATE INDEX IF NOT EXISTS grants_index01
|
|
ON grants(account_id);
|
|
CREATE UNIQUE INDEX IF NOT EXISTS grants_index02
|
|
ON grants(account_id, operation);
|
|
|
|
`
|