SQL
CREATE TABLE "invitations" (
id TEXT PRIMARY KEY,
organisation_id TEXT NOT NULL,
email TEXT NOT NULL,
token TEXT UNIQUE NOT NULL,
role TEXT DEFAULT 'member',
invited_by TEXT,
expires_at DATETIME NOT NULL,
accepted_at DATETIME,
status TEXT DEFAULT 'pending' CHECK(status IN ('pending', 'sent', 'failed', 'accepted', 'expired')),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (organisation_id) REFERENCES organisations(id) ON DELETE CASCADE,
FOREIGN KEY (invited_by) REFERENCES users(id) ON DELETE SET NULL
)
Columns
| Column | Data type | Allow null | Primary key | Actions |
|---|---|---|---|---|
id |
TEXT |
✓ | ✓ | Rename | Drop |
organisation_id |
TEXT |
Rename | Drop | ||
email |
TEXT |
Rename | Drop | ||
token |
TEXT |
Rename | Drop | ||
role |
TEXT |
✓ | Rename | Drop | |
invited_by |
TEXT |
✓ | Rename | Drop | |
expires_at |
DATETIME |
Rename | Drop | ||
accepted_at |
DATETIME |
✓ | Rename | Drop | |
status |
TEXT |
✓ | Rename | Drop | |
created_at |
DATETIME |
✓ | Rename | Drop |
Foreign Keys
| Column | Destination |
|---|---|
invited_by |
users.id |
organisation_id |
organisations.id |
Indexes
| Name | Columns | Unique | SQL | Drop? |
|---|---|---|---|---|
| idx_invitations_email |
email
|
SQL | Drop | |
| idx_invitations_organisation_id |
organisation_id
|
SQL | Drop | |
| idx_invitations_status |
status
|
SQL | Drop | |
| idx_invitations_token |
token
|
✓ | SQL | Drop |
| sqlite_autoindex_invitations_1 |
id
|
✓ | SQL | Drop |
| sqlite_autoindex_invitations_2 |
token
|
✓ | SQL | Drop |