Skip to content
This repository was archived by the owner on Dec 14, 2025. It is now read-only.

Commit 58025ad

Browse files
committed
feat: Add Snowflake support for Beam SQL instances
1 parent 0c326a0 commit 58025ad

File tree

3 files changed

+27
-16
lines changed

3 files changed

+27
-16
lines changed

devden-stat-bot.cabal

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,9 @@ library
7171
hs-source-dirs: src
7272

7373
-- cabal-fmt: expand src
74-
exposed-modules: Model
74+
exposed-modules:
75+
Db.Snowflake
76+
Model
7577

7678
executable devden-stat-bot
7779
import: shared

src/Db/Snowflake.hs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{-# OPTIONS_GHC -Wno-orphans #-}
2+
3+
module Db.Snowflake where
4+
5+
import Calamity
6+
import Database.Beam.Backend
7+
import Database.Beam.Backend.SQL.AST
8+
import Database.Beam.Migrate
9+
import Database.Beam.Sqlite
10+
import Database.Beam.Sqlite.Syntax
11+
12+
instance HasSqlValueSyntax Value (Snowflake f) where
13+
sqlValueSyntax = Value . fromSnowflake
14+
15+
instance HasSqlValueSyntax SqliteValueSyntax (Snowflake f) where
16+
sqlValueSyntax = sqlValueSyntax . fromSnowflake
17+
18+
instance HasDefaultSqlDataType Sqlite (Snowflake f) where
19+
defaultSqlDataType _ = defaultSqlDataType (Proxy @Word64)
20+
21+
instance FromBackendRow Sqlite (Snowflake f) where
22+
fromBackendRow = Snowflake <$> fromBackendRow

src/Model.hs

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,14 @@ module Model where
55
import Database.Beam
66

77
import Calamity (Message, Snowflake (..), User)
8-
import Database.Beam.Backend
9-
import Database.Beam.Backend.SQL.AST
108
import Database.Beam.Migrate
119
import Database.Beam.Migrate.Simple
1210
import Database.Beam.Sqlite (Sqlite, runBeamSqliteDebug)
1311
import Database.Beam.Sqlite.Migrate
14-
import Database.Beam.Sqlite.Syntax
15-
import Database.SQLite.Simple hiding (field)
12+
import Database.SQLite.Simple
1613
import Shower (printer)
1714

18-
instance HasSqlValueSyntax Value (Snowflake f) where
19-
sqlValueSyntax = Value . fromSnowflake
20-
21-
instance HasSqlValueSyntax SqliteValueSyntax (Snowflake f) where
22-
sqlValueSyntax = sqlValueSyntax . fromSnowflake
23-
24-
instance HasDefaultSqlDataType Sqlite (Snowflake f) where
25-
defaultSqlDataType _ = defaultSqlDataType (Proxy @Word64)
26-
27-
instance FromBackendRow Sqlite (Snowflake f) where
28-
fromBackendRow = Snowflake <$> fromBackendRow
15+
import Db.Snowflake ()
2916

3017
data MessageT f = Message
3118
{ _messageId :: Columnar f (Snowflake Message)

0 commit comments

Comments
 (0)