@@ -124,11 +124,11 @@ import Squeal.PostgreSQL
124124
125125-- | A `Migration` should contain an inverse pair of
126126-- `up` and `down` instructions and a unique `name`.
127−data Migration io schema0 schema1 = Migration
127+data Migration io db0 db1 = Migration
128128 { name :: Text -- ^ The `name` of a `Migration`.
129129 -- Each `name` in a `Migration` should be unique.
130− , up :: PQ schema0 schema1 io () -- ^ The `up` instruction of a `Migration`.
131− , down :: PQ schema1 schema0 io () -- ^ The `down` instruction of a `Migration`.
130+ , up :: PQ db0 db1 io () -- ^ The `up` instruction of a `Migration`.
131+ , down :: PQ db1 db0 io () -- ^ The `down` instruction of a `Migration`.
132132 }
133133
134134-- | Run `Migration`s by creating the `MigrationsTable`
@@ -137,10 +137,10 @@ data Migration io schema0 schema1 = Migration
137137-- execute the `Migration` and insert its row in the `MigrationsTable`.
138138migrateUp
139139 :: MonadBaseControl IO io
140− => AlignedList (Migration io) schema0 schema1 -- ^ migrations to run
140+ => AlignedList (Migration io) db0 db1 -- ^ migrations to run
141141 -> PQ
142− ("schema_migrations" ::: 'Table MigrationsTable ': schema0)
143− ("schema_migrations" ::: 'Table MigrationsTable ': schema1)
142+ ("migrations" ::: MigrationsSchema ': db0)
143+ ("migrations" ::: MigrationsSchema ': db1)
144144 io ()
145145migrateUp migration =
146146 define createMigrations
@@ -150,10 +150,10 @@ migrateUp migration =
150150
151151 upMigrations
152152 :: MonadBaseControl IO io
153− => AlignedList (Migration io) schema0 schema1
153+ => AlignedList (Migration io) db0 db1
154154 -> PQ
155− ("schema_migrations" ::: 'Table MigrationsTable ': schema0)
156− ("schema_migrations" ::: 'Table MigrationsTable ': schema1)
155+ ("migrations" ::: MigrationsSchema ': db0)
156+ ("migrations" ::: MigrationsSchema ': db1)
157157 io ()
158158 upMigrations = \case
159159 Done -> return ()
@@ -161,9 +161,9 @@ migrateUp migration =
161161
162162 upMigration
163163 :: MonadBase IO io
164− => Migration io schema0 schema1 -> PQ
165− ("schema_migrations" ::: 'Table MigrationsTable ': schema0)
166− ("schema_migrations" ::: 'Table MigrationsTable ': schema1)
164+ => Migration io db0 db1 -> PQ
165+ ("migrations" ::: MigrationsSchema ': db0)
166+ ("migrations" ::: MigrationsSchema ': db1)
167167 io ()
168168 upMigration step =
169169 queryExecuted step
@@ -178,9 +178,9 @@ migrateUp migration =
178178
179179 queryExecuted
180180 :: MonadBase IO io
181− => Migration io schema0 schema1 -> PQ
182− ("schema_migrations" ::: 'Table MigrationsTable ': schema0)
183− ("schema_migrations" ::: 'Table MigrationsTable ': schema0)
181+ => Migration io db0 db1 -> PQ
182+ ("migrations" ::: MigrationsSchema ': db0)
183+ ("migrations" ::: MigrationsSchema ': db0)
184184 io Row
185185 queryExecuted step = do
186186 result <- runQueryParams selectMigration (Only (name step))
@@ -193,10 +193,10 @@ migrateUp migration =
193193-- rewind the `Migration` and delete its row in the `MigrationsTable`.
194194migrateDown
195195 :: MonadBaseControl IO io
196− => AlignedList (Migration io) schema0 schema1 -- ^ migrations to rewind
196+ => AlignedList (Migration io) db0 db1 -- ^ migrations to rewind
197197 -> PQ
198− ("schema_migrations" ::: 'Table MigrationsTable ': schema1)
199− ("schema_migrations" ::: 'Table MigrationsTable ': schema0)
198+ ("migrations" ::: MigrationsSchema ': db1)
199+ ("migrations" ::: MigrationsSchema ': db0)
200200 io ()
201201migrateDown migrations =
202202 define createMigrations
@@ -206,9 +206,9 @@ migrateDown migrations =
206206
207207 downMigrations
208208 :: MonadBaseControl IO io
209− => AlignedList (Migration io) schema0 schema1 -> PQ
210− ("schema_migrations" ::: 'Table MigrationsTable ': schema1)
211− ("schema_migrations" ::: 'Table MigrationsTable ': schema0)
209+ => AlignedList (Migration io) db0 db1 -> PQ
210+ ("migrations" ::: MigrationsSchema ': db1)
211+ ("migrations" ::: MigrationsSchema ': db0)
212212 io ()
213213 downMigrations = \case
214214 Done -> return ()
@@ -216,9 +216,9 @@ migrateDown migrations =
216216
217217 downMigration
218218 :: MonadBase IO io
219− => Migration io schema0 schema1 -> PQ
220− ("schema_migrations" ::: 'Table MigrationsTable ': schema1)
221− ("schema_migrations" ::: 'Table MigrationsTable ': schema0)
219+ => Migration io db0 db1 -> PQ
220+ ("migrations" ::: MigrationsSchema ': db1)
221+ ("migrations" ::: MigrationsSchema ': db0)
222222 io ()
223223 downMigration step =
224224 queryExecuted step
@@ -233,9 +233,9 @@ migrateDown migrations =
233233
234234 queryExecuted
235235 :: MonadBase IO io
236− => Migration io schema0 schema1 -> PQ
237− ("schema_migrations" ::: 'Table MigrationsTable ': schema1)
238− ("schema_migrations" ::: 'Table MigrationsTable ': schema1)
236+ => Migration io db0 db1 -> PQ
237+ ("migrations" ::: MigrationsSchema ': db1)
238+ ("migrations" ::: MigrationsSchema ': db1)
239239 io Row
240240 queryExecuted step = do
241241 result <- runQueryParams selectMigration (Only (name step))
@@ -258,12 +258,14 @@ type MigrationsTable =
258258 , "executed_at" ::: 'Def :=> 'NotNull 'PGtimestamptz
259259 ]
260260
261+type MigrationsSchema = '["schema_migrations" ::: 'Table MigrationsTable]
262+
261263-- | Creates a `MigrationsTable` if it does not already exist.
262264createMigrations
263− :: Has "schema_migrations" schema ('Table MigrationsTable)
264− => Definition schema schema
265+ :: Has "migrations" db MigrationsSchema
266+ => Definition db db
265267createMigrations =
266− createTableIfNotExists #schema_migrations
268+ createTableIfNotExists (#migrations ! #schema_migrations)
267269 ( (text & notNullable) `as` #name :*
268270 (timestampWithTimeZone & notNullable & default_ currentTimestamp)
269271 `as` #executed_at )
@@ -271,25 +273,25 @@ createMigrations =
271273
272274-- | Inserts a `Migration` into the `MigrationsTable`
273275insertMigration
274− :: Has "schema_migrations" schema ('Table MigrationsTable)
275− => Manipulation schema '[ 'NotNull 'PGtext] '[]
276−insertMigration = insertRow_ #schema_migrations
276+ :: Has "migrations" db MigrationsSchema
277+ => Manipulation db '[ 'NotNull 'PGtext] '[]
278+insertMigration = insertRow_ (#migrations ! #schema_migrations)
277279 ( Set (param @1) `as` #name :*
278280 Default `as` #executed_at )
279281
280282-- | Deletes a `Migration` from the `MigrationsTable`
281283deleteMigration
282− :: Has "schema_migrations" schema ('Table MigrationsTable)
283− => Manipulation schema '[ 'NotNull 'PGtext ] '[]
284−deleteMigration = deleteFrom_ #schema_migrations (#name .== param @1)
284+ :: Has "migrations" db MigrationsSchema
285+ => Manipulation db '[ 'NotNull 'PGtext ] '[]
286+deleteMigration = deleteFrom_ (#migrations ! #schema_migrations) (#name .== param @1)
285287
286288-- | Selects a `Migration` from the `MigrationsTable`, returning
287289-- the time at which it was executed.
288290selectMigration
289− :: Has "schema_migrations" schema ('Table MigrationsTable)
290− => Query schema '[ 'NotNull 'PGtext ]
291+ :: Has "migrations" db MigrationsSchema
292+ => Query db '[ 'NotNull 'PGtext ]
291293 '[ "executed_at" ::: 'NotNull 'PGtimestamptz ]
292294selectMigration = select
293295 (#executed_at `as` #executed_at)
294− ( from (table (#schema_migrations `as` #m))
296+ ( from (table ((#migrations ! #schema_migrations) `as` #m))
295297 & where_ (#name .== param @1))