60 lines
2.0 KiB
Go
60 lines
2.0 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 file (
|
|
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 file_index
|
|
ON file(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 manifest_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);
|
|
|
|
`
|