29 lines
1.2 KiB
SQL
29 lines
1.2 KiB
SQL
CREATE TABLE user_invitations (
|
|
invitation_id CHAR(36) NOT NULL,
|
|
token_hash BINARY(32) NOT NULL,
|
|
iota_id BIGINT NOT NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
expires_at TIMESTAMP NULL,
|
|
state ENUM('pending', 'redeemed', 'revoked', 'expired') NOT NULL DEFAULT 'pending',
|
|
redeemed_user_id BIGINT NULL,
|
|
redeemed_at TIMESTAMP NULL,
|
|
revoked_at TIMESTAMP NULL,
|
|
PRIMARY KEY (invitation_id),
|
|
KEY idx_user_invitations_target_state (iota_id, state),
|
|
CONSTRAINT fk_user_invitations_iota
|
|
FOREIGN KEY (iota_id) REFERENCES iotas(id) ON DELETE CASCADE
|
|
);
|
|
|
|
CREATE TABLE pending_iota_user_provisioning (
|
|
user_id BIGINT NOT NULL,
|
|
iota_id BIGINT NOT NULL,
|
|
invitation_id CHAR(36) NOT NULL,
|
|
username VARBINARY(255) NOT NULL,
|
|
public_key BLOB NOT NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
PRIMARY KEY (user_id, iota_id),
|
|
CONSTRAINT fk_pending_iota_user_provisioning_iota
|
|
FOREIGN KEY (iota_id) REFERENCES iotas(id) ON DELETE CASCADE,
|
|
CONSTRAINT fk_pending_iota_user_provisioning_invitation
|
|
FOREIGN KEY (invitation_id) REFERENCES user_invitations(invitation_id) ON DELETE CASCADE
|
|
);
|