|
|
|
|
|
by daniel-ash
1041 days ago
|
|
Something I'd like to see with local development and the Supabase CLI is timing around inserting seed data, handling triggers, default data. I ran into a bunch of issues getting a nice local dev setup. For example seeding data after migrations is not helpful (and will fail) if your latest migration is destructive - you want to seed data and then run the next migration. For context, my local dev process is now as follows: 1. supabase db reset with seed.sql empty
2. run a preseed script that disables any triggers and removes default data that has been previously seeded in migrations
3. seed data
4. reenable triggers
5. execute any working migration files that I keep in a separate file I've written a script that handles all this, so I have mostly solved this for myself - but this was mostly due to running into a bunch of challenges setting up my local env to work well. Very open to general comments on approach too - perhaps there is a simpler way |
|
We have added supabase migration up [0] command that runs only pending migrations (ie. those that don't exist in local db's migration history table). You can use that to test destructive migration locally with data from seed.sql.
After testing, you want to update your seed.sql with a data-only dump [1] from your local db. That would make CI happy with both the new migration and the new seed file.
> 2. run a preseed script that disables any triggers and removes default data that has been previously seeded in migrations
It sounds like the default data is no longer relevant for your local development. If so, I would suggest running supabase migration squash [2] to remove the default data.
To disable triggers before seeding data, you can add the following line to seed.sql [3]
SET session_replication_role = replica;
[0] https://supabase.com/docs/reference/cli/supabase-migration-u...
[1] https://supabase.com/docs/reference/cli/supabase-db-dump
[2] https://supabase.com/docs/reference/cli/supabase-migration-s...
[3] https://stackoverflow.com/questions/3942258/how-do-i-tempora...