From 92390201fb4170f3373005c48bb23f6e8ddb1a64 Mon Sep 17 00:00:00 2001 From: adambrangenberg Date: Mon, 19 Jan 2026 02:07:40 +0100 Subject: Database stuff --- src/Data/Device.hs | 31 +++++++++++++++++++++++++++++++ src/Data/EventFilter.hs | 33 +++++++++++++++++++++++++++++++++ src/Data/Filter.hs | 35 +++++++++++++++++++++++++++++++++++ src/Data/RoomEventFilter.hs | 39 +++++++++++++++++++++++++++++++++++++++ src/Data/RoomFilter.hs | 36 ++++++++++++++++++++++++++++++++++++ src/Data/User.hs | 1 + 6 files changed, 175 insertions(+) create mode 100644 src/Data/Device.hs create mode 100644 src/Data/EventFilter.hs create mode 100644 src/Data/Filter.hs create mode 100644 src/Data/RoomEventFilter.hs create mode 100644 src/Data/RoomFilter.hs (limited to 'src/Data') diff --git a/src/Data/Device.hs b/src/Data/Device.hs new file mode 100644 index 0000000..73dbe6d --- /dev/null +++ b/src/Data/Device.hs @@ -0,0 +1,31 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE DerivingStrategies #-} +{-# LANGUAGE StandaloneDeriving #-} +{-# LANGUAGE UndecidableInstances #-} +{-# LANGUAGE EmptyDataDecls #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE GADTs #-} +{-# LANGUAGE GeneralizedNewtypeDeriving #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE TypeOperators #-} + + +module Data.Device where + +import Database.Persist.TH +import Data.Text + +---------------------------------------------------------------------------------------------------- +share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistUpperCase| +Device + ident Text -- figure out primary keys + name Text Maybe + Primary ident + deriving Show +|] diff --git a/src/Data/EventFilter.hs b/src/Data/EventFilter.hs new file mode 100644 index 0000000..c918f65 --- /dev/null +++ b/src/Data/EventFilter.hs @@ -0,0 +1,33 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE DerivingStrategies #-} +{-# LANGUAGE StandaloneDeriving #-} +{-# LANGUAGE UndecidableInstances #-} +{-# LANGUAGE EmptyDataDecls #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE GADTs #-} +{-# LANGUAGE GeneralizedNewtypeDeriving #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE TypeOperators #-} + + +module Data.EventFilter where + +import Database.Persist.TH +import Data.Text + +---------------------------------------------------------------------------------------------------- +share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistUpperCase| +EventFilter + limit Int default=10 -- smaller datatype as to max of 50 and unsigned? + notSenders [Text] Maybe + notTypes [Text] Maybe + sender [Text] Maybe + types [Text] Maybe + deriving Show +|] diff --git a/src/Data/Filter.hs b/src/Data/Filter.hs new file mode 100644 index 0000000..ad9f6ed --- /dev/null +++ b/src/Data/Filter.hs @@ -0,0 +1,35 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE DerivingStrategies #-} +{-# LANGUAGE StandaloneDeriving #-} +{-# LANGUAGE UndecidableInstances #-} +{-# LANGUAGE EmptyDataDecls #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE GADTs #-} +{-# LANGUAGE GeneralizedNewtypeDeriving #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE TypeOperators #-} + + +module Data.Filter where + +import Database.Persist.TH +import Data.Text +import Data.EventFilter (EventFilter (..)) +import Data.RoomFilter (RoomFilter (..)) + +---------------------------------------------------------------------------------------------------- +share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistUpperCase| +Filter + accountData EventFilter Maybe + eventFields [Text] Maybe + eventFormat Text default='client' + presence EventFilter Maybe + room RoomFilter Maybe + deriving Show +|] diff --git a/src/Data/RoomEventFilter.hs b/src/Data/RoomEventFilter.hs new file mode 100644 index 0000000..0e5b7cf --- /dev/null +++ b/src/Data/RoomEventFilter.hs @@ -0,0 +1,39 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE DerivingStrategies #-} +{-# LANGUAGE StandaloneDeriving #-} +{-# LANGUAGE UndecidableInstances #-} +{-# LANGUAGE EmptyDataDecls #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE GADTs #-} +{-# LANGUAGE GeneralizedNewtypeDeriving #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE TypeOperators #-} + + +module Data.RoomEventFilter where + +import Database.Persist.TH +import Data.Text + +---------------------------------------------------------------------------------------------------- +share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistUpperCase| +RoomEventFilter + containsUrl Bool Maybe + includeRedundantMembers Bool default=False + lazyLoadMembers Bool default=False + limit Bool default=10 -- smaller datatype as to max of 50 and unsigned? + notRooms [Text] Maybe + notSenders [Text] Maybe + notTypes [Text] Maybe + rooms [Text] Maybe + senders [Text] Maybe + types [Text] Maybe + unreadThreadNotifications Bool default=False + deriving Show +|] diff --git a/src/Data/RoomFilter.hs b/src/Data/RoomFilter.hs new file mode 100644 index 0000000..f53fee7 --- /dev/null +++ b/src/Data/RoomFilter.hs @@ -0,0 +1,36 @@ +{-# LANGUAGE DataKinds #-} +{-# LANGUAGE FlexibleInstances #-} +{-# LANGUAGE DerivingStrategies #-} +{-# LANGUAGE StandaloneDeriving #-} +{-# LANGUAGE UndecidableInstances #-} +{-# LANGUAGE EmptyDataDecls #-} +{-# LANGUAGE FlexibleContexts #-} +{-# LANGUAGE GADTs #-} +{-# LANGUAGE GeneralizedNewtypeDeriving #-} +{-# LANGUAGE MultiParamTypeClasses #-} +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE TemplateHaskell #-} +{-# LANGUAGE TypeFamilies #-} +{-# LANGUAGE DeriveGeneric #-} +{-# LANGUAGE TypeOperators #-} + + +module Data.RoomFilter where + +import Database.Persist.TH +import Data.Text +import Data.RoomEventFilter (RoomEventFilter (..)) + +---------------------------------------------------------------------------------------------------- +share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistUpperCase| +RoomFilter + accountData RoomEventFilter Maybe + ephemeral RoomEventFilter Maybe + includeLeave Bool default=False + notRooms [Text] Maybe + rooms [Text] Maybe + state RoomEventFilter + timeline RoomEventFilter + deriving Show +|] diff --git a/src/Data/User.hs b/src/Data/User.hs index 9064d36..f805bd3 100644 --- a/src/Data/User.hs +++ b/src/Data/User.hs @@ -28,6 +28,7 @@ User password Text displayName Text Maybe -- Figure snake_case out avatarUrl Text Maybe -- Figure snake_case out + Primary ident UniqueName ident deriving Show |] -- cgit v1.2.3