36 lines
2.3 KiB
Go
36 lines
2.3 KiB
Go
|
|
// 功能:事务创建独立联系人资料表,不迁移其他业务表;版本:1.0.0。
|
|||
|
|
package main
|
|||
|
|
|
|||
|
|
// migrateEmergencyContacts 新增联系人表、字段注释和唯一约束,重复执行不清空数据。
|
|||
|
|
func migrateEmergencyContacts() error {
|
|||
|
|
return migrateClientColumns([]string{
|
|||
|
|
`CREATE TABLE IF NOT EXISTS user_emergency_contact (
|
|||
|
|
id bigserial PRIMARY KEY,
|
|||
|
|
identity varchar(36) NOT NULL UNIQUE,
|
|||
|
|
created_at timestamptz NOT NULL,
|
|||
|
|
updated_at timestamptz NOT NULL,
|
|||
|
|
deleted_at timestamptz,
|
|||
|
|
status integer NOT NULL DEFAULT 1 CHECK (status IN (1,3)),
|
|||
|
|
user_account_id bigint NOT NULL REFERENCES user_account(id),
|
|||
|
|
name varchar(64) NOT NULL,
|
|||
|
|
phone varchar(32) NOT NULL,
|
|||
|
|
relationship varchar(32) NOT NULL DEFAULT '',
|
|||
|
|
request_no varchar(36) NOT NULL,
|
|||
|
|
UNIQUE(user_account_id, request_no)
|
|||
|
|
)`,
|
|||
|
|
`COMMENT ON TABLE user_emergency_contact IS '用户本人紧急联系人资料;不代表设备授权或告警订阅已生效'`,
|
|||
|
|
`COMMENT ON COLUMN user_emergency_contact.id IS '数据库自增内部主键'`,
|
|||
|
|
`COMMENT ON COLUMN user_emergency_contact.identity IS '对外业务UUID标识'`,
|
|||
|
|
`COMMENT ON COLUMN user_emergency_contact.created_at IS '创建时间,也用于联系人默认排列顺序'`,
|
|||
|
|
`COMMENT ON COLUMN user_emergency_contact.updated_at IS '最后修改时间'`,
|
|||
|
|
`COMMENT ON COLUMN user_emergency_contact.deleted_at IS '软删除时间;当前删除操作使用状态归档保留幂等记录'`,
|
|||
|
|
`COMMENT ON COLUMN user_emergency_contact.status IS '状态:1=启用,3=已归档'`,
|
|||
|
|
`COMMENT ON COLUMN user_emergency_contact.user_account_id IS '资料所属用户内部主键,仅本人可读写'`,
|
|||
|
|
`COMMENT ON COLUMN user_emergency_contact.name IS '联系人姓名,最多64字'`,
|
|||
|
|
`COMMENT ON COLUMN user_emergency_contact.phone IS '联系人大陆手机号,仅本人接口返回用于编辑及联系'`,
|
|||
|
|
`COMMENT ON COLUMN user_emergency_contact.relationship IS '与用户关系描述,最多32字;空字符串表示未填写'`,
|
|||
|
|
`COMMENT ON COLUMN user_emergency_contact.request_no IS '客户端新增请求UUID,同一用户重试唯一且归档后不复活'`,
|
|||
|
|
`CREATE UNIQUE INDEX IF NOT EXISTS idx_emergency_contact_active_phone ON user_emergency_contact(user_account_id,phone) WHERE status=1 AND deleted_at IS NULL`,
|
|||
|
|
})
|
|||
|
|
}
|