// 功能:事务创建独立联系人资料表,不迁移其他业务表;版本: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`, }) }