From 35a92894787f48146a097c060a2b5315872d0b2c Mon Sep 17 00:00:00 2001
From: Benedikt Magnus <magnus@magnuscraft.de>
Date: Mon, 8 Nov 2021 12:42:37 +0100
Subject: [PATCH] Exclusion class (handling)

---
 scripts/wichtelbot/classes/exclusion.ts     | 17 +++++++++++++++++
 scripts/wichtelbot/database.ts              | 21 +++++++++++++++++++++
 scripts/wichtelbot/types/exclusionReason.ts |  5 +++++
 3 files changed, 43 insertions(+)
 create mode 100644 scripts/wichtelbot/classes/exclusion.ts
 create mode 100644 scripts/wichtelbot/types/exclusionReason.ts

diff --git a/scripts/wichtelbot/classes/exclusion.ts b/scripts/wichtelbot/classes/exclusion.ts
new file mode 100644
index 0000000..519287a
--- /dev/null
+++ b/scripts/wichtelbot/classes/exclusion.ts
@@ -0,0 +1,17 @@
+import { ExclusionReason } from "../types/exclusionReason";
+
+export class Exclusion
+{
+    public wichtelEvent: string;
+    public giverId: string;
+    public takerId: string;
+    public reason: ExclusionReason;
+
+    constructor (exclusion: Exclusion)
+    {
+        this.wichtelEvent = exclusion.wichtelEvent;
+        this.giverId = exclusion.giverId;
+        this.takerId = exclusion.takerId;
+        this.reason = exclusion.reason;
+    }
+}
diff --git a/scripts/wichtelbot/database.ts b/scripts/wichtelbot/database.ts
index 8af8cc7..a1a36af 100644
--- a/scripts/wichtelbot/database.ts
+++ b/scripts/wichtelbot/database.ts
@@ -2,6 +2,7 @@ import * as fs from 'fs';
 
 import Contact, { ContactCoreData, ContactData } from './classes/contact';
 import ContactType from './types/contactType';
+import { Exclusion } from './classes/exclusion';
 import { InformationData } from './classes/information';
 import Member from './classes/member';
 import Utils from '../utility/utils';
@@ -431,6 +432,26 @@ export default class Database
             return contactCoreData;
         }
     }
+
+    public getUserExclusions (): Exclusion[]
+    {
+        const statement = this.mainDatabase.prepare(
+            'SELECT * FROM exclusion'
+        );
+
+        const rawExclusions = statement.all() as Exclusion[];
+
+        const exclusions: Exclusion[] = [];
+
+        for (const rawExclusion of rawExclusions)
+        {
+            const exclusion = new Exclusion(rawExclusion);
+
+            exclusions.push(exclusion);
+        }
+
+        return exclusions;
+    }
 }
 
 /*
diff --git a/scripts/wichtelbot/types/exclusionReason.ts b/scripts/wichtelbot/types/exclusionReason.ts
new file mode 100644
index 0000000..331520c
--- /dev/null
+++ b/scripts/wichtelbot/types/exclusionReason.ts
@@ -0,0 +1,5 @@
+export enum ExclusionReason
+{
+    WichtelFromThePast = 'wichtelFromThePast',
+    Wish = 'wish',
+}
-- 
GitLab