DO $$
DECLARE
constraint_name text;
BEGIN
FOR constraint_name IN
SELECT con.conname
FROM pg_constraint AS con
JOIN pg_class AS rel ON rel.oid = con.conrelid
JOIN pg_namespace AS namespace ON namespace.oid = rel.relnamespace
JOIN pg_attribute AS att
ON att.attrelid = rel.oid AND att.attnum = ANY(con.conkey)
WHERE namespace.nspname = current_schema()
AND rel.relname = 'users'
AND con.contype = 'c'
AND att.attname = 'last_model_id'
LOOP
EXECUTE format('ALTER TABLE users DROP CONSTRAINT %I', constraint_name);
END LOOP;
FOR constraint_name IN
SELECT con.conname
FROM pg_constraint AS con
JOIN pg_class AS rel ON rel.oid = con.conrelid
JOIN pg_namespace AS namespace ON namespace.oid = rel.relnamespace
JOIN pg_attribute AS att
ON att.attrelid = rel.oid AND att.attnum = ANY(con.conkey)
WHERE namespace.nspname = current_schema()
AND rel.relname = 'conversations'
AND con.contype = 'c'
AND att.attname = 'model_id'
LOOP
EXECUTE format('ALTER TABLE conversations DROP CONSTRAINT %I', constraint_name);
END LOOP;
END
$$;
ALTER TABLE users
ALTER COLUMN last_model_id SET DEFAULT 'auto';
ALTER TABLE conversations
ALTER COLUMN model_id SET DEFAULT 'auto';
ALTER TABLE users
ADD CONSTRAINT users_last_model_id_slug_check
CHECK (last_model_id ~ '^[a-z0-9][a-z0-9._-]{0,127}$');
ALTER TABLE conversations
ADD CONSTRAINT conversations_model_id_slug_check
CHECK (model_id ~ '^[a-z0-9][a-z0-9._-]{0,127}$');