mirror of https://gitlab.com/litecord/litecord.git
migration: some fixes here and there
- 0_base.sql: make it rerunnable by dropping hardcoded constraints
This commit is contained in:
parent
1617c87f03
commit
e03dada1a7
|
|
@ -101,11 +101,13 @@ async def _ensure_changelog(app, ctx):
|
|||
# NOTE: this is a migration breakage,
|
||||
# only applying to databases that had their first migration
|
||||
# before 4 april 2019 (more on BREAK)
|
||||
|
||||
# if migration_log is empty, just assume this is new
|
||||
first = await app.db.fetchval("""
|
||||
SELECT apply_ts FROM migration_log
|
||||
ORDER BY apply_ts ASC
|
||||
LIMIT 1
|
||||
""")
|
||||
""") or BREAK
|
||||
if first < BREAK:
|
||||
log.info('deleting migration_log due to migration structure change')
|
||||
await app.db.execute("DROP TABLE migration_log")
|
||||
|
|
@ -170,7 +172,7 @@ async def _check_base(app) -> bool:
|
|||
await app.db.execute(f"""
|
||||
SELECT * FROM {table} LIMIT 0
|
||||
""")
|
||||
except asyncpg.DuplicateTableError:
|
||||
except asyncpg.UndefinedTableError:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
|
@ -204,7 +206,7 @@ async def migrate_cmd(app, _args):
|
|||
if has_base:
|
||||
await _insert_log(app, 0, 'migration setup (from existing)')
|
||||
else:
|
||||
await apply_migration(app, 0)
|
||||
await apply_migration(app, ctx.scripts[0])
|
||||
|
||||
# after that check the current local_change
|
||||
# and the latest migration to be run
|
||||
|
|
|
|||
|
|
@ -27,18 +27,8 @@ CREATE TABLE IF NOT EXISTS user_conn_apps (
|
|||
name text NOT NULL
|
||||
);
|
||||
|
||||
INSERT INTO user_conn_apps (id, name) VALUES (0, 'Twitch');
|
||||
INSERT INTO user_conn_apps (id, name) VALUES (1, 'Youtube');
|
||||
INSERT INTO user_conn_apps (id, name) VALUES (2, 'Steam');
|
||||
INSERT INTO user_conn_apps (id, name) VALUES (3, 'Reddit');
|
||||
INSERT INTO user_conn_apps (id, name) VALUES (4, 'Facebook');
|
||||
INSERT INTO user_conn_apps (id, name) VALUES (5, 'Twitter');
|
||||
INSERT INTO user_conn_apps (id, name) VALUES (6, 'Spotify');
|
||||
INSERT INTO user_conn_apps (id, name) VALUES (7, 'XBOX');
|
||||
INSERT INTO user_conn_apps (id, name) VALUES (8, 'Battle.net');
|
||||
INSERT INTO user_conn_apps (id, name) VALUES (9, 'Skype');
|
||||
INSERT INTO user_conn_apps (id, name) VALUES (10, 'League of Legends');
|
||||
|
||||
-- there was a chain of INSERTs here with hardcoded names and stuff.
|
||||
-- removed it because we aren't in the best business of hardcoding.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS instance_invites (
|
||||
code text PRIMARY KEY,
|
||||
|
|
@ -607,6 +597,7 @@ CREATE TABLE IF NOT EXISTS channel_overwrites (
|
|||
-- columns in private keys can't have NULL values,
|
||||
-- so instead we use a custom constraint with UNIQUE
|
||||
|
||||
ALTER TABLE channel_overwrites DROP CONSTRAINT IF EXISTS channel_overwrites_uniq;
|
||||
ALTER TABLE channel_overwrites ADD CONSTRAINT channel_overwrites_uniq
|
||||
UNIQUE (channel_id, target_role, target_user);
|
||||
|
||||
|
|
@ -688,6 +679,8 @@ CREATE TABLE IF NOT EXISTS message_reactions (
|
|||
emoji_text text
|
||||
);
|
||||
|
||||
-- unique constraint over multiple columns instead of a primary key
|
||||
ALTER TABLE message_reactions DROP CONSTRAINT IF EXISTS message_reactions_main_uniq;
|
||||
ALTER TABLE message_reactions ADD CONSTRAINT message_reactions_main_uniq
|
||||
UNIQUE (message_id, user_id, emoji_id, emoji_text);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue