37 lines
1.2 KiB
MySQL
37 lines
1.2 KiB
MySQL
|
|
-- CreateTable
|
||
|
|
CREATE TABLE "activity_logs" (
|
||
|
|
"id" SERIAL NOT NULL,
|
||
|
|
"user_id" INTEGER,
|
||
|
|
"username" VARCHAR(50),
|
||
|
|
"ip_address" VARCHAR(45),
|
||
|
|
"action" VARCHAR(50) NOT NULL,
|
||
|
|
"category" VARCHAR(20) NOT NULL,
|
||
|
|
"resource" VARCHAR(100),
|
||
|
|
"method" VARCHAR(10),
|
||
|
|
"path" VARCHAR(255),
|
||
|
|
"metadata" JSONB,
|
||
|
|
"success" BOOLEAN NOT NULL DEFAULT true,
|
||
|
|
"error_message" TEXT,
|
||
|
|
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||
|
|
|
||
|
|
CONSTRAINT "activity_logs_pkey" PRIMARY KEY ("id")
|
||
|
|
);
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "activity_logs_user_id_created_at_idx" ON "activity_logs"("user_id", "created_at");
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "activity_logs_action_created_at_idx" ON "activity_logs"("action", "created_at");
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "activity_logs_category_created_at_idx" ON "activity_logs"("category", "created_at");
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "activity_logs_created_at_idx" ON "activity_logs"("created_at" DESC);
|
||
|
|
|
||
|
|
-- CreateIndex
|
||
|
|
CREATE INDEX "activity_logs_username_created_at_idx" ON "activity_logs"("username", "created_at");
|
||
|
|
|
||
|
|
-- AddForeignKey
|
||
|
|
ALTER TABLE "activity_logs" ADD CONSTRAINT "activity_logs_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|