Base structure #2

This commit is contained in:
2022-11-24 02:12:52 +01:00
parent 261627570d
commit d8365128fc
20 changed files with 1528 additions and 41 deletions

31
src/data/dataSource.ts Normal file
View File

@ -0,0 +1,31 @@
import path from "path";
import { DataSource } from "typeorm";
import { config } from "dotenv";
import { Badword, GuildSetting } from "./model";
config();
const host = process.env["DB_HOST"];
const username = process.env["DB_USERNAME"];
const password = process.env["DB_PASSWORD"];
const database = process.env["DB_DATABASE"];
if (!host) throw new ReferenceError("Environment variable DB_HOST is missing");
if (!username) throw new ReferenceError("Environment variable DB_USERNAME is missing");
if (!password) throw new ReferenceError("Environment variable DB_PASSWORD is missing");
if (!database) throw new ReferenceError("Environment variable DB_DATABASE is missing");
const dataSource = new DataSource({
type: "postgres",
host: host,
port: 5432,
username: username,
password: password,
database: database,
migrationsRun: true,
migrations: [ path.join(__dirname, "/migrations/*") ],
entities: [Badword,GuildSetting],
migrationsTransactionMode: "each"
});
export default dataSource;

9
src/data/index.ts Normal file
View File

@ -0,0 +1,9 @@
import dataSource from "./dataSource";
import { Badword, GuildSetting } from "./model";
export {
dataSource as database,
Badword,
GuildSetting
}

View File

@ -0,0 +1,34 @@
import { MigrationInterface, QueryRunner } from "typeorm";
export class data1669251793386 implements MigrationInterface {
name = 'data1669251793386'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
CREATE TABLE "badword" (
"id" uuid NOT NULL DEFAULT uuid_generate_v4(),
"guildID" character varying,
"value" character varying NOT NULL,
CONSTRAINT "PK_b5034b5fcec4ccac0c288e37f3a" PRIMARY KEY ("id")
)
`);
await queryRunner.query(`
CREATE TABLE "guild_setting" (
"id" character varying NOT NULL,
"notificationChannelID" character varying,
"isPremiumUntil" date,
CONSTRAINT "PK_56f0d706a92e999b4e967abae5f" PRIMARY KEY ("id")
)
`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`
DROP TABLE "guild_setting"
`);
await queryRunner.query(`
DROP TABLE "badword"
`);
}
}

13
src/data/model/badword.ts Normal file
View File

@ -0,0 +1,13 @@
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
@Entity()
export class Badword {
@PrimaryGeneratedColumn("uuid")
id!: string;
@Column("varchar", { nullable: true })
guildID!: string | null;
@Column("varchar")
value!: string;
}

View File

@ -0,0 +1,13 @@
import { Entity, PrimaryColumn, Column } from "typeorm";
@Entity()
export class GuildSetting {
@PrimaryColumn("varchar")
id!: string;
@Column("varchar", { nullable: true, default: null })
notificationChannelID!: string | null;
@Column("date", { nullable: true, default: null })
isPremiumUntil!: Date | null;
}

7
src/data/model/index.ts Normal file
View File

@ -0,0 +1,7 @@
import { Badword } from "./badword";
import { GuildSetting } from "./guildSetting";
export {
Badword,
GuildSetting
}