refactor: 🗃️ Change event log database for note purges

This commit is contained in:
Maxime Cannoodt 2022-08-08 23:39:37 +02:00
parent e7f17dbe4d
commit 293af7f34b
4 changed files with 38 additions and 16 deletions

View File

@ -0,0 +1,24 @@
/*
Warnings:
- You are about to drop the column `purge_count` on the `event` table. All the data in the column will be lost.
*/
-- RedefineTables
PRAGMA foreign_keys=OFF;
CREATE TABLE "new_event" (
"id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
"time" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
"type" TEXT NOT NULL,
"success" BOOLEAN NOT NULL,
"size_bytes" INTEGER,
"note_id" TEXT,
"host" TEXT,
"error" TEXT,
"expire_window_days" INTEGER
);
INSERT INTO "new_event" ("error", "expire_window_days", "host", "id", "size_bytes", "success", "time", "type") SELECT "error", "expire_window_days", "host", "id", "size_bytes", "success", "time", "type" FROM "event";
DROP TABLE "event";
ALTER TABLE "new_event" RENAME TO "event";
PRAGMA foreign_key_check;
PRAGMA foreign_keys=ON;

View File

@ -24,7 +24,7 @@ model event {
type String
success Boolean
size_bytes Int?
purge_count Int?
note_id String?
host String?
error String?
expire_window_days Int?

View File

@ -6,6 +6,7 @@ describe("Logging write events", () => {
it("Should write a write event to database", async () => {
const testWriteEvent = {
host: "localhost",
note_id: "test_id",
size_bytes: 100,
success: true,
expire_window_days: 30,
@ -18,7 +19,7 @@ describe("Logging write events", () => {
// Is event in database?
const results = await prisma.event.findMany({
where: { type: EventType.WRITE },
where: { type: EventType.WRITE, note_id: testWriteEvent.note_id },
});
expect(results.length).toBe(1);
@ -30,22 +31,19 @@ describe("Logging write events", () => {
it("Should log a read event to database", async () => {
const testReadEvent = {
host: "localhost",
note_id: "test_id",
size_bytes: 100,
success: true,
};
// Is event written successfully?
const logged = await EventLogger.readEvent({
host: "localhost",
size_bytes: 100,
success: true,
});
const logged = await EventLogger.readEvent(testReadEvent);
expect(logged).not.toBeNull();
expect(logged).toMatchObject(testReadEvent);
// Is event in database?
const results = await prisma.event.findMany({
where: { type: EventType.READ },
where: { type: EventType.READ, note_id: testReadEvent.note_id },
});
expect(results.length).toBe(1);
@ -56,9 +54,9 @@ describe("Logging write events", () => {
it("Should log a purge event to database", async () => {
const testPurgeEvent = {
success: true,
purge_count: 1,
note_id: "test_id",
size_bytes: 100,
success: true,
};
// Is event written successfully?
@ -68,7 +66,7 @@ describe("Logging write events", () => {
// Is event in database?
const results = await prisma.event.findMany({
where: { type: EventType.PURGE },
where: { type: EventType.PURGE, note_id: "test_id" },
});
expect(results.length).toBe(1);

View File

@ -14,20 +14,20 @@ interface Event {
interface ClientEvent extends Event {
host: string;
size_bytes: number;
success: boolean;
note_id?: string;
size_bytes?: number;
}
interface WriteEvent extends ClientEvent {
expire_window_days: number;
expire_window_days?: number;
}
interface ReadEvent extends ClientEvent {}
interface PurgeEvent extends Event {
success: boolean;
purge_count: number;
size_bytes: number;
note_id: string;
size_bytes?: number;
}
export default class EventLogger {