mirror of
https://github.com/ProjectSegfault/website.git
synced 2025-05-31 14:12:04 +05:30
switch to knex
This commit is contained in:
@@ -1,45 +1,26 @@
|
||||
import { Sequelize, DataTypes } from "sequelize";
|
||||
import consola from "consola";
|
||||
import knex from "knex";
|
||||
import { env } from "$env/dynamic/private";
|
||||
|
||||
const sequelize = new Sequelize({
|
||||
database: "website",
|
||||
password: String(env.DB_PASSWORD),
|
||||
port: Number(env.DB_PORT),
|
||||
host: String(env.DB_HOST),
|
||||
dialect: "postgres",
|
||||
username: String(env.DB_USERNAME),
|
||||
});
|
||||
|
||||
sequelize.define("Announcements", {
|
||||
title: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: false
|
||||
},
|
||||
severity: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
author: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
link: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: true
|
||||
},
|
||||
created: {
|
||||
type: DataTypes.BIGINT,
|
||||
allowNull: false
|
||||
const db = knex({
|
||||
client: "pg",
|
||||
connection: {
|
||||
host: String(env.DB_HOST),
|
||||
port: Number(env.DB_PORT),
|
||||
user: String(env.DB_USERNAME),
|
||||
password: String(env.DB_PASSWORD),
|
||||
database: "website"
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
try {
|
||||
await sequelize.authenticate();
|
||||
await sequelize.sync();
|
||||
consola.success("Connected to Postgres");
|
||||
} catch (error) {
|
||||
consola.error("Failed to connect to Postgres:", error);
|
||||
if (! await db.schema.hasTable("Announcements")) {
|
||||
await db.schema.createTable("Announcements", (table) => {
|
||||
table.increments("id");
|
||||
table.text("title").notNullable();
|
||||
table.string("severity").notNullable();
|
||||
table.string("author").notNullable();
|
||||
table.string("link").nullable();
|
||||
table.bigInteger("created").notNullable();
|
||||
});
|
||||
}
|
||||
|
||||
export default sequelize;
|
||||
export default db;
|
||||
@@ -4,15 +4,13 @@ import sanitizeHtml from "sanitize-html";
|
||||
import db from "$lib/db";
|
||||
|
||||
export const load: PageServerLoad = async () => {
|
||||
const Announcements = db.model("Announcements");
|
||||
|
||||
const data = await Announcements.findAll().then((docs) => {
|
||||
return docs.map((doc) => doc.get());
|
||||
});
|
||||
|
||||
const sanitizedContent = sanitizeHtml(data[0].title)
|
||||
const data = await db("Announcements").select("*");
|
||||
|
||||
if (data.length !== 0 || data[0] !== undefined) {
|
||||
|
||||
const sanitizedContent = sanitizeHtml(data[0].title)
|
||||
|
||||
return {
|
||||
announcements: data[0],
|
||||
content: compile(sanitizedContent).then((compiled) => compiled?.code)
|
||||
|
||||
@@ -8,8 +8,6 @@ export const actions: Actions = {
|
||||
if (!await locals.getSession()) {
|
||||
return fail(401, { addError: true, addMessage: "You must be logged in to post an announcement." });
|
||||
} else {
|
||||
const Announcements = db.model("Announcements");
|
||||
|
||||
const formData = await request.formData();
|
||||
|
||||
const BodyTypeSchema = Joi.object({
|
||||
@@ -28,11 +26,9 @@ export const actions: Actions = {
|
||||
created: now
|
||||
};
|
||||
|
||||
await Announcements.sync();
|
||||
|
||||
await Announcements.destroy({ where: {} });
|
||||
await db.delete("*").from("Announcements");
|
||||
|
||||
await Announcements.create(data);
|
||||
await db("Announcements").insert(data);
|
||||
|
||||
return { addSuccess: true, addMessage: "Your announcement has been posted." };
|
||||
}
|
||||
@@ -43,11 +39,8 @@ export const actions: Actions = {
|
||||
if (!await locals.getSession()) {
|
||||
return fail(401, { deleteError: true, deleteMessage: "You must be logged in to delete an announcement." });
|
||||
} else {
|
||||
const Announcements = db.model("Announcements");
|
||||
|
||||
await Announcements.sync();
|
||||
|
||||
await Announcements.destroy({ where: {} });
|
||||
await db.delete("*").from("Announcements");
|
||||
|
||||
return { deleteSuccess: true, deleteMessage: "Your announcement has been deleted." };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user