Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 108 additions & 1 deletion database/01_schema.sql
Original file line number Diff line number Diff line change
@@ -1,9 +1,116 @@
USE db;
CREATE TABLE IF NOT EXISTS user (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
username VARCHAR(64) NOT NULL,
user_password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
deleted_at TIMESTAMP NULL,
PRIMARY KEY (id),
UNIQUE KEY uk_name (username,'password')
);

CREATE TABLE user_login (
id int unsigned NOT NULL AUTO_INCREMENT,
user_id int unsigned NOT NULL,
time_stamp timestamp NOT NULL,
ip varchar(225) NOT NULL,
=======
UNIQUE KEY uk_name (username,user_password)
);

CREATE TABLE IF NOT EXISTS user_login (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
user_id INT UNSIGNED NOT NULL,
ip VARCHAR(225) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
deleted_at TIMESTAMP NULL,
>>>>>>> a86d025fffcc52c6edcf066e86316dc4e41e5930
PRIMARY KEY pk_id (id),
UNIQUE KEY uk_user_id (user_id),
FOREIGN KEY fk_user_id (user_id) REFERENCES user(id)
);
);

<<<<<<< HEAD
=======

CREATE TABLE IF NOT EXISTS game_state (
id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(64) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
deleted_at TIMESTAMP NULL,
PRIMARY KEY (id),
UNIQUE KEY gs_name (name)
);

CREATE TABLE IF NOT EXISTS game (
id INT AUTO_INCREMENT PRIMARY KEY,
user_1_id INT UNSIGNED NOT NULL,
user_2_id INT UNSIGNED NOT NULL,
user_1_game_state_id TINYINT UNSIGNED NULL,
user_2_game_state_id TINYINT UNSIGNED NULL,
n_game TINYINT(1) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
deleted_at TIMESTAMP NULL,

FOREIGN KEY(user_1_id) REFERENCES user(id),
FOREIGN KEY(user_2_id) REFERENCES user(id),
FOREIGN KEY(user_1_game_state_id) REFERENCES game_state(id),
FOREIGN KEY(user_2_game_state_id) REFERENCES game_state(id)
);

CREATE TABLE IF NOT EXISTS game_grid (
id TINYINT primary key AUTO_INCREMENT NOT NULL ,
game_id INT NOT NULL ,
cell_value VARCHAR(1) NULL,
cell_index TINYINT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP,
deleted_at TIMESTAMP NULL,
FOREIGN KEY (game_id) REFERENCES game(id),
UNIQUE KEY (game_id,cell_index)
);

INSERT INTO game_state (name) VALUES
('Win'),
('Lose'),
('Draw');

INSERT INTO user (username, user_password) VALUES
('admin', 'admin');

INSERT INTO user (username, user_password) VALUES
('admin1', 'admin1');

INSERT INTO user_login (user_id, ip)
SELECT id, '127.0.0.1' FROM user WHERE username = 'admin';

INSERT INTO user_login (user_id, ip)
SELECT id, '127.0.0.1' FROM user WHERE username = 'admin1';

INSERT INTO game (user_1_id, user_2_id, user_1_game_state_id, user_2_game_state_id, n_game)
SELECT u1.id, u2.id, gs1.id, gs2.id, 3
FROM user u1, user u2,
game_state gs1, game_state gs2
WHERE u1.username = 'admin' AND u2.username = 'admin1'
and gs1.name = 'Draw' and gs2.name = 'Draw';

INSERT INTO game (user_1_id, user_2_id, user_1_game_state_id, user_2_game_state_id, n_game)
SELECT u1.id, u2.id, gs1.id, gs2.id, 3
FROM user u1, user u2,
game_state gs1, game_state gs2
WHERE u1.username = 'admin' AND u2.username = 'admin1'
and gs1.name = 'Win' and gs2.name = 'Lose';

INSERT INTO game (user_1_id, user_2_id, n_game)
SELECT u1.id, u2.id, 3
FROM user u1, user u2
WHERE u1.username = 'admin' AND u2.username = 'admin1';

INSERT INTO game_grid (game_id, cell_value, cell_index)
SELECT g.id, 'X', 1 FROM game g
WHERE g.user_1_id = (SELECT id FROM user WHERE username = 'admin');
>>>>>>> a86d025fffcc52c6edcf066e86316dc4e41e5930
13 changes: 0 additions & 13 deletions game.sql

This file was deleted.

2 changes: 2 additions & 0 deletions models/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './user';
export * from './userLogin';
53 changes: 53 additions & 0 deletions models/user.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import {
Model,
Table,
Column,
DataType,
Index,
Sequelize,
ForeignKey,
} from 'sequelize-typescript';

export interface userAttributes {
id?: number;
username: string;
pass: string;
createdAt?: Date;
updatedAt?: Date;
deletedAt?: Date;
}

@Table({ tableName: 'user', timestamps: false })
export class user
extends Model<userAttributes, userAttributes>
implements userAttributes
{
@Column({ primaryKey: true, autoIncrement: true, type: DataType.INTEGER })
@Index({ name: 'PRIMARY', using: 'BTREE', order: 'ASC', unique: true })
id?: number;

@Column({ type: DataType.STRING(64) })
@Index({ name: 'uk_name', using: 'BTREE', order: 'ASC', unique: true })
username!: string;

@Column({ type: DataType.STRING(255) })
@Index({ name: 'uk_name', using: 'BTREE', order: 'ASC', unique: true })
pass!: string;

@Column({
field: 'created_at',
type: DataType.DATE,
defaultValue: DataType.NOW,
})
createdAt?: Date;

@Column({
field: 'updated_at',
type: DataType.DATE,
defaultValue: DataType.NOW,
})
updatedAt?: Date;

@Column({ field: 'deleted_at', allowNull: true, type: DataType.DATE })
deletedAt?: Date;
}
36 changes: 36 additions & 0 deletions models/userLogin.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import {
Model,
Table,
Column,
DataType,
Index,
Sequelize,
ForeignKey,
} from 'sequelize-typescript';

export interface userLoginAttributes {
id?: number;
userId: number;
timeStamp: Date;
ip: string;
}

@Table({ tableName: 'user_login', timestamps: false })
export class userLogin
extends Model<userLoginAttributes, userLoginAttributes>
implements userLoginAttributes
{
@Column({ primaryKey: true, autoIncrement: true, type: DataType.INTEGER })
@Index({ name: 'PRIMARY', using: 'BTREE', order: 'ASC', unique: true })
id?: number;

@Column({ field: 'user_id', type: DataType.INTEGER })
@Index({ name: 'uk_user_id', using: 'BTREE', order: 'ASC', unique: true })
userId!: number;

@Column({ field: 'time_stamp', type: DataType.DATE })
timeStamp!: Date;

@Column({ type: DataType.STRING(225) })
ip!: string;
}
7 changes: 0 additions & 7 deletions test.txt

This file was deleted.