mirror of
https://github.com/arkorty/B.Tech-Project-III.git
synced 2026-04-19 12:41:48 +00:00
init
This commit is contained in:
140
dmtp/server/prisma/migrations/20251026032137_init/migration.sql
Normal file
140
dmtp/server/prisma/migrations/20251026032137_init/migration.sql
Normal file
@@ -0,0 +1,140 @@
|
||||
-- CreateEnum
|
||||
CREATE TYPE "UserRole" AS ENUM ('requester', 'worker');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "TaskType" AS ENUM ('text_verification', 'image_labeling', 'survey', 'content_moderation');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "TaskStatus" AS ENUM ('open', 'in_progress', 'completed', 'expired');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "VerificationStatus" AS ENUM ('pending', 'approved', 'rejected');
|
||||
|
||||
-- CreateEnum
|
||||
CREATE TYPE "PaymentStatus" AS ENUM ('pending', 'completed', 'failed');
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "tasks" (
|
||||
"id" TEXT NOT NULL,
|
||||
"requester_id" TEXT NOT NULL,
|
||||
"title" VARCHAR(100) NOT NULL,
|
||||
"description" TEXT NOT NULL,
|
||||
"task_type" "TaskType" NOT NULL,
|
||||
"payment_amount" DECIMAL(10,2) NOT NULL,
|
||||
"status" "TaskStatus" NOT NULL DEFAULT 'open',
|
||||
"verification_criteria" JSONB NOT NULL,
|
||||
"max_submissions" INTEGER NOT NULL,
|
||||
"contract_task_id" INTEGER,
|
||||
"expires_at" TIMESTAMP(3) NOT NULL,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "tasks_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "users" (
|
||||
"id" TEXT NOT NULL,
|
||||
"wallet_address" TEXT NOT NULL,
|
||||
"phone_number" TEXT,
|
||||
"role" "UserRole" NOT NULL,
|
||||
"reputation_score" INTEGER NOT NULL DEFAULT 0,
|
||||
"total_earnings" DECIMAL(10,2) NOT NULL DEFAULT 0,
|
||||
"total_tasks_created" INTEGER NOT NULL DEFAULT 0,
|
||||
"total_tasks_completed" INTEGER NOT NULL DEFAULT 0,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "users_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "submissions" (
|
||||
"id" TEXT NOT NULL,
|
||||
"task_id" TEXT NOT NULL,
|
||||
"worker_id" TEXT NOT NULL,
|
||||
"submission_data" JSONB NOT NULL,
|
||||
"ai_verification_result" JSONB,
|
||||
"verification_status" "VerificationStatus" NOT NULL DEFAULT 'pending',
|
||||
"payment_transaction_hash" TEXT,
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
"updated_at" TIMESTAMP(3) NOT NULL,
|
||||
|
||||
CONSTRAINT "submissions_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateTable
|
||||
CREATE TABLE "payments" (
|
||||
"id" TEXT NOT NULL,
|
||||
"task_id" TEXT NOT NULL,
|
||||
"worker_id" TEXT NOT NULL,
|
||||
"amount" DECIMAL(10,2) NOT NULL,
|
||||
"transaction_hash" TEXT NOT NULL,
|
||||
"status" "PaymentStatus" NOT NULL DEFAULT 'pending',
|
||||
"created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
|
||||
CONSTRAINT "payments_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "tasks_requester_id_idx" ON "tasks"("requester_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "tasks_status_idx" ON "tasks"("status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "tasks_task_type_idx" ON "tasks"("task_type");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "tasks_expires_at_idx" ON "tasks"("expires_at");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "tasks_contract_task_id_idx" ON "tasks"("contract_task_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "users_wallet_address_key" ON "users"("wallet_address");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "users_wallet_address_idx" ON "users"("wallet_address");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "users_role_idx" ON "users"("role");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "submissions_task_id_idx" ON "submissions"("task_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "submissions_worker_id_idx" ON "submissions"("worker_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "submissions_verification_status_idx" ON "submissions"("verification_status");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE UNIQUE INDEX "submissions_task_id_worker_id_key" ON "submissions"("task_id", "worker_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "payments_task_id_idx" ON "payments"("task_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "payments_worker_id_idx" ON "payments"("worker_id");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "payments_transaction_hash_idx" ON "payments"("transaction_hash");
|
||||
|
||||
-- CreateIndex
|
||||
CREATE INDEX "payments_status_idx" ON "payments"("status");
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "tasks" ADD CONSTRAINT "tasks_requester_id_fkey" FOREIGN KEY ("requester_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "submissions" ADD CONSTRAINT "submissions_task_id_fkey" FOREIGN KEY ("task_id") REFERENCES "tasks"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "submissions" ADD CONSTRAINT "submissions_worker_id_fkey" FOREIGN KEY ("worker_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "payments" ADD CONSTRAINT "payments_task_id_fkey" FOREIGN KEY ("task_id") REFERENCES "tasks"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- AddForeignKey
|
||||
ALTER TABLE "payments" ADD CONSTRAINT "payments_worker_id_fkey" FOREIGN KEY ("worker_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
3
dmtp/server/prisma/migrations/migration_lock.toml
Normal file
3
dmtp/server/prisma/migrations/migration_lock.toml
Normal file
@@ -0,0 +1,3 @@
|
||||
# Please do not edit this file manually
|
||||
# It should be added in your version-control system (i.e. Git)
|
||||
provider = "postgresql"
|
||||
Reference in New Issue
Block a user