Update the formatting for SQL files, add changes to the channel repository

This commit is contained in:
Dave Smith-Hayes 2024-04-11 21:06:12 -04:00
parent be4fd75afe
commit 82101e7d1d
7 changed files with 74 additions and 32 deletions

View File

@ -2,11 +2,11 @@ export type EntityId = number|string;
export class Entity<T> { export class Entity<T> {
protected readonly id: EntityId; protected readonly id: EntityId;
protected model: T; protected _model: T;
public constructor(id: EntityId, model: T) { public constructor(id: EntityId, model: T) {
this.id = id; this.id = id;
this.model = model; this._model = model;
} }
public getId(): EntityId { public getId(): EntityId {
@ -14,6 +14,10 @@ export class Entity<T> {
} }
public getModel(): T { public getModel(): T {
return this.model; return this._model;
}
public get model(): T {
return this.getModel();
} }
} }

View File

@ -0,0 +1,39 @@
import { type EntityId, Entity } from '@slovo/domain/entity';
import { BaseRepository } from '@slovo/domain/repository';
import { type Channel } from '@slovo/models/channel';
export class ChannelRepository extends BaseRepository<Channel> {
public async get(id: EntityId): Promise<Entity<Channel>> {
const conn = await this.pool.getConnection();
const query = `SELECT * FROM Channels WHERE id = ?`;
const rows = await conn.query(query, [ id ]);
if (!rows.length) {
throw Error("Unable to find Channel.");
}
return new Entity(id, {
name: rows[0].name,
description: rows[0].description,
link: new URL(rows[0].link),
language: rows[0].language,
copyright: rows[0].copyright,
explicit: rows[0].explicit as boolean,
category: rows[0].category,
} as Channel);
}
public async save(channel: Entity<Channel>): Promise<Entity<Channel>> {
return channel;
}
public async update(channel: Entity<Channel>): Promise<Entity<Channel>> {
return channel;
}
public async delete(channel: Entity<Channel>): Promise<boolean> {
return true;
}
}

View File

@ -68,9 +68,9 @@ export class UserRepository extends BaseRepository<User> {
const query = `UPDATE user SET name = ?, email = ?, password = ? WHERE id = ?`; const query = `UPDATE user SET name = ?, email = ?, password = ? WHERE id = ?`;
const results = await conn.query(query, [ const results = await conn.query(query, [
user.getModel().name, user.model.name,
user.getModel().email, user.model.email,
user.getModel().password, user.model.password,
user.getId() user.getId()
]); ]);
@ -82,9 +82,8 @@ export class UserRepository extends BaseRepository<User> {
return user; return user;
} }
/// Don't delete users
public async delete(user: Entity<User>): Promise<boolean> { public async delete(user: Entity<User>): Promise<boolean> {
const conn: PoolConnection = await this.pool.getConnection(); return true;
await conn.release();
} }
} }

View File

@ -1,8 +1,8 @@
CREATE TABLE users ( CREATE TABLE users (
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
email VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

View File

@ -1,9 +1,9 @@
CREATE TABLE images ( CREATE TABLE images (
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
url TEXT NOT NULL, url TEXT NOT NULL,
title TEXT NULL, title TEXT NULL,
width INT(11) UNSIGNED NULL, width INT(11) UNSIGNED NULL,
height INT(11) UNSIGNED NULL, height INT(11) UNSIGNED NULL,
PRIMARY KEY(`id`), PRIMARY KEY(`id`),
UNIQUE KEY(`url`) UNIQUE KEY(`url`)

View File

@ -1,12 +1,12 @@
CREATE TABLE channels ( CREATE TABLE channels (
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL,
description TEXT NOT NULL, description TEXT NOT NULL,
link VARCHAR(255) NULL, link VARCHAR(255) NULL,
language VARCHAR(2) NOT NULL, language VARCHAR(2) NOT NULL,
copyright VARCHAR(255) NULL, copyright VARCHAR(255) NULL,
explicit BOOLEAN DEFAULT false, explicit BOOLEAN DEFAULT false,
category VARCHAR(255), category VARCHAR(255),
owner_id INT(11) UNSIGNED NOT NULL, owner_id INT(11) UNSIGNED NOT NULL,
image_id INT(11) UNSIGNED NOT NULL, image_id INT(11) UNSIGNED NOT NULL,

View File

@ -1,15 +1,15 @@
CREATE TABLE episodes ( CREATE TABLE episodes (
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
title VARCHAR(255) NOT NULL, title VARCHAR(255) NOT NULL,
link VARCHAR(255) NOT NULL, link VARCHAR(255) NOT NULL,
duration VARCHAR(127) NOT NULL, duration VARCHAR(127) NOT NULL COMMENT "HH:MM:SS representation",
length INT(11) UNSIGNED NOT NULL, length INT(11) UNSIGNED NOT NULL COMMENT "Length in seconds",
description TEXT NOT NULL, description TEXT NOT NULL,
explicit BOOLEAN NOT NULL DEFAULT true, explicit BOOLEAN NOT NULL DEFAULT true,
channel_id INT(11) UNSIGNED NOT NULL, channel_id INT(11) UNSIGNED NOT NULL,
image_id INT(11) UNSIGNED NOT NULL, image_id INT(11) UNSIGNED NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,