diff --git a/db/migration/20210625223901_add_referential_integrity_to_user_props.go b/db/migration/20210625223901_add_referential_integrity_to_user_props.go new file mode 100644 index 000000000..4bdeaf097 --- /dev/null +++ b/db/migration/20210625223901_add_referential_integrity_to_user_props.go @@ -0,0 +1,38 @@ +package migrations + +import ( + "database/sql" + + "github.com/pressly/goose" +) + +func init() { + goose.AddMigration(upAddReferentialIntegrityToUserProps, downAddReferentialIntegrityToUserProps) +} + +func upAddReferentialIntegrityToUserProps(tx *sql.Tx) error { + _, err := tx.Exec(` +create table user_props_dg_tmp +( + user_id varchar not null + constraint user_props_user_id_fk + references user + on update cascade on delete cascade, + key varchar not null, + value varchar, + constraint user_props_pk + primary key (user_id, key) +); + +insert into user_props_dg_tmp(user_id, key, value) select user_id, key, value from user_props; + +drop table user_props; + +alter table user_props_dg_tmp rename to user_props; +`) + return err +} + +func downAddReferentialIntegrityToUserProps(tx *sql.Tx) error { + return nil +}