Squashed 'components/rfs/' content from commit 9808a5e

git-subtree-dir: components/rfs
git-subtree-split: 9808a5e9fc768edc7d8b1dfa5b91b3f018dff0cb
This commit is contained in:
2025-08-16 21:12:45 +02:00
commit 9790ef4dac
96 changed files with 14003 additions and 0 deletions

46
rfs/schema/schema.sql Normal file
View File

@@ -0,0 +1,46 @@
-- inode table and main entrypoint of the schema
CREATE TABLE IF NOT EXISTS inode (
ino INTEGER PRIMARY KEY AUTOINCREMENT,
parent INTEGER,
name VARCHAR(255),
size INTEGER,
uid INTEGER,
gid INTEGER,
mode INTEGER,
rdev INTEGER,
ctime INTEGER,
mtime INTEGER
);
CREATE INDEX IF NOT EXISTS parents ON inode (parent);
CREATE INDEX IF NOT EXISTS names ON inode (name);
-- extra data for each inode for special types (say link targets)
CREATE TABLE IF NOT EXISTS extra (
ino INTEGER PRIMARY KEY,
data VARCHAR(4096)
);
-- blocks per file, order of insertion is important
CREATE TABLE IF NOT EXISTS block (
ino INTEGER,
id VARCHAR(32),
key VARCHAR(32)
);
CREATE INDEX IF NOT EXISTS block_ino ON block (ino);
-- global flist tags, this can include values like `version`, `description`, `block-size`, etc..
-- it can also hold extra user-defined tags for extensions
CREATE TABLE IF NOT EXISTS tag (
key VARCHAR(10) PRIMARY KEY,
value VARCHAR(255)
);
-- routing table define ranges where blobs can be found. This allows "sharding" by be able to retrieve
-- blobs from different partitions using the prefix range (hashes that are )
CREATE TABLE IF NOT EXISTS route (
start integer, -- one byte hash prefix
end integer, -- one byte hash prefix
url VARCHAR(2048)
);