portfolio/resources/databaseSchema.sql

150 lines
4.0 KiB
SQL

create table if not exists portfolio.contacts
(
id char(22) not null,
title varchar(64) not null,
text varchar(512) not null,
link varchar(1024) null,
baseSiteLink varchar(512) null,
icon varchar(128) null,
iconColour char(6) null,
constraint contact_id_uindex
unique (id)
)
charset = utf8mb4;
alter table portfolio.contacts
add primary key (id);
create table if not exists portfolio.credentials
(
id char(22) not null,
type varchar(32) not null,
data mediumtext not null,
expiresAt bigint not null,
constraint credentials_id_uindex
unique (id)
)
charset = utf8mb4;
create index credentials_type_index
on portfolio.credentials (type);
alter table portfolio.credentials
add primary key (id);
create table if not exists portfolio.education
(
id char(20) not null,
location varchar(128) not null,
level varchar(64) not null,
subject varchar(64) not null,
startDate smallint not null,
endDate smallint not null,
grade varchar(32) not null,
constraint education_id_uindex
unique (id)
)
charset = utf8mb4;
alter table portfolio.education
add primary key (id);
create table if not exists portfolio.experience
(
id char(20) not null,
title varchar(128) not null,
description text not null,
company varchar(128) not null,
url varchar(128) null,
iconUrl varchar(256) null,
endDate bigint null,
startDate bigint null,
constraint education_id_uindex
unique (id)
)
charset = utf8mb4;
alter table portfolio.experience
add primary key (id);
create table if not exists portfolio.projectSkills
(
id char(26) not null,
projectId char(21) not null,
skillId char(22) not null,
constraint projectSkills_id_uindex
unique (id)
)
charset = utf8mb4;
create index projectSkills_projects_id_fk
on portfolio.projectSkills (projectId);
create index projectSkills_skills_id_fk
on portfolio.projectSkills (skillId);
alter table portfolio.projectSkills
add primary key (id);
create table if not exists portfolio.projects
(
id char(21) not null
primary key,
name varchar(128) not null,
shortDescription varchar(256) null,
longDescription mediumtext null,
openSource tinyint(1) default 0 not null,
repository varchar(1024) null,
contributors mediumtext null,
imageUrl varchar(512) null,
dateAdded bigint not null
)
charset = utf8mb4;
create index projects_dateAdded_index
on portfolio.projects (dateAdded);
create index projects_id_index
on portfolio.projects (id);
create index projects_openSource_index
on portfolio.projects (openSource);
create table if not exists portfolio.skills
(
id char(22) not null,
type varchar(128) not null,
name varchar(128) not null,
link varchar(1024) null,
imageUrl varchar(1024) not null,
colour char(6) not null,
constraint skills_id_uindex
unique (id)
)
charset = utf8mb4;
alter table portfolio.skills
add primary key (id);
create table if not exists portfolio.users
(
id char(21) not null,
username varchar(128) null,
password char(60) not null,
avatarUrl varchar(256) null,
webauthnLoginEnabled tinyint(1) default 0 not null,
webauthnChallenge char(44) null,
webauthnAuthrInfo mediumtext null,
webauthnLoginChallenge char(44) null,
constraint users_id_uindex
unique (id)
)
charset = utf8mb4;
create index users_username_index
on portfolio.users (username);
alter table portfolio.users
add primary key (id);