3
0
Fork 0
mirror of https://github.com/ZeppelinBot/Zeppelin.git synced 2025-05-10 20:35:02 +00:00

Reorganize project. Add folder for shared code between backend/dashboard. Switch from jest to ava for tests.

This commit is contained in:
Dragory 2019-11-02 22:11:26 +02:00
parent 80a82fe348
commit 16111bbe84
162 changed files with 11056 additions and 9900 deletions

View file

@ -0,0 +1,17 @@
import { Entity, Column, PrimaryColumn, CreateDateColumn } from "typeorm";
@Entity("allowed_guilds")
export class AllowedGuild {
@Column()
@PrimaryColumn()
id: string;
@Column()
name: string;
@Column()
icon: string;
@Column()
owner_id: string;
}

View file

@ -0,0 +1,25 @@
import { Entity, Column, PrimaryColumn, OneToOne, ManyToOne, JoinColumn } from "typeorm";
import { ApiUserInfo } from "./ApiUserInfo";
@Entity("api_logins")
export class ApiLogin {
@Column()
@PrimaryColumn()
id: string;
@Column()
token: string;
@Column()
user_id: string;
@Column()
logged_in_at: string;
@Column()
expires_at: string;
@ManyToOne(type => ApiUserInfo, userInfo => userInfo.logins)
@JoinColumn({ name: "user_id" })
userInfo: ApiUserInfo;
}

View file

@ -0,0 +1,20 @@
import { Entity, Column, PrimaryColumn, ManyToOne, JoinColumn } from "typeorm";
import { ApiUserInfo } from "./ApiUserInfo";
@Entity("api_permissions")
export class ApiPermission {
@Column()
@PrimaryColumn()
guild_id: string;
@Column()
@PrimaryColumn()
user_id: string;
@Column()
role: string;
@ManyToOne(type => ApiUserInfo, userInfo => userInfo.permissions)
@JoinColumn({ name: "user_id" })
userInfo: ApiUserInfo;
}

View file

@ -0,0 +1,28 @@
import { Entity, Column, PrimaryColumn, OneToMany } from "typeorm";
import { ApiLogin } from "./ApiLogin";
import { ApiPermission } from "./ApiPermission";
export interface ApiUserInfoData {
username: string;
discriminator: string;
avatar: string;
}
@Entity("api_user_info")
export class ApiUserInfo {
@Column()
@PrimaryColumn()
id: string;
@Column("simple-json")
data: ApiUserInfoData;
@Column()
updated_at: string;
@OneToMany(type => ApiLogin, login => login.userInfo)
logins: ApiLogin[];
@OneToMany(type => ApiPermission, perm => perm.userInfo)
permissions: ApiPermission[];
}

View file

@ -0,0 +1,16 @@
import { Entity, Column, PrimaryGeneratedColumn } from "typeorm";
@Entity("archives")
export class ArchiveEntry {
@Column()
@PrimaryGeneratedColumn("uuid")
id: string;
@Column() guild_id: string;
@Column() body: string;
@Column() created_at: string;
@Column() expires_at: string;
}

View file

@ -0,0 +1,15 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
import { ISavedMessageData } from "./SavedMessage";
@Entity("auto_reactions")
export class AutoReaction {
@Column()
@PrimaryColumn()
guild_id: string;
@Column()
@PrimaryColumn()
channel_id: string;
@Column("simple-array") reactions: string[];
}

View file

@ -0,0 +1,34 @@
import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from "typeorm";
import { CaseNote } from "./CaseNote";
@Entity("cases")
export class Case {
@PrimaryGeneratedColumn() id: number;
@Column() guild_id: string;
@Column() case_number: number;
@Column() user_id: string;
@Column() user_name: string;
@Column() mod_id: string;
@Column() mod_name: string;
@Column() type: number;
@Column() audit_log_id: string;
@Column() created_at: string;
@Column() is_hidden: boolean;
@Column() pp_id: string;
@Column() pp_name: string;
@OneToMany(type => CaseNote, note => note.case)
notes: CaseNote[];
}

View file

@ -0,0 +1,21 @@
import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn } from "typeorm";
import { Case } from "./Case";
@Entity("case_notes")
export class CaseNote {
@PrimaryGeneratedColumn() id: number;
@Column() case_id: number;
@Column() mod_id: string;
@Column() mod_name: string;
@Column() body: string;
@Column() created_at: string;
@ManyToOne(type => Case, theCase => theCase.notes)
@JoinColumn({ name: "case_id" })
case: Case;
}

View file

@ -0,0 +1,28 @@
import { Entity, Column, PrimaryColumn, CreateDateColumn, ManyToOne, JoinColumn } from "typeorm";
import { ApiUserInfo } from "./ApiUserInfo";
@Entity("configs")
export class Config {
@Column()
@PrimaryColumn()
id: number;
@Column()
key: string;
@Column()
config: string;
@Column()
is_active: boolean;
@Column()
edited_by: string;
@Column()
edited_at: string;
@ManyToOne(type => ApiUserInfo)
@JoinColumn({ name: "edited_by" })
userInfo: ApiUserInfo;
}

View file

@ -0,0 +1,18 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
@Entity("mutes")
export class Mute {
@Column()
@PrimaryColumn()
guild_id: string;
@Column()
@PrimaryColumn()
user_id: string;
@Column() created_at: string;
@Column() expires_at: string;
@Column() case_id: number;
}

View file

@ -0,0 +1,16 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
@Entity("nickname_history")
export class NicknameHistoryEntry {
@Column()
@PrimaryColumn()
id: string;
@Column() guild_id: string;
@Column() user_id: string;
@Column() nickname: string;
@Column() timestamp: string;
}

View file

@ -0,0 +1,18 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
@Entity("persisted_data")
export class PersistedData {
@Column()
@PrimaryColumn()
guild_id: string;
@Column()
@PrimaryColumn()
user_id: string;
@Column("simple-array") roles: string[];
@Column() nickname: string;
@Column() is_voice_muted: number;
}

View file

@ -0,0 +1,15 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
import { ISavedMessageData } from "./SavedMessage";
@Entity("pingable_roles")
export class PingableRole {
@Column()
@PrimaryColumn()
id: number;
@Column() guild_id: string;
@Column() channel_id: string;
@Column() role_id: string;
}

View file

@ -0,0 +1,22 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
@Entity("reaction_roles")
export class ReactionRole {
@Column()
@PrimaryColumn()
guild_id: string;
@Column()
@PrimaryColumn()
channel_id: string;
@Column()
@PrimaryColumn()
message_id: string;
@Column()
@PrimaryColumn()
emoji: string;
@Column() role_id: string;
}

View file

@ -0,0 +1,18 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
@Entity("reminders")
export class Reminder {
@Column()
@PrimaryColumn()
id: number;
@Column() guild_id: string;
@Column() user_id: string;
@Column() channel_id: string;
@Column() remind_at: string;
@Column() body: string;
}

View file

@ -0,0 +1,35 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
export interface ISavedMessageData {
attachments?: object[];
author: {
username: string;
discriminator: string;
};
content: string;
embeds?: object[];
timestamp: number;
}
@Entity("messages")
export class SavedMessage {
@Column()
@PrimaryColumn()
id: string;
@Column() guild_id: string;
@Column() channel_id: string;
@Column() user_id: string;
@Column() is_bot: boolean;
@Column("simple-json") data: ISavedMessageData;
@Column() posted_at: string;
@Column() deleted_at: string;
@Column() is_permanent: boolean;
}

View file

@ -0,0 +1,26 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
import { Attachment } from "eris";
import { StrictMessageContent } from "../../utils";
@Entity("scheduled_posts")
export class ScheduledPost {
@Column()
@PrimaryColumn()
id: number;
@Column() guild_id: string;
@Column() author_id: string;
@Column() author_name: string;
@Column() channel_id: string;
@Column("simple-json") content: StrictMessageContent;
@Column("simple-json") attachments: Attachment[];
@Column() post_at: string;
@Column() enable_mentions: boolean;
}

View file

@ -0,0 +1,16 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
@Entity("self_grantable_roles")
export class SelfGrantableRole {
@Column()
@PrimaryColumn()
id: number;
@Column() guild_id: string;
@Column() channel_id: string;
@Column() role_id: string;
@Column("simple-array") aliases: string[];
}

View file

@ -0,0 +1,14 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
@Entity("slowmode_channels")
export class SlowmodeChannel {
@Column()
@PrimaryColumn()
guild_id: string;
@Column()
@PrimaryColumn()
channel_id: string;
@Column() slowmode_seconds: number;
}

View file

@ -0,0 +1,18 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
@Entity("slowmode_users")
export class SlowmodeUser {
@Column()
@PrimaryColumn()
guild_id: string;
@Column()
@PrimaryColumn()
channel_id: string;
@Column()
@PrimaryColumn()
user_id: string;
@Column() expires_at: string;
}

View file

@ -0,0 +1,23 @@
import { Entity, Column, PrimaryColumn, OneToMany } from "typeorm";
import { CaseNote } from "./CaseNote";
import { StarboardMessage } from "./StarboardMessage";
@Entity("starboards")
export class Starboard {
@Column()
@PrimaryColumn()
id: number;
@Column() guild_id: string;
@Column() channel_id: string;
@Column() channel_whitelist: string;
@Column() emoji: string;
@Column() reactions_required: number;
@OneToMany(type => StarboardMessage, msg => msg.starboard)
starboardMessages: StarboardMessage[];
}

View file

@ -0,0 +1,25 @@
import { Entity, Column, PrimaryColumn, OneToMany, ManyToOne, JoinColumn, OneToOne } from "typeorm";
import { Starboard } from "./Starboard";
import { Case } from "./Case";
import { SavedMessage } from "./SavedMessage";
@Entity("starboard_messages")
export class StarboardMessage {
@Column()
@PrimaryColumn()
starboard_id: number;
@Column()
@PrimaryColumn()
message_id: string;
@Column() starboard_message_id: string;
@ManyToOne(type => Starboard, sb => sb.starboardMessages)
@JoinColumn({ name: "starboard_id" })
starboard: Starboard;
@OneToOne(type => SavedMessage)
@JoinColumn({ name: "message_id" })
message: SavedMessage;
}

View file

@ -0,0 +1,18 @@
import { Entity, Column, PrimaryColumn, CreateDateColumn } from "typeorm";
@Entity("tags")
export class Tag {
@Column()
@PrimaryColumn()
guild_id: string;
@Column()
@PrimaryColumn()
tag: string;
@Column() user_id: string;
@Column() body: string;
@Column() created_at: string;
}

View file

@ -0,0 +1,14 @@
import { Entity, Column, PrimaryColumn, CreateDateColumn } from "typeorm";
@Entity("tag_responses")
export class TagResponse {
@Column()
@PrimaryColumn()
id: string;
@Column() guild_id: string;
@Column() command_message_id: string;
@Column() response_message_id: string;
}

View file

@ -0,0 +1,14 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
@Entity("username_history")
export class UsernameHistoryEntry {
@Column()
@PrimaryColumn()
id: string;
@Column() user_id: string;
@Column() username: string;
@Column() timestamp: string;
}

View file

@ -0,0 +1,20 @@
import { Entity, Column, PrimaryColumn } from "typeorm";
@Entity("vc_alerts")
export class VCAlert {
@Column()
@PrimaryColumn()
id: number;
@Column() guild_id: string;
@Column() requestor_id: string;
@Column() user_id: string;
@Column() channel_id: string;
@Column() expires_at: string;
@Column() body: string;
}