Base structure #2
This commit is contained in:
31
src/data/dataSource.ts
Normal file
31
src/data/dataSource.ts
Normal 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
9
src/data/index.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import dataSource from "./dataSource";
|
||||
import { Badword, GuildSetting } from "./model";
|
||||
|
||||
export {
|
||||
dataSource as database,
|
||||
Badword,
|
||||
GuildSetting
|
||||
}
|
||||
|
34
src/data/migrations/1669251793386-data.ts
Normal file
34
src/data/migrations/1669251793386-data.ts
Normal 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
13
src/data/model/badword.ts
Normal 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;
|
||||
}
|
13
src/data/model/guildSetting.ts
Normal file
13
src/data/model/guildSetting.ts
Normal 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
7
src/data/model/index.ts
Normal file
@ -0,0 +1,7 @@
|
||||
import { Badword } from "./badword";
|
||||
import { GuildSetting } from "./guildSetting";
|
||||
|
||||
export {
|
||||
Badword,
|
||||
GuildSetting
|
||||
}
|
Reference in New Issue
Block a user