36 lines
1.2 KiB
SQL
36 lines
1.2 KiB
SQL
CREATE TABLE IF NOT EXISTS "AccessIpEvent" (
|
|
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
"eventType" varchar(32) DEFAULT 'request' NOT NULL,
|
|
"ip" varchar(64) NOT NULL,
|
|
"userId" uuid REFERENCES "User"("id") ON DELETE SET NULL,
|
|
"userEmail" varchar(128),
|
|
"userRole" varchar(32),
|
|
"method" varchar(12),
|
|
"path" varchar(256),
|
|
"routeGroup" varchar(64),
|
|
"statusCode" integer,
|
|
"outcome" varchar(32) DEFAULT 'allowed' NOT NULL,
|
|
"severity" varchar(16) DEFAULT 'info' NOT NULL,
|
|
"reasons" jsonb,
|
|
"userAgent" text,
|
|
"referer" text,
|
|
"metadata" jsonb,
|
|
"occurredAt" timestamp DEFAULT now() NOT NULL,
|
|
"createdAt" timestamp DEFAULT now() NOT NULL
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS "AccessIpEvent_createdAt_idx"
|
|
ON "AccessIpEvent" ("createdAt" DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS "AccessIpEvent_ip_createdAt_idx"
|
|
ON "AccessIpEvent" ("ip", "createdAt" DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS "AccessIpEvent_userId_createdAt_idx"
|
|
ON "AccessIpEvent" ("userId", "createdAt" DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS "AccessIpEvent_severity_createdAt_idx"
|
|
ON "AccessIpEvent" ("severity", "createdAt" DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS "AccessIpEvent_path_createdAt_idx"
|
|
ON "AccessIpEvent" ("path", "createdAt" DESC);
|