124 lines
4.0 KiB
Bash
Executable File
124 lines
4.0 KiB
Bash
Executable File
create_db() {
|
|
/opt/lampp/bin/mariadb -u violet -p -e "DROP DATABASE IF EXISTS vintagecodingdotnet;";
|
|
/opt/lampp/bin/mariadb -u violet -p -e "CREATE DATABASE vintagecodingdotnet;";
|
|
|
|
# Create file_types table.
|
|
/opt/lampp/bin/mariadb -u violet -p -e "
|
|
USE vintagecodingdotnet;
|
|
CREATE TABLE file_types (
|
|
file_type_id INT PRIMARY KEY AUTO_INCREMENT,
|
|
file_type VARCHAR(8)
|
|
);";
|
|
|
|
# Create the media table.
|
|
/opt/lampp/bin/mariadb -u violet -p -e "
|
|
USE vintagecodingdotnet;
|
|
CREATE TABLE media (
|
|
media_id INT PRIMARY KEY,
|
|
file_name TINYTEXT NOT NULL,
|
|
file_path VARCHAR(2048) NOT NULL,
|
|
file_type INT NOT NULL,
|
|
FOREIGN KEY (file_type) REFERENCES file_types(file_type_id)
|
|
);";
|
|
|
|
# Create the roles table.
|
|
/opt/lampp/bin/mariadb -u violet -p -e "
|
|
USE vintagecodingdotnet;
|
|
CREATE TABLE roles (
|
|
role_id INT PRIMARY KEY AUTO_INCREMENT,
|
|
role VARCHAR(32) NOT NULL
|
|
);";
|
|
|
|
# Create the accounts table.
|
|
/opt/lampp/bin/mariadb -u violet -p -e "
|
|
USE vintagecodingdotnet;
|
|
CREATE TABLE accounts (
|
|
account_id INT PRIMARY KEY,
|
|
username VARCHAR(32) UNIQUE NOT NULL,
|
|
first_name VARCHAR(64) NOT NULL,
|
|
last_name VARCHAR(64) NOT NULL,
|
|
email VARCHAR(64) UNIQUE NOT NULL,
|
|
password_hash VARCHAR(64) NOT NULL,
|
|
role INT NOT NULL,
|
|
registration_date DATETIME,
|
|
bio TINYTEXT,
|
|
profile_picture INT,
|
|
FOREIGN KEY (role) REFERENCES roles(role_id),
|
|
FOREIGN KEY (profile_picture) REFERENCES media(media_id)
|
|
);";
|
|
|
|
# Create the article_status table.
|
|
/opt/lampp/bin/mariadb -u violet -p -e "
|
|
USE vintagecodingdotnet;
|
|
CREATE TABLE article_status (
|
|
status_id INT PRIMARY KEY AUTO_INCREMENT,
|
|
status VARCHAR(16) NOT NULL
|
|
);";
|
|
|
|
# Create the articles table.
|
|
/opt/lampp/bin/mariadb -u violet -p -e "
|
|
USE vintagecodingdotnet;
|
|
CREATE TABLE articles (
|
|
article_id INT PRIMARY KEY AUTO_INCREMENT,
|
|
account_id INT NOT NULL,
|
|
title VARCHAR(128) UNIQUE NOT NULL,
|
|
slug VARCHAR(128) UNIQUE NOT NULL,
|
|
content LONGTEXT NOT NULL,
|
|
publish_date DATETIME,
|
|
last_modified DATETIME NOT NULL,
|
|
status INT NOT NULL,
|
|
featured_image INT,
|
|
excerpt VARCHAR(255),
|
|
FOREIGN KEY (account_id) REFERENCES accounts(account_id),
|
|
FOREIGN KEY (status) REFERENCES article_status(status_id)
|
|
);";
|
|
}
|
|
|
|
# Insert data constants into the database.
|
|
# Acceptable file types: png, jpg, jpeg, svg.
|
|
# Acceptable roles: administrator, contributor, commenter, guest.
|
|
# Acceptable article status: published, draft, archived.
|
|
#
|
|
# Also creates administrator user
|
|
const_data() {
|
|
# Insert the data to the file_types table.
|
|
# Acceptable file types are png, jpg, jpeg, svg
|
|
/opt/lampp/bin/mariadb -u violet -p -e "
|
|
USE vintagecodingdotnet;
|
|
INSERT INTO file_types (file_type) VALUES ('png'), ('jpg'), ('jpeg'), ('svg');
|
|
";
|
|
|
|
# Insert the data to the roles table.
|
|
/opt/lampp/bin/mariadb -u violet -p -e "
|
|
USE vintagecodingdotnet;
|
|
INSERT INTO roles (role) VALUES ('administrator'), ('contributor'), ('commenter'), ('guest');
|
|
";
|
|
|
|
# Insert the data to the article_status table.
|
|
/opt/lampp/bin/mariadb -u violet -p -e "
|
|
USE vintagecodingdotnet;
|
|
INSERT INTO article_status (status) VALUES ('published'), ('draft'), ('archived');
|
|
";
|
|
|
|
# Create an administrator user.
|
|
/opt/lampp/bin/mariadb -u violet -p -e "
|
|
USE vintagecodingdotnet;
|
|
INSERT INTO accounts
|
|
(account_id, username, email, password_hash, role, registration_date, bio, profile_picture) VALUES
|
|
(42, 'admin', 'me@joshashton.dev', 'e03b1a00caa6e8113a3bc3e7101ecbd0fea710f5e091e7b195bdba53bbeb004e', 1, CURDATE(), null, null);
|
|
";
|
|
}
|
|
|
|
insert_data() {
|
|
/opt/lampp/bin/mariadb -u violet -p -e "
|
|
USE vintagecodingdotnet;
|
|
INSERT INTO articles (article_name) VALUES
|
|
('test'),
|
|
('another test'),
|
|
('a third test');
|
|
";
|
|
}
|
|
|
|
create_db
|
|
const_data
|