migrate orion repo into monorepo structure

This commit is contained in:
talksik
2026-02-21 08:48:34 -08:00
parent 144596fcaa
commit b5f90709de
91 changed files with 19775 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
DROP TABLE IF EXISTS humans;
+5
View File
@@ -0,0 +1,5 @@
CREATE TABLE humans (
id TEXT PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
created_at TIMESTAMPTZ DEFAULT NOW()
);
+2
View File
@@ -0,0 +1,2 @@
DROP TABLE IF EXISTS network_members;
DROP TABLE IF EXISTS networks;
+13
View File
@@ -0,0 +1,13 @@
CREATE TABLE networks (
id TEXT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
admin_email VARCHAR(255) NOT NULL,
created_at TIMESTAMPTZ DEFAULT NOW()
);
CREATE TABLE network_members (
network_id TEXT NOT NULL REFERENCES networks(id) ON DELETE CASCADE,
email VARCHAR(255) NOT NULL,
joined_at TIMESTAMPTZ DEFAULT NOW(),
PRIMARY KEY (network_id, email)
);
@@ -0,0 +1,3 @@
ALTER TABLE networks
DROP COLUMN IF EXISTS open_stream_capacity,
DROP COLUMN IF EXISTS open_stream_count;
@@ -0,0 +1,3 @@
ALTER TABLE networks
ADD COLUMN open_stream_capacity INTEGER NOT NULL DEFAULT 5,
ADD COLUMN open_stream_count INTEGER NOT NULL DEFAULT 0;
+4
View File
@@ -0,0 +1,4 @@
DROP TABLE IF EXISTS particle_members;
DROP TABLE IF EXISTS particles;
DROP TYPE IF EXISTS visibility_mode;
DROP TYPE IF EXISTS particle_type;
+30
View File
@@ -0,0 +1,30 @@
CREATE TYPE particle_type AS ENUM (
'stream', 'folder', 'media', 'file', 'text', 'quest', 'paper', 'think'
);
CREATE TYPE visibility_mode AS ENUM ('network_all', 'custom');
CREATE TABLE particles (
id TEXT PRIMARY KEY,
type particle_type NOT NULL,
network_id TEXT NOT NULL REFERENCES networks(id) ON DELETE CASCADE,
parent_id TEXT REFERENCES particles(id) ON DELETE CASCADE,
created_by_email VARCHAR(255) NOT NULL,
visibility visibility_mode NOT NULL DEFAULT 'network_all',
data JSONB NOT NULL DEFAULT '{}',
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE particle_members (
particle_id TEXT NOT NULL REFERENCES particles(id) ON DELETE CASCADE,
email VARCHAR(255) NOT NULL,
added_at TIMESTAMPTZ DEFAULT NOW(),
PRIMARY KEY (particle_id, email)
);
-- Indexes
CREATE INDEX idx_particles_parent_updated ON particles(parent_id, updated_at DESC);
CREATE INDEX idx_particles_network_root ON particles(network_id, updated_at DESC) WHERE parent_id IS NULL;
CREATE INDEX idx_particles_open_streams ON particles(network_id) WHERE type = 'stream' AND data->>'status' = 'open';
CREATE INDEX idx_particle_members_email ON particle_members(email, particle_id);
+2
View File
@@ -0,0 +1,2 @@
DROP INDEX IF EXISTS idx_depot_objects_orphaned;
DROP TABLE IF EXISTS depot_objects;
+13
View File
@@ -0,0 +1,13 @@
CREATE TABLE depot_objects (
id TEXT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
content_type VARCHAR(255) NOT NULL,
content_length BIGINT NOT NULL,
bucket_name VARCHAR(255) NOT NULL,
object_key TEXT NOT NULL,
contains_content BOOLEAN NOT NULL DEFAULT FALSE,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_depot_objects_orphaned
ON depot_objects(created_at) WHERE contains_content = FALSE;
@@ -0,0 +1,4 @@
DROP INDEX IF EXISTS idx_particle_acks_particle;
DROP INDEX IF EXISTS idx_particle_seen_email;
DROP TABLE IF EXISTS particle_acks;
DROP TABLE IF EXISTS particle_seen;
@@ -0,0 +1,21 @@
-- Seen tracking: private per-user state
CREATE TABLE particle_seen (
particle_id TEXT NOT NULL REFERENCES particles(id) ON DELETE CASCADE,
email VARCHAR(255) NOT NULL,
seen_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
PRIMARY KEY (particle_id, email)
);
-- Ack tracking: public, visible to others
CREATE TABLE particle_acks (
particle_id TEXT NOT NULL REFERENCES particles(id) ON DELETE CASCADE,
email VARCHAR(255) NOT NULL,
acked_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
PRIMARY KEY (particle_id, email)
);
-- Index for bulk "which particles has this user seen?"
CREATE INDEX idx_particle_seen_email ON particle_seen(email, particle_id);
-- Index for "who acked this particle?"
CREATE INDEX idx_particle_acks_particle ON particle_acks(particle_id);
@@ -0,0 +1,2 @@
-- PostgreSQL does not support removing enum values.
-- To reverse: UPDATE particles SET visibility = 'network_all' WHERE visibility = 'inherited';
@@ -0,0 +1 @@
ALTER TYPE visibility_mode ADD VALUE 'inherited';