diff options
| author | EuAndreh <eu@euandre.org> | 2026-04-24 14:47:11 -0300 |
|---|---|---|
| committer | EuAndreh <eu@euandre.org> | 2026-04-24 14:47:11 -0300 |
| commit | ec4b8a270bd2ab6b72efcc03be78006fe100f5f6 (patch) | |
| tree | 7db283b1fb360ce0f1f9addac2524e62dc0a13fb /src/schema.edn | |
| parent | Implement core IRC commands: QUIT, AWAY, NOTICE, WHOIS, USERHOST (diff) | |
| download | papod-ec4b8a270bd2ab6b72efcc03be78006fe100f5f6.tar.gz papod-ec4b8a270bd2ab6b72efcc03be78006fe100f5f6.tar.xz | |
m
Diffstat (limited to 'src/schema.edn')
| -rw-r--r-- | src/schema.edn | 402 |
1 files changed, 402 insertions, 0 deletions
diff --git a/src/schema.edn b/src/schema.edn new file mode 100644 index 0000000..61cf5fd --- /dev/null +++ b/src/schema.edn @@ -0,0 +1,402 @@ +[#:db{:ident :papod.network/id, + :valueType :db.type/uuid, + :cardinality :db.cardinality/one, + :unique :db.unique/identity} + {:db/ident :papod.network/name, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db/unique :db.unique/value, + :db.attr/preds papod/non-empty?} + #:db{:ident :papod.network/description, + :valueType :db.type/string, + :cardinality :db.cardinality/one} + {:db/ident :papod.network/type, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db/index true, + :db.attr/preds papod/non-empty?} + #:db{:ident :papod.network/created-at, + :valueType :db.type/instant, + :cardinality :db.cardinality/one} + #:db{:ident :papod.member/id, + :valueType :db.type/uuid, + :cardinality :db.cardinality/one, + :unique :db.unique/identity} + #:db{:ident :papod.member/network, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + {:db/ident :papod.member/nick, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db/index true, + :db.attr/preds papod/non-empty?} + {:db/ident :papod.member/status, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db.attr/preds papod/non-empty?} + #:db{:ident :papod.member/joined-at, + :valueType :db.type/instant, + :cardinality :db.cardinality/one} + #:db{:ident :papod.member/network+nick, + :valueType :db.type/tuple, + :cardinality :db.cardinality/one, + :unique :db.unique/value, + :tupleAttrs [:papod.member/network :papod.member/nick]} + #:db{:ident :papod.member-role/id, + :valueType :db.type/uuid, + :cardinality :db.cardinality/one, + :unique :db.unique/identity} + #:db{:ident :papod.member-role/member, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + {:db/ident :papod.member-role/role, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db.attr/preds papod/non-empty?} + #:db{:ident :papod.member-role/member+role, + :valueType :db.type/tuple, + :cardinality :db.cardinality/one, + :unique :db.unique/value, + :tupleAttrs [:papod.member-role/member :papod.member-role/role]} + #:db{:ident :papod.channel/id, + :valueType :db.type/uuid, + :cardinality :db.cardinality/one, + :unique :db.unique/identity} + #:db{:ident :papod.channel/network, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + #:db{:ident :papod.channel/name, + :valueType :db.type/string, + :cardinality :db.cardinality/one, + :unique :db.unique/value} + #:db{:ident :papod.channel.type/public} + #:db{:ident :papod.channel.type/private} + #:db{:ident :papod.channel.type/unlisted} + #:db{:ident :papod.channel/type, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + #:db{:ident :papod.channel/label, + :valueType :db.type/string, + :cardinality :db.cardinality/one} + #:db{:ident :papod.channel/description, + :valueType :db.type/string, + :cardinality :db.cardinality/one} + #:db{:ident :papod.channel/created-at, + :valueType :db.type/instant, + :cardinality :db.cardinality/one} + {:db/ident :papod.channel/owner, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db.attr/preds papod/non-empty?} + #:db{:ident :papod.channel/topic, + :valueType :db.type/string, + :cardinality :db.cardinality/one} + #:db{:ident :papod.channel/last-event-seq, + :valueType :db.type/long, + :cardinality :db.cardinality/one} + #:db{:ident :papod.access/id, + :valueType :db.type/uuid, + :cardinality :db.cardinality/one, + :unique :db.unique/identity} + #:db{:ident :papod.access/channel, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + {:db/ident :papod.access/nick, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db/index true, + :db.attr/preds papod/non-empty?} + {:db/ident :papod.access/level, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db.attr/preds papod/non-empty?} + #:db{:ident :papod.access/channel+nick+level, + :valueType :db.type/tuple, + :cardinality :db.cardinality/one, + :unique :db.unique/value, + :tupleAttrs + [:papod.access/channel :papod.access/nick :papod.access/level]} + #:db{:ident :papod.memo/id, + :valueType :db.type/uuid, + :cardinality :db.cardinality/one, + :unique :db.unique/identity} + {:db/ident :papod.memo/from, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db.attr/preds papod/non-empty?} + {:db/ident :papod.memo/to, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db/index true, + :db.attr/preds papod/non-empty?} + {:db/ident :papod.memo/content, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db.attr/preds papod/non-empty?} + #:db{:ident :papod.memo/created-at, + :valueType :db.type/instant, + :cardinality :db.cardinality/one} + #:db{:ident :papod.memo/read?, + :valueType :db.type/boolean, + :cardinality :db.cardinality/one} + #:db{:ident :papod.membership/id, + :valueType :db.type/uuid, + :cardinality :db.cardinality/one, + :unique :db.unique/identity} + #:db{:ident :papod.membership/channel, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + {:db/ident :papod.membership/nick, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db/index true, + :db.attr/preds papod/non-empty?} + #:db{:ident :papod.membership/joined-at, + :valueType :db.type/instant, + :cardinality :db.cardinality/one} + #:db{:ident :papod.membership/channel+nick, + :valueType :db.type/tuple, + :cardinality :db.cardinality/one, + :unique :db.unique/value, + :tupleAttrs [:papod.membership/channel :papod.membership/nick]} + #:db{:ident :papod.session/id, + :valueType :db.type/uuid, + :cardinality :db.cardinality/one, + :unique :db.unique/identity} + {:db/ident :papod.session/nick, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db.attr/preds papod/non-empty?} + #:db{:ident :papod.session/created-at, + :valueType :db.type/instant, + :cardinality :db.cardinality/one} + #:db{:ident :papod.session/finished-at, + :valueType :db.type/instant, + :cardinality :db.cardinality/one} + #:db{:ident :papod.connection/id, + :valueType :db.type/uuid, + :cardinality :db.cardinality/one, + :unique :db.unique/identity} + #:db{:ident :papod.connection/process, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + #:db{:ident :papod.connection/created-at, + :valueType :db.type/instant, + :cardinality :db.cardinality/one} + #:db{:ident :papod.connection/finished-at, + :valueType :db.type/instant, + :cardinality :db.cardinality/one} + #:db{:ident :papod.logon/id, + :valueType :db.type/uuid, + :cardinality :db.cardinality/one, + :unique :db.unique/identity} + #:db{:ident :papod.logon/session, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + #:db{:ident :papod.logon/connection, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + #:db{:ident :papod.logon/session+connection, + :valueType :db.type/tuple, + :cardinality :db.cardinality/one, + :unique :db.unique/value, + :tupleAttrs [:papod.logon/session :papod.logon/connection]} + #:db{:ident :papod.process/id, + :valueType :db.type/uuid, + :cardinality :db.cardinality/one, + :unique :db.unique/identity} + #:db{:ident :papod.process/pid, + :valueType :db.type/long, + :cardinality :db.cardinality/one} + #:db{:ident :papod.process/hostname, + :valueType :db.type/string, + :cardinality :db.cardinality/one} + #:db{:ident :papod.process/started-at, + :valueType :db.type/instant, + :cardinality :db.cardinality/one} + #:db{:ident :papod.event/id, + :valueType :db.type/uuid, + :cardinality :db.cardinality/one, + :unique :db.unique/identity} + #:db{:ident :papod.event/channel, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + {:db/ident :papod.event/target-nick, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db/index true, + :db.attr/preds papod/non-empty?} + {:db/ident :papod.event/type, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db/index true, + :db.attr/preds papod/non-empty?} + {:db/ident :papod.event/source-nick, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db.attr/preds papod/non-empty?} + #:db{:ident :papod.event/payload, + :valueType :db.type/string, + :cardinality :db.cardinality/one} + #:db{:ident :papod.event/created-at, + :valueType :db.type/instant, + :cardinality :db.cardinality/one} + #:db{:ident :papod.event/seq, + :valueType :db.type/long, + :cardinality :db.cardinality/one, + :index true} + #:db{:ident :papod.event/reply-to, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + #:db{:ident :papod.event/edit-of, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + #:db{:ident :papod.event/delete-of, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + #:db{:ident :papod.reaction/id, + :valueType :db.type/uuid, + :cardinality :db.cardinality/one, + :unique :db.unique/identity} + #:db{:ident :papod.reaction/event, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + {:db/ident :papod.reaction/nick, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db.attr/preds papod/non-empty?} + {:db/ident :papod.reaction/emoji, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db.attr/preds papod/non-empty?} + #:db{:ident :papod.reaction/event+nick+emoji, + :valueType :db.type/tuple, + :cardinality :db.cardinality/one, + :unique :db.unique/value, + :tupleAttrs + [:papod.reaction/event + :papod.reaction/nick + :papod.reaction/emoji]} + #:db{:ident :papod.read-marker/channel, + :valueType :db.type/ref, + :cardinality :db.cardinality/one, + :index true} + {:db/ident :papod.read-marker/nick, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db/index true, + :db.attr/preds papod/non-empty?} + {:db/ident :papod.read-marker/timestamp, + :db/valueType :db.type/string, + :db/cardinality :db.cardinality/one, + :db.attr/preds papod/non-empty?} + #:db{:ident :papod.read-marker/channel+nick, + :valueType :db.type/tuple, + :cardinality :db.cardinality/one, + :unique :db.unique/identity, + :tupleAttrs [:papod.read-marker/channel :papod.read-marker/nick]} + {:db/ident :papod.network/attrs, + :db.entity/attrs + #{:papod.network/id + :papod.network/type + :papod.network/created-at + :papod.network/name}} + {:db/ident :papod.member/attrs, + :db.entity/attrs + #{:papod.member/id + :papod.member/network + :papod.member/joined-at + :papod.member/status + :papod.member/nick}} + {:db/ident :papod.member-role/attrs, + :db.entity/attrs + #{:papod.member-role/id + :papod.member-role/role + :papod.member-role/member}} + {:db/ident :papod.channel/attrs, + :db.entity/attrs + #{:papod.channel/type + :papod.channel/id + :papod.channel/network + :papod.channel/created-at}} + {:db/ident :papod.access/attrs, + :db.entity/attrs + #{:papod.access/nick + :papod.access/channel + :papod.access/level + :papod.access/id}} + {:db/ident :papod.memo/attrs, + :db.entity/attrs + #{:papod.memo/id + :papod.memo/created-at + :papod.memo/from + :papod.memo/content + :papod.memo/to + :papod.memo/read?}} + {:db/ident :papod.membership/attrs, + :db.entity/attrs + #{:papod.membership/id + :papod.membership/nick + :papod.membership/joined-at + :papod.membership/channel}} + {:db/ident :papod.session/attrs, + :db.entity/attrs + #{:papod.session/created-at :papod.session/id :papod.session/nick}} + {:db/ident :papod.process/attrs, + :db.entity/attrs + #{:papod.process/started-at + :papod.process/hostname + :papod.process/pid + :papod.process/id}} + {:db/ident :papod.connection/attrs, + :db.entity/attrs + #{:papod.connection/process + :papod.connection/created-at + :papod.connection/id}} + {:db/ident :papod.logon/attrs, + :db.entity/attrs + #{:papod.logon/connection :papod.logon/session :papod.logon/id}} + {:db/ident :papod.event/attrs, + :db.entity/attrs + #{:papod.event/type + :papod.event/source-nick + :papod.event/id + :papod.event/created-at}} + {:db/ident :papod.reaction/attrs, + :db.entity/attrs + #{:papod.reaction/emoji + :papod.reaction/nick + :papod.reaction/id + :papod.reaction/event}} + #:db{:ident :papod.event/add-seq, + :fn + {:lang :clojure, + :imports [], + :requires [], + :params [db event-eid channel-uuid], + :code + "^{:line 38, :column 6} (let [channel-eid ^{:line 38, :column 24} (or ^{:line 38, :column 28} (ffirst ^{:line 39, :column 29} (d/q (quote {:find [?e], :in [$ ?id], :where [[?e :papod.channel/id ?id]]}) db channel-uuid)) ^{:line 43, :column 28} (d/tempid :db.part/user)) last-seq ^{:line 44, :column 24} (or ^{:line 44, :column 28} (:papod.channel/last-event-seq ^{:line 45, :column 29} (d/entity db channel-eid)) 0) new-seq ^{:line 46, :column 24} (inc last-seq)] [[:db/add channel-eid :papod.channel/id channel-uuid] [:db/add channel-eid :papod.channel/last-event-seq new-seq] [:db/add event-eid :papod.event/seq new-seq]])", + :fnref #<Delay@65b5b5ed: :not-delivered>}} + #:db{:ident :papod.access/ensure-unique, + :fn + {:lang :clojure, + :imports [], + :requires [], + :params [db channel nick level], + :code + "^{:line 56, :column 6} (when ^{:line 56, :column 12} (seq ^{:line 57, :column 13} (d/q (quote {:find [?a], :in [$ ?ch ?n ?l], :where [[?a :papod.access/channel ?ch] [?a :papod.access/nick ?n] [?a :papod.access/level ?l]]}) db channel nick level)) ^{:line 63, :column 8} (d/cancel #:cognitect.anomalies{:category :cognitect.anomalies/conflict, :message \"Duplicate access entry\"}))", + :fnref #<Delay@df432ec: :not-delivered>}}] |
