create table if not exists identity ( identity_id integer primary key autoincrement , identity_public_id uuid , data text default '{}' , created_at timestamp not null default current_timestamp , unique(identity_public_id) ); create table if not exists email ( email_id integer primary key autoincrement , address text not null , unique(address) ); create table if not exists identity_email ( identity_email_id integer primary key autoincrement , identity_id integer not null references identity(identity_id) , email_id integer not null references email(email_id) , created_at timestamp not null default current_timestamp , deleted_at timestamp not null default current_timestamp ); create table if not exists email_validation_request ( email_validation_request_id integer primary key autoincrement -- uuid , email_validation_request_public_id text not null , identity_email_id integer not null references identity_email(identity_email_id) , is_validated boolean not null default false , created_at timestamp not null default current_timestamp , expires_at timestamp , revoked_at timestamp );