From bed6d99d1aa8fdb6a1768adc0aa9f4b3dbac2820 Mon Sep 17 00:00:00 2001 From: Udit <25996904+uditdc@users.noreply.github.com> Date: Wed, 3 Jul 2024 20:45:36 +0530 Subject: [PATCH] Fix prisma schema and migrations for view metrics --- .../migration.sql | 89 +++++++++++++++++++ packages/prisma/schema.prisma | 31 +++++-- 2 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 packages/prisma/migrations/20240703150617_include_withdrawal_metrics_data/migration.sql diff --git a/packages/prisma/migrations/20240703150617_include_withdrawal_metrics_data/migration.sql b/packages/prisma/migrations/20240703150617_include_withdrawal_metrics_data/migration.sql new file mode 100644 index 00000000..3f503016 --- /dev/null +++ b/packages/prisma/migrations/20240703150617_include_withdrawal_metrics_data/migration.sql @@ -0,0 +1,89 @@ +/* + Warnings: + + - You are about to drop the `Withdrawal` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropTable +DROP TABLE "Withdrawal"; + +-- CreateTable +CREATE TABLE "WithdrawalQueued" ( + "withdrawalRoot" TEXT NOT NULL, + "nonce" INTEGER NOT NULL, + "stakerAddress" TEXT NOT NULL, + "delegatedTo" TEXT NOT NULL, + "withdrawerAddress" TEXT NOT NULL, + "strategies" TEXT[], + "shares" TEXT[], + "createdAtBlock" BIGINT NOT NULL DEFAULT 0, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "WithdrawalQueued_pkey" PRIMARY KEY ("withdrawalRoot") +); + +-- CreateTable +CREATE TABLE "WithdrawalCompleted" ( + "withdrawalRoot" TEXT NOT NULL, + "receiveAsTokens" BOOLEAN NOT NULL DEFAULT false, + "createdAtBlock" BIGINT NOT NULL DEFAULT 0, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + + CONSTRAINT "WithdrawalCompleted_pkey" PRIMARY KEY ("withdrawalRoot") +); + +-- CreateTable +CREATE TABLE "EventLogs_PodSharesUpdated" ( + "address" TEXT NOT NULL, + "transactionHash" TEXT NOT NULL, + "transactionIndex" INTEGER NOT NULL, + "blockNumber" BIGINT NOT NULL, + "blockHash" TEXT NOT NULL, + "blockTime" TIMESTAMP(3) NOT NULL, + "podOwner" TEXT NOT NULL, + "sharesDelta" TEXT NOT NULL, + + CONSTRAINT "EventLogs_PodSharesUpdated_pkey" PRIMARY KEY ("transactionHash","transactionIndex") +); + +-- CreateTable +CREATE TABLE "MetricDepositHourly" ( + "id" SERIAL NOT NULL, + "tvlEth" DECIMAL(20,8) NOT NULL, + "totalDeposits" INTEGER NOT NULL, + "changeTvlEth" DECIMAL(20,8) NOT NULL, + "changeDeposits" INTEGER NOT NULL, + "timestamp" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "MetricDepositHourly_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "MetricWithdrawalHourly" ( + "id" SERIAL NOT NULL, + "tvlEth" DECIMAL(20,8) NOT NULL, + "totalWithdrawals" INTEGER NOT NULL, + "changeTvlEth" DECIMAL(20,8) NOT NULL, + "changeWithdrawals" INTEGER NOT NULL, + "timestamp" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "MetricWithdrawalHourly_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "WithdrawalQueued_withdrawalRoot_key" ON "WithdrawalQueued"("withdrawalRoot"); + +-- CreateIndex +CREATE UNIQUE INDEX "WithdrawalCompleted_withdrawalRoot_key" ON "WithdrawalCompleted"("withdrawalRoot"); + +-- CreateIndex +CREATE INDEX "EventLogs_PodSharesUpdated_podOwner_idx" ON "EventLogs_PodSharesUpdated"("podOwner"); + +-- CreateIndex +CREATE INDEX "MetricDepositHourly_timestamp_idx" ON "MetricDepositHourly"("timestamp"); + +-- CreateIndex +CREATE INDEX "MetricWithdrawalHourly_timestamp_idx" ON "MetricWithdrawalHourly"("timestamp"); + +-- AddForeignKey +ALTER TABLE "WithdrawalCompleted" ADD CONSTRAINT "WithdrawalCompleted_withdrawalRoot_fkey" FOREIGN KEY ("withdrawalRoot") REFERENCES "WithdrawalQueued"("withdrawalRoot") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index 14432e67..49032026 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -1,5 +1,6 @@ generator client { - provider = "prisma-client-js" + provider = "prisma-client-js" + previewFeatures = ["views"] } datasource db { @@ -430,8 +431,8 @@ model EventLogs_Deposit { } model MetricDepositHourly { - id Int @id @default(autoincrement()) - + id Int @id @default(autoincrement()) + tvlEth Decimal @db.Decimal(20, 8) totalDeposits Int changeTvlEth Decimal @db.Decimal(20, 8) @@ -443,8 +444,8 @@ model MetricDepositHourly { } model MetricWithdrawalHourly { - id Int @id @default(autoincrement()) - + id Int @id @default(autoincrement()) + tvlEth Decimal @db.Decimal(20, 8) totalWithdrawals Int changeTvlEth Decimal @db.Decimal(20, 8) @@ -461,3 +462,23 @@ model Evm_BlockData { number BigInt @id timestamp DateTime } + +// Views + +view viewHourlyDepositData { + strategyAddress String + totalDeposits Int + totalShares BigInt + timestamp DateTime + + @@unique([strategyAddress, timestamp]) +} + +view viewHourlyWithdrawalData { + strategyAddress String + totalWithdrawals Int + totalShares BigInt + timestamp DateTime + + @@unique([strategyAddress, timestamp]) +}