feat(db): basic db connection done
This commit is contained in:
28
back-express/src/db.ts
Normal file
28
back-express/src/db.ts
Normal file
@@ -0,0 +1,28 @@
|
||||
import mysql, { QueryError } from "mysql2/promise";
|
||||
import { ResponseError } from "./utils/error/response-error.model";
|
||||
|
||||
const db_pool = mysql.createPool({
|
||||
host: "localhost",
|
||||
port: 3307,
|
||||
user: "dbuser",
|
||||
password: "securepassword",
|
||||
database: "path",
|
||||
});
|
||||
|
||||
async function DB_Query<T>(
|
||||
query: string,
|
||||
): Promise<Partial<T>[] | ResponseError> {
|
||||
try {
|
||||
const [results, _fields] = await db_pool.query(query);
|
||||
return results as T[];
|
||||
} catch (e) {
|
||||
const queryError = e as QueryError;
|
||||
throw new ResponseError({
|
||||
code: queryError.code,
|
||||
number: queryError.errno,
|
||||
detail: queryError.message,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export { db_pool as db_connection, DB_Query as db_query };
|
||||
@@ -2,8 +2,10 @@ import express from "express";
|
||||
|
||||
import { defaultRoute } from "./defaultRoute";
|
||||
import { exampleRoutes } from "./example/example.routes";
|
||||
import { userRoutes } from "./users/users.routes";
|
||||
|
||||
export const routes = express.Router();
|
||||
|
||||
routes.use("/", defaultRoute);
|
||||
routes.use("/example", exampleRoutes);
|
||||
routes.use("/users", userRoutes);
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import { Router } from "express";
|
||||
import UserService from "./users.service";
|
||||
import { ResponseError } from "../../utils/error/response-error.model";
|
||||
|
||||
export const userRoutes = Router();
|
||||
|
||||
const userService = new UserService();
|
||||
|
||||
userRoutes.get("/", async (req, res) => {
|
||||
try {
|
||||
const response = await userService.getAllUsers();
|
||||
// console.log("__DB_DATA", data);
|
||||
res.status(200);
|
||||
res.send(response);
|
||||
} catch (e) {
|
||||
// const response_error = new ResponseError(e);
|
||||
res.status(400);
|
||||
res.send(e);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,11 +1,35 @@
|
||||
import { db_connection, db_query } from "../../db";
|
||||
|
||||
class UserService {
|
||||
constructor() {}
|
||||
|
||||
getAllUsers() {}
|
||||
|
||||
getUserById(id: number) {
|
||||
return 3;
|
||||
async getTestUsers() {
|
||||
const data = await db_connection.execute("select * from user");
|
||||
return data;
|
||||
}
|
||||
|
||||
async getAllUsers() {
|
||||
try {
|
||||
const data = await db_query("select * from user where user.id == 3");
|
||||
return { value: data, example: "algo" };
|
||||
} catch (e) {
|
||||
return e;
|
||||
}
|
||||
}
|
||||
|
||||
// getUserById(id: number) {
|
||||
// return new Promise((resolve, reject) =>
|
||||
// db_connection.query("select * from user", (err, rows, fields) => {
|
||||
// console.log(rows);
|
||||
// if (err) {
|
||||
// console.error("Mysql Error on User SELECT: ", err);
|
||||
// reject(err);
|
||||
// } else {
|
||||
// resolve(rows);
|
||||
// }
|
||||
// }),
|
||||
// );
|
||||
// }
|
||||
}
|
||||
|
||||
export default UserService;
|
||||
|
||||
14
back-express/src/utils/error/response-error.model.ts
Normal file
14
back-express/src/utils/error/response-error.model.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
export class ResponseError extends Error {
|
||||
constructor(
|
||||
public error: {
|
||||
code: string | number;
|
||||
number?: number;
|
||||
detail?: string;
|
||||
status?: number;
|
||||
suggestion?: string;
|
||||
},
|
||||
public timestamp: number = Date.now(),
|
||||
) {
|
||||
super();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user