diff --git a/prisma/migrations/20251005052140_minigames/migration.sql b/prisma/migrations/20251005052140_minigames/migration.sql new file mode 100644 index 0000000..7b40421 --- /dev/null +++ b/prisma/migrations/20251005052140_minigames/migration.sql @@ -0,0 +1,134 @@ +-- CreateTable +CREATE TABLE "public"."GameArea" ( + "id" TEXT NOT NULL, + "key" TEXT NOT NULL, + "name" TEXT NOT NULL, + "type" TEXT NOT NULL, + "guildId" TEXT, + "config" JSONB, + "metadata" JSONB, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "GameArea_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."GameAreaLevel" ( + "id" TEXT NOT NULL, + "areaId" TEXT NOT NULL, + "level" INTEGER NOT NULL, + "requirements" JSONB, + "rewards" JSONB, + "mobs" JSONB, + "metadata" JSONB, + "availableFrom" TIMESTAMP(3), + "availableTo" TIMESTAMP(3), + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "GameAreaLevel_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."Mob" ( + "id" TEXT NOT NULL, + "key" TEXT NOT NULL, + "name" TEXT NOT NULL, + "category" TEXT, + "guildId" TEXT, + "stats" JSONB, + "drops" JSONB, + "metadata" JSONB, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "Mob_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."MinigameRun" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "guildId" TEXT NOT NULL, + "areaId" TEXT NOT NULL, + "level" INTEGER NOT NULL, + "toolItemId" TEXT, + "success" BOOLEAN NOT NULL, + "result" JSONB NOT NULL, + "startedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "finishedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "MinigameRun_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."PlayerProgress" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "guildId" TEXT NOT NULL, + "areaId" TEXT NOT NULL, + "highestLevel" INTEGER NOT NULL DEFAULT 1, + "metadata" JSONB, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "PlayerProgress_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE INDEX "GameArea_guildId_idx" ON "public"."GameArea"("guildId"); + +-- CreateIndex +CREATE UNIQUE INDEX "GameArea_guildId_key_key" ON "public"."GameArea"("guildId", "key"); + +-- CreateIndex +CREATE UNIQUE INDEX "GameAreaLevel_areaId_level_key" ON "public"."GameAreaLevel"("areaId", "level"); + +-- CreateIndex +CREATE INDEX "Mob_guildId_idx" ON "public"."Mob"("guildId"); + +-- CreateIndex +CREATE UNIQUE INDEX "Mob_guildId_key_key" ON "public"."Mob"("guildId", "key"); + +-- CreateIndex +CREATE INDEX "MinigameRun_userId_guildId_idx" ON "public"."MinigameRun"("userId", "guildId"); + +-- CreateIndex +CREATE INDEX "MinigameRun_areaId_idx" ON "public"."MinigameRun"("areaId"); + +-- CreateIndex +CREATE INDEX "MinigameRun_startedAt_idx" ON "public"."MinigameRun"("startedAt"); + +-- CreateIndex +CREATE INDEX "PlayerProgress_userId_guildId_idx" ON "public"."PlayerProgress"("userId", "guildId"); + +-- CreateIndex +CREATE UNIQUE INDEX "PlayerProgress_userId_guildId_areaId_key" ON "public"."PlayerProgress"("userId", "guildId", "areaId"); + +-- AddForeignKey +ALTER TABLE "public"."GameArea" ADD CONSTRAINT "GameArea_guildId_fkey" FOREIGN KEY ("guildId") REFERENCES "public"."Guild"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."GameAreaLevel" ADD CONSTRAINT "GameAreaLevel_areaId_fkey" FOREIGN KEY ("areaId") REFERENCES "public"."GameArea"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."Mob" ADD CONSTRAINT "Mob_guildId_fkey" FOREIGN KEY ("guildId") REFERENCES "public"."Guild"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."MinigameRun" ADD CONSTRAINT "MinigameRun_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."MinigameRun" ADD CONSTRAINT "MinigameRun_guildId_fkey" FOREIGN KEY ("guildId") REFERENCES "public"."Guild"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."MinigameRun" ADD CONSTRAINT "MinigameRun_areaId_fkey" FOREIGN KEY ("areaId") REFERENCES "public"."GameArea"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."PlayerProgress" ADD CONSTRAINT "PlayerProgress_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."PlayerProgress" ADD CONSTRAINT "PlayerProgress_guildId_fkey" FOREIGN KEY ("guildId") REFERENCES "public"."Guild"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."PlayerProgress" ADD CONSTRAINT "PlayerProgress_areaId_fkey" FOREIGN KEY ("areaId") REFERENCES "public"."GameArea"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20251005053847_combat_equipment_smelting_attacks/migration.sql b/prisma/migrations/20251005053847_combat_equipment_smelting_attacks/migration.sql new file mode 100644 index 0000000..0aeec7b --- /dev/null +++ b/prisma/migrations/20251005053847_combat_equipment_smelting_attacks/migration.sql @@ -0,0 +1,132 @@ +-- CreateTable +CREATE TABLE "public"."PlayerState" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "guildId" TEXT NOT NULL, + "hp" INTEGER NOT NULL DEFAULT 100, + "maxHp" INTEGER NOT NULL DEFAULT 100, + "stats" JSONB, + "metadata" JSONB, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "PlayerState_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."PlayerEquipment" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "guildId" TEXT NOT NULL, + "weaponItemId" TEXT, + "armorItemId" TEXT, + "capeItemId" TEXT, + "accessories" JSONB, + "metadata" JSONB, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "PlayerEquipment_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."ActionCooldown" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "guildId" TEXT NOT NULL, + "key" TEXT NOT NULL, + "until" TIMESTAMP(3) NOT NULL, + "metadata" JSONB, + + CONSTRAINT "ActionCooldown_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."SmeltJob" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "guildId" TEXT NOT NULL, + "inputs" JSONB NOT NULL, + "outputItemId" TEXT NOT NULL, + "outputQty" INTEGER NOT NULL DEFAULT 1, + "startedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "readyAt" TIMESTAMP(3) NOT NULL, + "status" TEXT NOT NULL DEFAULT 'pending', + "metadata" JSONB, + + CONSTRAINT "SmeltJob_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "public"."ScheduledMobAttack" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "guildId" TEXT NOT NULL, + "mobId" TEXT NOT NULL, + "scheduleAt" TIMESTAMP(3) NOT NULL, + "processedAt" TIMESTAMP(3), + "status" TEXT NOT NULL DEFAULT 'scheduled', + "metadata" JSONB, + + CONSTRAINT "ScheduledMobAttack_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "PlayerState_userId_guildId_key" ON "public"."PlayerState"("userId", "guildId"); + +-- CreateIndex +CREATE UNIQUE INDEX "PlayerEquipment_userId_guildId_key" ON "public"."PlayerEquipment"("userId", "guildId"); + +-- CreateIndex +CREATE INDEX "ActionCooldown_until_idx" ON "public"."ActionCooldown"("until"); + +-- CreateIndex +CREATE UNIQUE INDEX "ActionCooldown_userId_guildId_key_key" ON "public"."ActionCooldown"("userId", "guildId", "key"); + +-- CreateIndex +CREATE INDEX "SmeltJob_userId_guildId_idx" ON "public"."SmeltJob"("userId", "guildId"); + +-- CreateIndex +CREATE INDEX "SmeltJob_readyAt_idx" ON "public"."SmeltJob"("readyAt"); + +-- CreateIndex +CREATE INDEX "ScheduledMobAttack_scheduleAt_idx" ON "public"."ScheduledMobAttack"("scheduleAt"); + +-- CreateIndex +CREATE INDEX "ScheduledMobAttack_userId_guildId_idx" ON "public"."ScheduledMobAttack"("userId", "guildId"); + +-- AddForeignKey +ALTER TABLE "public"."PlayerState" ADD CONSTRAINT "PlayerState_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."PlayerState" ADD CONSTRAINT "PlayerState_guildId_fkey" FOREIGN KEY ("guildId") REFERENCES "public"."Guild"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."PlayerEquipment" ADD CONSTRAINT "PlayerEquipment_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."PlayerEquipment" ADD CONSTRAINT "PlayerEquipment_guildId_fkey" FOREIGN KEY ("guildId") REFERENCES "public"."Guild"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."ActionCooldown" ADD CONSTRAINT "ActionCooldown_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."ActionCooldown" ADD CONSTRAINT "ActionCooldown_guildId_fkey" FOREIGN KEY ("guildId") REFERENCES "public"."Guild"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."SmeltJob" ADD CONSTRAINT "SmeltJob_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."SmeltJob" ADD CONSTRAINT "SmeltJob_guildId_fkey" FOREIGN KEY ("guildId") REFERENCES "public"."Guild"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."SmeltJob" ADD CONSTRAINT "SmeltJob_outputItemId_fkey" FOREIGN KEY ("outputItemId") REFERENCES "public"."EconomyItem"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."ScheduledMobAttack" ADD CONSTRAINT "ScheduledMobAttack_userId_fkey" FOREIGN KEY ("userId") REFERENCES "public"."User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."ScheduledMobAttack" ADD CONSTRAINT "ScheduledMobAttack_guildId_fkey" FOREIGN KEY ("guildId") REFERENCES "public"."Guild"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "public"."ScheduledMobAttack" ADD CONSTRAINT "ScheduledMobAttack_mobId_fkey" FOREIGN KEY ("mobId") REFERENCES "public"."Mob"("id") ON DELETE RESTRICT ON UPDATE CASCADE;