aboutsummaryrefslogtreecommitdiff
path: root/src/Data
diff options
context:
space:
mode:
Diffstat (limited to 'src/Data')
-rw-r--r--src/Data/Device.hs31
-rw-r--r--src/Data/EventFilter.hs33
-rw-r--r--src/Data/Filter.hs35
-rw-r--r--src/Data/RoomEventFilter.hs39
-rw-r--r--src/Data/RoomFilter.hs36
-rw-r--r--src/Data/User.hs1
6 files changed, 175 insertions, 0 deletions
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
|]