-- user_identity stores the linkage between an external identity subject and a local user. -- (provider, extern_uid) is unique across the table; provider stores the idp.uid. -- Each local user can link at most one external account per provider. CREATE TABLE user_identity ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, provider TEXT NOT NULL, extern_uid TEXT NOT NULL, created_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')), updated_ts BIGINT NOT NULL DEFAULT (strftime('%s', 'now')), UNIQUE (provider, extern_uid), UNIQUE (user_id, provider) ); CREATE INDEX idx_user_identity_user_id ON user_identity(user_id);