aboutsummaryrefslogtreecommitdiffstats
path: root/filamento/migrations/20240113011930_luz.sql
diff options
context:
space:
mode:
authorLibravatar cel 🌸 <cel@bunny.garden>2025-04-17 17:30:22 +0100
committerLibravatar cel 🌸 <cel@bunny.garden>2025-04-17 17:30:22 +0100
commit61b755c890dcaa66daa35942ca87cc00269b0fe9 (patch)
tree36190a844cfef474d5e11fe473db462bb4a4d135 /filamento/migrations/20240113011930_luz.sql
parent26d0ee51e232b793bc83ba565c0e9ab820d8d0db (diff)
downloadluz-wasm.tar.gz
luz-wasm.tar.bz2
luz-wasm.zip
feat(filamento): full wasm support by switching to rusqlitewasm
Diffstat (limited to 'filamento/migrations/20240113011930_luz.sql')
-rw-r--r--filamento/migrations/20240113011930_luz.sql141
1 files changed, 0 insertions, 141 deletions
diff --git a/filamento/migrations/20240113011930_luz.sql b/filamento/migrations/20240113011930_luz.sql
deleted file mode 100644
index c2f35dd..0000000
--- a/filamento/migrations/20240113011930_luz.sql
+++ /dev/null
@@ -1,141 +0,0 @@
-PRAGMA foreign_keys = on;
-
--- a user jid will never change, only a chat user will change
--- TODO: avatar, nick, etc.
-create table users(
- -- TODO: enforce bare jid
- jid text primary key not null,
- nick text,
- avatar text,
- -- can receive presence status from non-contacts
- cached_status_message text
- -- TODO: last_seen
-);
-
--- -- links to messages, jabber users, stores jid history, etc.
--- create table identities(
--- id text primary key not null
--- );
-
--- create table identities_users(
--- id text not null,
--- jid text not null,
--- -- whichever has the newest timestamp is the active one.
--- -- what to do when somebody moves, but then the old jid is used again without having explicitly moved back? create new identity to assign ownership to?
--- -- merging of identities?
--- activated_timestamp not null,
--- foreign key(id) references identities(id),
--- foreign key(jid) references users(jid),
--- primary key(activated timestamp, id, jid)
--- );
-
-create table resources(
- bare_jid text not null,
- resource text not null,
- foreign key(bare_jid) references users(jid),
- primary key(bare_jid, resource)
-);
-
--- enum for subscription state
-create table subscription(
- state text primary key not null
-);
-
-insert into subscription ( state ) values ('none'), ('pending-out'), ('pending-in'), ('pending-in-pending-out'), ('only-out'), ('only-in'), ('out-pending-in'), ('in-pending-out'), ('buddy');
-
--- a roster contains users, with client-set nickname
-CREATE TABLE roster(
- user_jid text primary key not null,
- name TEXT,
- subscription text not null,
- foreign key(subscription) references subscription(state),
- foreign key(user_jid) references users(jid)
-);
-
-create table groups(
- group_name text primary key not null
-);
-
-create table groups_roster(
- group_name text not null,
- contact_jid text not null,
- foreign key(group_name) references groups(group_name),
- foreign key(contact_jid) references roster(user_jid) on delete cascade,
- primary key(group_name, contact_jid)
-);
-
--- chat includes reference to user jid chat is with
--- specifically for dms, groups should be different
--- can send chat message to user (creating a new chat if not already exists)
-create table chats (
- id text primary key not null,
- have_chatted bool not null,
- correspondent text not null unique,
- foreign key(correspondent) references users(jid)
-);
-
--- enum for subscription state
-create table delivery(
- state text primary key not null
-);
-
-insert into delivery ( state ) values ('sending'), ('written'), ('sent'), ('delivered'), ('read'), ('failed'), ('queued');
-
--- messages include reference to chat they are in, and who sent them.
-create table messages (
- id text primary key not null,
- body text,
- -- delivery is nullable as only messages sent by the user are markable
- delivery text,
- chat_id text not null,
- -- TODO: channel stuff
- -- channel_id uuid,
- -- check ((chat_id == null) <> (channel_id == null)),
- -- check ((chat_id == null) or (channel_id == null)),
- -- user is the current "owner" of the message
- -- TODO: queued messages offline
- -- TODO: timestamp
- timestamp text not null,
-
- -- TODO: icky
- -- the user to show it coming from (not necessarily the original sender)
- -- from_identity text not null,
- -- original sender details (only from jabber supported for now)
- from_jid text not null,
- -- resource can be null
- from_resource text,
- -- check (from_jid != original_sender),
-
- foreign key(delivery) references delivery(state),
- -- TODO: from can be either a jid, a moved jid (for when a contact moves, save original sender jid/user but link to new user), or imported (from another service (save details), linked to new user)
- -- TODO: read bool not null,
- foreign key(chat_id) references chats(id) on delete cascade,
- -- foreign key(from_identity) references identities(id),
- foreign key(from_jid) references users(jid),
- foreign key(from_jid, from_resource) references resources(bare_jid, resource)
-);
-
--- enum for subscription state
-create table show (
- state text primary key not null
-);
-
-insert into show ( state ) values ('away'), ('chat'), ('do-not-disturb'), ('extended-away');
-
-create table cached_status (
- id integer primary key not null,
- show text,
- message text,
- foreign key(show) references show(state)
-);
-
-insert into cached_status (id) values (0);
-
-create table capability_hash_nodes (
- node text primary key not null,
- timestamp text,
- -- TODO: normalization
- capabilities text not null
-);
-
-insert into capability_hash_nodes ( node, capabilities ) values ('https://bunny.garden/filamento#mSavc/SLnHm8zazs5RlcbD/iXoc=', 'aHR0cDovL2phYmJlci5vcmcvcHJvdG9jb2wvY2Fwcx9odHRwOi8vamFiYmVyLm9yZy9wcm90b2NvbC9kaXNjbyNpbmZvH2h0dHA6Ly9qYWJiZXIub3JnL3Byb3RvY29sL2Rpc2NvI2l0ZW1zH2h0dHA6Ly9qYWJiZXIub3JnL3Byb3RvY29sL25pY2sfaHR0cDovL2phYmJlci5vcmcvcHJvdG9jb2wvbmljaytub3RpZnkfHGNsaWVudB9wYx8fZmlsYW1lbnRvIDAuMS4wHx4cHA==');