51 lines
1.5 KiB
SQL
51 lines
1.5 KiB
SQL
-- noinspection SqlDialectInspectionForFile
|
|
-- noinspection SqlNoDataSourceInspectionForFile
|
|
-- noinspection SqlResolveForFile
|
|
|
|
CREATE TABLE api_keys (
|
|
id BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
|
|
-- Effective "primary key" (used internally for lookups and as a foreign key).
|
|
token VARCHAR(32) NOT NULL,
|
|
|
|
-- The actual API key value presented by clients to authenticate.
|
|
api_key VARCHAR(255) NOT NULL,
|
|
|
|
-- ========== KEY INFO ==========
|
|
|
|
-- User-supplied display name for the key.
|
|
name VARCHAR(255) NOT NULL,
|
|
|
|
-- Optional user-supplied description.
|
|
maybe_description VARCHAR(512) DEFAULT NULL,
|
|
|
|
-- ========== OWNER ==========
|
|
|
|
-- The user that owns this API key.
|
|
owner_user_token VARCHAR(32) NOT NULL,
|
|
|
|
-- ========== IP ADDRESSES ==========
|
|
|
|
-- IP address that created the key. Wide enough for IPv4/IPv6.
|
|
ip_address_creation VARCHAR(40) NOT NULL,
|
|
|
|
-- IP address that last updated the key. Wide enough for IPv4/IPv6.
|
|
ip_address_update VARCHAR(40) NOT NULL,
|
|
|
|
-- ========== TIMESTAMPS ==========
|
|
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
|
|
|
-- Soft-delete timestamp. NULL means the key is live.
|
|
maybe_deleted_at TIMESTAMP NULL,
|
|
|
|
-- INDICES --
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY (token),
|
|
UNIQUE KEY (api_key),
|
|
KEY fk_owner_user_token (owner_user_token),
|
|
KEY index_maybe_deleted_at (maybe_deleted_at)
|
|
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
|