Move media to sql

This commit is contained in:
Nikola Petrov
2024-07-16 20:18:46 +02:00
parent 71a2245ce2
commit e89a8536be
3 changed files with 88 additions and 31 deletions

View File

@@ -1,14 +1,72 @@
import mongoose, { Schema } from 'mongoose';
import { type ResultSetHeader, type RowDataPacket, type QueryOptions } from "mysql2"
import pool from '../miscellaneous/db'
const mediaSchema = new Schema({
'title': String,
'released': String,
'webImg': String,
'code': String
});
const MovieModel = mongoose.model('movie', mediaSchema);
const SeriesModel = mongoose.model('series', mediaSchema);
const GameModel = mongoose.model('game', mediaSchema);
interface Media extends RowDataPacket {
id?: number;
code?: number;
title?: string;
released?: string;
webImg?: string;
}
export { MovieModel, SeriesModel, GameModel };
export enum Table {
movies = "movies",
series = "series",
games = "games",
}
async function save(table: Table, code: number, title: string, released: string, webImg: string): Promise<number> {
try {
const options: QueryOptions = {
sql: "INSERT INTO " + table + " (code, title, released, webImg) VALUES (?,?,?,?)",
values: [code, title, released, webImg]
};
const [result, fields] = await pool.query<ResultSetHeader>(options);
return result.affectedRows;
}
catch (err) {
console.log(err);
}
return 0;
}
async function findOneAndDelete(table: Table, code: number): Promise<number> {
try {
const [result, fields] = await pool.query<ResultSetHeader>("DELETE FROM " + table + " WHERE code = ?;", [code]);
return result.affectedRows;
}
catch (err) {
console.log(err);
}
return 0;
}
async function findOne(table: Table, code: number): Promise<Media[]> {
try {
const [rows, fields] = await pool.query<Media[]>("SELECT * FROM " + table + " WHERE code = ?;", [code]);
return rows;
}
catch (err) {
console.log(err);
}
return [];
}
async function find(table: Table): Promise<Media[]> {
try {
const [rows, fields] = await pool.query<Media[]>("SELECT * FROM " + table + ";");
return rows;
}
catch (err) {
console.log(err);
}
return [];
}
export default {
save,
findOneAndDelete,
findOne,
find
};