-- 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;