From 2600e164e23938363074b14c7d7d398861d78741 Mon Sep 17 00:00:00 2001 From: gmbronco <83549293+gmbronco@users.noreply.github.com> Date: Fri, 20 Dec 2024 23:15:32 +0100 Subject: [PATCH] prisma v6 --- .changeset/five-plants-tickle.md | 5 + bun.lockb | Bin 468182 -> 468629 bytes package.json | 6 +- prisma/prisma-merge.ts | 38 -- prisma/prisma-types.ts | 20 +- prisma/schema.prisma | 1059 ------------------------------ prisma/schema/base.prisma | 1 + 7 files changed, 18 insertions(+), 1111 deletions(-) create mode 100644 .changeset/five-plants-tickle.md delete mode 100644 prisma/prisma-merge.ts delete mode 100644 prisma/schema.prisma diff --git a/.changeset/five-plants-tickle.md b/.changeset/five-plants-tickle.md new file mode 100644 index 000000000..9dafaaa74 --- /dev/null +++ b/.changeset/five-plants-tickle.md @@ -0,0 +1,5 @@ +--- +'backend': patch +--- + +prisma v6 diff --git a/bun.lockb b/bun.lockb index 6d0da18930205a29cfe330567716d81dffeff28e..2033314a00def1654e52937bb6193203e98a3736 100755 GIT binary patch delta 93349 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 diff --git a/package.json b/package.json index dcaeec39a..9ffba2392 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,6 @@ "build": "tsc -p tsconfig.build.json", "cleanup-console": "find dist -type f -name \"*.js\" -exec sed -i '/console\\.time(\\(.*\\))\\;/d;/console\\.timeEnd(\\(.*\\))\\;/d' {} \\;", "generate": "graphql-codegen --config codegen.ts", - "prisma-merge": "bun run prisma/prisma-merge.ts", "test": "vitest", "vitest": "vitest", "task": "bun run tasks/index.ts", @@ -28,7 +27,7 @@ "@ethersproject/bignumber": "^5.6.0", "@ethersproject/constants": "^5.6.0", "@googleapis/sheets": "^9.0.0", - "@prisma/client": "4.10.0", + "@prisma/client": "^6.0.0", "@sanity/client": "^2.23.1", "@sentry/integrations": "^7.0.0", "@sentry/node": "^8.0.0", @@ -49,7 +48,7 @@ "lodash": "^4.17.15", "memory-cache": "^0.2.0", "moment-timezone": "^0.5.34", - "prisma": "4.10.0", + "prisma": "^6.0.0", "stellate": "2.7.1", "ts-dotenv": "^0.8.1", "viem": "^2.21.55" @@ -67,7 +66,6 @@ "@graphql-codegen/typescript-operations": "^2.2.0", "@graphql-codegen/typescript-resolvers": "2.4.1", "@graphql-tools/schema": "^8.3.1", - "@types/glob": "^8.1.0", "@types/lodash": "^4.14.177", "@types/memory-cache": "^0.2.1", "@types/node": "^18.0.0", diff --git a/prisma/prisma-merge.ts b/prisma/prisma-merge.ts deleted file mode 100644 index 4ae7c1e35..000000000 --- a/prisma/prisma-merge.ts +++ /dev/null @@ -1,38 +0,0 @@ -// Prisma has a built in support for that now. -// Update Prisma to v5.15.0 or later and this script is no longer needed. - -import fs from 'fs'; -import gl from 'glob'; - -const PREFIX = '//******** AUTO GENERATED FILE, DO NOT EDIT. *********\n\n'; - -export function glob(path: string): Promise { - return new Promise((resolve, reject) => { - gl.glob(path, (error, matches) => { - if (error) { - return reject(error); - } - resolve(matches); - }); - }); -} - -export async function merge(schemaFilePattern: string, outputFile: string) { - // const targetFiles = await glob(outputFile); - // if (targetFiles.length !== 1) { - // throw new Error(`Cannot determine target file: ${targetFiles}`); - // } - - const filesToMerge = await glob(schemaFilePattern); - - let prismaFile = PREFIX; - - for (const file of filesToMerge) { - prismaFile += `\n\n${fs.readFileSync(file, { encoding: 'utf8' })}`; - } - - // Overwrite file - fs.writeFileSync(outputFile, prismaFile, { encoding: 'utf8' }); -} - -merge('prisma/schema/*.prisma', 'prisma/schema.prisma'); diff --git a/prisma/prisma-types.ts b/prisma/prisma-types.ts index 09dbb1ad1..994a9a5fb 100644 --- a/prisma/prisma-types.ts +++ b/prisma/prisma-types.ts @@ -48,19 +48,19 @@ export type JoinExitEvent = PrismaPoolEvent & { }; }; -export const poolWithTokens = Prisma.validator()({ +export const poolWithTokens = Prisma.validator()({ include: { tokens: true }, }); export type PrismaPoolWithTokens = Prisma.PrismaPoolGetPayload; -const poolTokenWithDynamicData = Prisma.validator()({ +const poolTokenWithDynamicData = Prisma.validator()({ include: { token: true }, }); export type PrismaPoolTokenWithDynamicData = Prisma.PrismaPoolTokenGetPayload; -export const prismaPoolWithExpandedNesting = Prisma.validator()({ +export const prismaPoolWithExpandedNesting = Prisma.validator()({ include: { dynamicData: true, staking: { @@ -150,7 +150,7 @@ export const prismaPoolWithExpandedNesting = Prisma.validator; -export const nestedPoolWithSingleLayerNesting = Prisma.validator()({ +export const nestedPoolWithSingleLayerNesting = Prisma.validator()({ include: { dynamicData: true, tokens: { @@ -179,7 +179,7 @@ export type PrismaNestedPoolWithSingleLayerNesting = Prisma.PrismaPoolGetPayload typeof nestedPoolWithSingleLayerNesting >; -const nestedPoolWithNoNesting = Prisma.validator()({ +const nestedPoolWithNoNesting = Prisma.validator()({ include: { dynamicData: true, tokens: { @@ -193,7 +193,7 @@ const nestedPoolWithNoNesting = Prisma.validator()({ export type PrismaNestedPoolWithNoNesting = Prisma.PrismaPoolGetPayload; -const prismaPoolTokenWithExpandedNesting = Prisma.validator()({ +const prismaPoolTokenWithExpandedNesting = Prisma.validator()({ include: { token: { include: { @@ -233,7 +233,7 @@ export type PrismaPoolTokenWithExpandedNesting = Prisma.PrismaPoolTokenGetPayloa typeof prismaPoolTokenWithExpandedNesting >; -const prismaPoolTokenWithSingleLayerNesting = Prisma.validator()({ +const prismaPoolTokenWithSingleLayerNesting = Prisma.validator()({ include: { token: true, nestedPool: { @@ -258,7 +258,7 @@ export type PrismaTokenWithTypes = PrismaToken & { types: PrismaTokenTypeOption[]; }; -export const prismaPoolMinimal = Prisma.validator()({ +export const prismaPoolMinimal = Prisma.validator()({ include: { dynamicData: true, allTokens: { @@ -348,7 +348,7 @@ export const prismaPoolMinimal = Prisma.validator()({ export type PrismaPoolMinimal = Prisma.PrismaPoolGetPayload; -export const prismaPoolBatchSwapWithSwaps = Prisma.validator()({ +export const prismaPoolBatchSwapWithSwaps = Prisma.validator()({ include: { swaps: { include: { @@ -368,7 +368,7 @@ export const prismaPoolBatchSwapWithSwaps = Prisma.validator; -export const prismaPoolAndHookWithDynamic = Prisma.validator()({ +export const prismaPoolAndHookWithDynamic = Prisma.validator()({ include: { dynamicData: true, tokens: { diff --git a/prisma/schema.prisma b/prisma/schema.prisma deleted file mode 100644 index cc401504c..000000000 --- a/prisma/schema.prisma +++ /dev/null @@ -1,1059 +0,0 @@ -//******** AUTO GENERATED FILE, DO NOT EDIT. ********* - - - -// This is your Prisma schema file, -// learn more about it in the docs: https://pris.ly/d/prisma-schema - -generator client { - provider = "prisma-client-js" - binaryTargets = ["native", "linux-arm64-openssl-1.0.x"] //, "linux-arm64-openssl-3.0.x"] -} - -datasource db { - provider = "postgresql" - url = env("DATABASE_URL") -} - -enum Chain { - ARBITRUM - AVALANCHE - BASE - FANTOM - GNOSIS - MAINNET - OPTIMISM - POLYGON - SEPOLIA - ZKEVM - FRAXTAL - MODE - SONIC -} - -model PrismaLastBlockSynced { - @@id([category, chain]) - - category PrismaLastBlockSyncedCategory - chain Chain @default(MAINNET) - blockNumber Int -} - -enum PrismaLastBlockSyncedCategory { - POOLS - POOLS_V3 - FARMS - COW_AMM_POOLS - COW_AMM_JOIN_EXITS - COW_AMM_SWAPS - COW_AMM_SNAPSHOTS - SNAPSHOTS_COW_AMM - SNAPSHOTS_V2 - SNAPSHOTS_V3 -} - - -model PrismaFbeets { - id String @id - ratio String -} - -model PrismaPool { - @@id([id, chain]) - @@unique([address, chain]) - - id String - chain Chain - createTime Int - - address String - symbol String - name String - type PrismaPoolType - version Int @default(1) - decimals Int @default(18) - pauseManager String? - swapFeeManager String - poolCreator String? - factory String? - - protocolVersion Int @default(2) - - typeData Json @default("{}") - - tokens PrismaPoolToken[] - - dynamicData PrismaPoolDynamicData? - - liquidityManagement Json @default("{}") - - snapshots PrismaPoolSnapshot[] - swaps PrismaPoolSwap[] - aprItems PrismaPoolAprItem[] - categories String[] @default([]) - tokensWithPoolNested PrismaPoolToken[] @relation(name: "PoolNestedInToken") - - allTokens PrismaPoolExpandedTokens[] - allTokensNested PrismaPoolExpandedTokens[] @relation(name: "NestedPoolForAllToken") - filters PrismaPoolFilterMap[] - staking PrismaPoolStaking[] - - userWalletBalances PrismaUserWalletBalance[] - userStakedBalances PrismaUserStakedBalance[] - - userPoolBalanceSnapshots PrismaUserPoolBalanceSnapshot[] - - hook Json? - - @@index([categories(ops: ArrayOps)], type: Gin) -} - -enum PrismaPoolType { - WEIGHTED - STABLE - META_STABLE - PHANTOM_STABLE - COMPOSABLE_STABLE - ELEMENT - UNKNOWN - LIQUIDITY_BOOTSTRAPPING - INVESTMENT - GYRO - GYRO3 - GYROE - FX - COW_AMM -} - -model PrismaPoolDynamicData { - @@id([id, chain]) - @@unique([poolId, chain]) - // Indexes used for sorting pools in the UI by different metrics - @@index(totalLiquidity) - @@index(totalSharesNum(sort: Desc)) - @@index(volume24h) - @@index(apr) - - id String - poolId String - pool PrismaPool @relation(fields:[poolId, chain], references: [id, chain], onDelete: Cascade) - chain Chain - blockNumber Int - updatedAt DateTime @updatedAt - - protocolYieldFee String? - protocolSwapFee String @default("0") - swapFee String - aggregateSwapFee String @default("0") - aggregateYieldFee String @default("0") - swapEnabled Boolean - isPaused Boolean @default(false) - isInRecoveryMode Boolean @default(false) - totalShares String - totalSharesNum Float @default(0) - totalLiquidity Float - volume24h Float @default(0) - fees24h Float @default(0) - surplus24h Float @default(0) - yieldCapture24h Float @default(0) - apr Float @default(0) - volume48h Float @default(0) - fees48h Float @default(0) - surplus48h Float @default(0) - yieldCapture48h Float @default(0) - totalLiquidity24hAgo Float @default(0) - totalShares24hAgo String @default("0") - lifetimeVolume Float @default(0) - lifetimeSwapFees Float @default(0) - holdersCount Int @default(0) - swapsCount Int @default(0) - - sharePriceAth Float @default(0) - sharePriceAthTimestamp Int @default(0) - sharePriceAtl Float @default(0) - sharePriceAtlTimestamp Int @default(0) - - totalLiquidityAth Float @default(0) - totalLiquidityAthTimestamp Int @default(0) - totalLiquidityAtl Float @default(0) - totalLiquidityAtlTimestamp Int @default(0) - - volume24hAth Float @default(0) - volume24hAthTimestamp Int @default(0) - volume24hAtl Float @default(0) - volume24hAtlTimestamp Int @default(0) - - fees24hAth Float @default(0) - fees24hAthTimestamp Int @default(0) - fees24hAtl Float @default(0) - fees24hAtlTimestamp Int @default(0) - - tokenPairsData Json @default("[]") -} - -model PrismaPoolToken { - @@id([id, chain]) - - id String - poolId String - pool PrismaPool @relation(fields:[poolId, chain], references: [id, chain], onDelete: Cascade) - chain Chain - - address String - token PrismaToken @relation(fields:[address, chain], references: [address, chain], onDelete: Cascade) - index Int - - nestedPoolId String? - nestedPool PrismaPool? @relation(name: "PoolNestedInToken", fields:[nestedPoolId, chain], references: [id, chain], onDelete: Cascade) - - priceRateProvider String? - exemptFromProtocolYieldFee Boolean @default(false) - - scalingFactor String? - - balance String - balanceUSD Float - weight String? - priceRate String - latestFxPrice Float? - - @@index([poolId, chain]) - @@index([address, chain]) - @@index([nestedPoolId, chain]) -} - -model PrismaPoolSwap { - @@id([id, chain]) - - id String - poolId String - pool PrismaPool @relation(fields:[poolId, chain], references: [id, chain], onDelete: Cascade) - chain Chain - - userAddress String - tokenIn String - tokenInSym String - tokenOut String - tokenOutSym String - tokenAmountIn String - tokenAmountOut String - timestamp Int - tx String - valueUSD Float - - batchSwapId String? - batchSwap PrismaPoolBatchSwap? @relation(fields:[batchSwapId, chain], references: [id, chain]) - batchSwapIdx Int? -} - -model PrismaPoolBatchSwap { - @@id([id, chain]) - - id String - chain Chain - userAddress String - tokenIn String - tokenOut String - tokenAmountIn String - tokenAmountOut String - timestamp Int - tx String - valueUSD Float - tokenInPrice Float @default(0) - tokenOutPrice Float @default(0) - - swaps PrismaPoolSwap[] -} - -model PrismaPoolAprItem { - @@id([id, chain]) - - id String - poolId String - pool PrismaPool @relation(fields:[poolId, chain], references: [id, chain], onDelete: Cascade) - chain Chain - title String - rewardTokenAddress String? - rewardTokenSymbol String? - apr Float - range PrismaPoolAprRange? - - type PrismaPoolAprType? - group PrismaPoolAprItemGroup? -} - -model PrismaPoolAprRange { - @@id([id, chain]) - @@unique([aprItemId, chain]) - - id String - chain Chain - aprItemId String - aprItem PrismaPoolAprItem @relation(fields:[aprItemId, chain], references: [id, chain], onDelete: Cascade) - min Float - max Float -} - -enum PrismaPoolAprType { - SWAP_FEE - SWAP_FEE_24H - SWAP_FEE_7D - SWAP_FEE_30D - NATIVE_REWARD - THIRD_PARTY_REWARD - IB_YIELD - VOTING - LOCKING - AURA - MERKL - SURPLUS - SURPLUS_24H - SURPLUS_7D - SURPLUS_30D -} - -enum PrismaPoolAprItemGroup { - BEEFY - OVERNIGHT - REAPER - YEARN - IDLE - TRANCHESS - GEARBOX - AAVE - ANKR - TESSERA - TETU - OVIX - EULER - MAKER - DEFAULT - MORPHO -} - -model PrismaPoolExpandedTokens { - @@id([tokenAddress, poolId, chain]) - - tokenAddress String - token PrismaToken @relation(fields:[tokenAddress, chain], references: [address, chain]) - poolId String - pool PrismaPool @relation(fields:[poolId, chain], references: [id, chain], onDelete: Cascade) - chain Chain - - nestedPoolId String? - nestedPool PrismaPool? @relation(name: "NestedPoolForAllToken", fields:[nestedPoolId, chain], references: [id, chain], onDelete: Cascade) -} - - -model PrismaPoolFilter { - @@id([id, chain]) - - id String - chain Chain - title String - - pools PrismaPoolFilterMap[] -} - -model PrismaPoolFilterMap { - @@id([id, chain]) - - id String - chain Chain - filterId String - filter PrismaPoolFilter @relation(fields:[filterId, chain], references: [id, chain]) - poolId String - pool PrismaPool @relation(fields:[poolId, chain], references: [id, chain], onDelete: Cascade) -} - -model PrismaPoolStaking { - @@id([id, chain]) - - id String - poolId String - pool PrismaPool @relation(fields:[poolId, chain], references: [id, chain], onDelete: Cascade) - chain Chain - type PrismaPoolStakingType - address String - farm PrismaPoolStakingMasterChefFarm? - gauge PrismaPoolStakingGauge? - reliquary PrismaPoolStakingReliquaryFarm? - aura PrismaPoolStakingAura? - vebal PrismaPoolStakingVebal? - - userStakedBalances PrismaUserStakedBalance[] -} - - -enum PrismaPoolStakingType { - MASTER_CHEF - GAUGE - RELIQUARY - FRESH_BEETS - AURA - VEBAL -} - -model PrismaPoolStakingMasterChefFarm { - @@id([id, chain]) - @@unique([stakingId, chain]) - - id String - stakingId String - staking PrismaPoolStaking @relation(fields:[stakingId, chain], references: [id, chain]) - chain Chain - beetsPerBlock String - rewarders PrismaPoolStakingMasterChefFarmRewarder[] -} - -model PrismaPoolStakingMasterChefFarmRewarder { - @@id([id, chain]) - - id String - farmId String - farm PrismaPoolStakingMasterChefFarm @relation(fields:[farmId, chain], references: [id, chain]) - chain Chain - - address String - tokenAddress String - rewardPerSecond String -} - -model PrismaPoolStakingGauge { - @@id([id, chain]) - @@unique([stakingId, chain]) - - id String - stakingId String - staking PrismaPoolStaking @relation(fields:[stakingId, chain], references: [id, chain], onDelete: Cascade) - chain Chain - - gaugeAddress String - votingGauge PrismaVotingGauge[] - rewards PrismaPoolStakingGaugeReward[] - status PrismaPoolStakingGaugeStatus @default(ACTIVE) - version Int @default(1) - workingSupply String @default("0.0") - totalSupply String @default("0.0") -} - -model PrismaPoolStakingAura { - @@id([id, chain]) - @@unique([stakingId, chain]) - - id String - stakingId String - staking PrismaPoolStaking @relation(fields:[stakingId, chain], references: [id, chain], onDelete: Cascade) - chain Chain - - auraPoolAddress String - auraPoolId String - apr Float - isShutdown Boolean -} - -model PrismaPoolStakingVebal { - @@id([id, chain]) - @@unique([stakingId, chain]) - - id String - stakingId String - staking PrismaPoolStaking @relation(fields:[stakingId, chain], references: [id, chain], onDelete: Cascade) - chain Chain - - vebalAddress String -} - -enum PrismaPoolStakingGaugeStatus { - KILLED - ACTIVE - PREFERRED -} - - -model PrismaPoolStakingGaugeReward{ - @@id([id, chain]) - - id String - gaugeId String - gauge PrismaPoolStakingGauge @relation(fields:[gaugeId, chain], references: [id, chain], onDelete: Cascade) - chain Chain - - tokenAddress String - rewardPerSecond String - isVeBalemissions Boolean @default(false) -} - - -model PrismaPoolStakingReliquaryFarm { - @@id([id, chain]) - @@unique([stakingId, chain]) - - id String - stakingId String - staking PrismaPoolStaking @relation(fields:[stakingId, chain], references: [id, chain]) - chain Chain - - name String - beetsPerSecond String - totalBalance String @default("0") - totalWeightedBalance String @default("0") - levels PrismaPoolStakingReliquaryFarmLevel[] - snapshots PrismaReliquaryFarmSnapshot[] - relicSnapshots PrismaUserRelicSnapshot[] -} - -model PrismaPoolStakingReliquaryFarmLevel { - @@id([id, chain]) - - id String - farmId String - farm PrismaPoolStakingReliquaryFarm @relation(fields:[farmId, chain], references: [id, chain]) - chain Chain - - level Int - balance String - requiredMaturity Int - allocationPoints Int - apr Float -} - - -model PrismaPoolSnapshot { - @@id([id, chain]) - - id String - poolId String - pool PrismaPool @relation(fields:[poolId, chain], references: [id, chain], onDelete: Cascade) - chain Chain - timestamp Int - protocolVersion Int @default(2) - - totalLiquidity Float - sharePrice Float - volume24h Float - fees24h Float - surplus24h Float @default(0) - totalShares String - totalSharesNum Float - totalSwapVolume Float - totalSwapFee Float - totalSurplus Float @default(0) - swapsCount Int - holdersCount Int - amounts String[] - totalVolumes String[] @default([]) // Used for V3 snapshots - dailyVolumes String[] @default([]) // Used for V3 snapshots - totalSwapFees String[] @default([]) // Used for V3 snapshots - dailySwapFees String[] @default([]) // Used for V3 snapshots - totalSurpluses String[] @default([]) // Used for cow amm snapshots - dailySurpluses String[] @default([]) // Used for cow amm snapshots - totalProtocolSwapFees String[] @default([]) // Used for V3 snapshots - dailyProtocolSwapFees String[] @default([]) // Used for V3 snapshots - totalProtocolYieldFees String[] @default([]) // Used for V3 snapshots - dailyProtocolYieldFees String[] @default([]) // Used for V3 snapshots - - @@index([protocolVersion]) - @@index([timestamp(sort: Desc)]) - @@index([poolId, chain]) -} - -model PrismaReliquaryFarmSnapshot { - @@id([id, chain]) - - id String - farmId String - stakingFarm PrismaPoolStakingReliquaryFarm @relation(fields:[farmId, chain], references: [id, chain]) - chain Chain - - timestamp Int - relicCount Int - userCount Int - totalBalance String - dailyDeposited String - dailyWithdrawn String - totalLiquidity String @default("0") - levelBalances PrismaReliquaryLevelSnapshot[] - tokenBalances PrismaReliquaryTokenBalanceSnapshot[] -} - -model PrismaReliquaryLevelSnapshot { - @@id([id, chain]) - - id String - farmSnapshotId String - farmSnapshot PrismaReliquaryFarmSnapshot @relation(fields:[farmSnapshotId, chain], references: [id, chain]) - chain Chain - - level String - balance String -} - -model PrismaReliquaryTokenBalanceSnapshot { - @@id([id, chain]) - - id String - farmSnapshotId String - farmSnapshot PrismaReliquaryFarmSnapshot @relation(fields:[farmSnapshotId, chain], references: [id, chain]) - chain Chain - - address String - symbol String - name String - decimals Int - balance String -} - -enum PoolEventType { - JOIN - EXIT - SWAP -} - -model PrismaPoolEvent { - id String - tx String - type PoolEventType - chain Chain - poolId String - userAddress String - blockNumber Int - blockTimestamp Int - logIndex Int - protocolVersion Int @default(2) - valueUSD Float - payload Json - - @@id([id, chain]) - @@index([type]) - @@index([chain, poolId, userAddress]) - @@index([protocolVersion]) - @@index([blockTimestamp(sort: Desc), blockNumber(sort: Desc), logIndex(sort: Desc)]) - @@map("PartitionedPoolEvent") -} - - - -model PrismaSftmxStakingData { - id String @id - totalFtm String - totalFtmStaked String - totalFtmInPool String - numberOfVaults Int - stakingApr String - exchangeRate String - - maxDepositLimit String - minDepositLimit String - withdrawalDelay Int - - undelegatePaused Boolean - withdrawPaused Boolean - maintenancePaused Boolean - - withdrawalRequests PrismaSftmxWithdrawalRequest[] - vaults PrismaSftmxVault[] - - snapshots PrismaSftmxStakingDataSnapshot[] -} - -model PrismaSftmxVault { - id String @id - vaultIndex Int - ftmStakingId String - ftmStaking PrismaSftmxStakingData @relation(fields:[ftmStakingId], references: [id]) - - ftmStaked String - matured Boolean - unlockTimestamp Int - validatorId String - validatorAddress String -} - -model PrismaSftmxWithdrawalRequest { - id String @id - ftmStakingId String - ftmStaking PrismaSftmxStakingData @relation(fields:[ftmStakingId], references: [id]) - - user String - amountSftmx String - requestTimestamp Int - isWithdrawn Boolean -} - -model PrismaSftmxStakingDataSnapshot { - id String @id - ftmStakingId String - ftmStaking PrismaSftmxStakingData @relation(fields:[ftmStakingId], references: [id]) - - timestamp Int - freePoolFtmAmount String - lockedFtmAmount String - totalFtmAmount String - exchangeRate String -} - - -model PrismaStakedSonicData { - id String @id - totalAssets String - totalAssetsDelegated String - totalAssetsPool String - stakingApr String - exchangeRate String - - - delegatedValidators PrismaStakedSonicDelegatedValidator[] - snapshots PrismaSonicStakingDataSnapshot[] - -} - -model PrismaStakedSonicDelegatedValidator { - validatorId String @id - - sonicStakingId String - sonicStaking PrismaStakedSonicData @relation(fields:[sonicStakingId], references: [id]) - - assetsDelegated String -} - - -model PrismaSonicStakingDataSnapshot { - id String @id - sonicStakingId String - sonicStaking PrismaStakedSonicData @relation(fields:[sonicStakingId], references: [id]) - - timestamp Int - totalAssetsPool String - totalAssetsDelegated String - totalAssets String - exchangeRate String -} - -model PrismaToken { - @@id([address, chain]) - - address String - chain Chain - - symbol String - name String - description String? - decimals Int - - logoURI String? - websiteUrl String? - discordUrl String? - telegramUrl String? - twitterUsername String? - priority Int @default(0) - coingeckoPlatformId String? - coingeckoContractAddress String? - coingeckoTokenId String? - excludedFromCoingecko Boolean @default(false) - - currentPrice PrismaTokenCurrentPrice? - dynamicData PrismaTokenDynamicData? - prices PrismaTokenPrice[] - - types PrismaTokenType[] - - expandedPools PrismaPoolExpandedTokens[] - poolTokens PrismaPoolToken[] - - underlyingTokenAddress String? - isBufferAllowed Boolean @default(true) - - walletBalances PrismaUserWalletBalance[] - stakedBalances PrismaUserStakedBalance[] - - @@index([address, chain]) -} - - -model PrismaTokenCurrentPrice { - @@id([tokenAddress, chain]) - - tokenAddress String - token PrismaToken @relation(fields:[tokenAddress, chain], references: [address, chain], onDelete: Cascade) - chain Chain - - updatedAt DateTime @updatedAt - updatedBy String? - timestamp Int - price Float - - @@index(tokenAddress) - @@index(chain) -} - -model PrismaTokenPrice { - @@id([tokenAddress, timestamp, chain]) - - tokenAddress String - token PrismaToken @relation(fields:[tokenAddress, chain], references: [address, chain], onDelete: Cascade) - chain Chain - updatedAt DateTime @updatedAt - updatedBy String? - timestamp Int - price Float - - high Float - low Float - open Float - close Float - - @@index(timestamp) - @@index(chain) - @@index(tokenAddress) -} - -model PrismaTokenDynamicData { - @@id([tokenAddress, chain]) - - coingeckoId String - tokenAddress String - token PrismaToken @relation(fields:[tokenAddress, chain], references: [address, chain], onDelete: Cascade) - chain Chain - updatedAt DateTime @updatedAt - - price Float - ath Float - atl Float - marketCap Float? - fdv Float? - high24h Float - low24h Float - priceChange24h Float - priceChangePercent24h Float - priceChangePercent7d Float? - priceChangePercent14d Float? - priceChangePercent30d Float? - - @@index([tokenAddress, chain]) -} - -model PrismaTokenType { - @@id([id, chain]) - @@unique([tokenAddress, type, chain]) - - id String - tokenAddress String - token PrismaToken @relation(fields:[tokenAddress, chain], references: [address, chain], onDelete: Cascade) - chain Chain - type PrismaTokenTypeOption -} - -enum PrismaTokenTypeOption { - WHITE_LISTED - BPT - PHANTOM_BPT - ERC4626 -} - -model PrismaPriceRateProviderData { - @@id([chain, rateProviderAddress]) - - chain Chain - rateProviderAddress String - - tokenAddress String - - reviewed Boolean - name String? - summary String? - reviewUrl String? - warnings String? - upgradableComponents Json? - - @@index([chain, rateProviderAddress]) - @@index([tokenAddress]) -} - -model PrismaErc4626ReviewData { - @@id([chain, erc4626Address]) - - chain Chain - erc4626Address String - - assetAddress String - - name String - summary String - reviewFile String - warnings String - - @@index([chain, erc4626Address]) - @@index([assetAddress]) -} - -model PrismaUser { - address String @id - - userSnapshots PrismaUserPoolBalanceSnapshot[] - relicSnapshots PrismaUserRelicSnapshot[] - - walletBalances PrismaUserWalletBalance[] - stakedBalances PrismaUserStakedBalance[] - - veBalBalance PrismaVeBalUserBalance[] - - veBalBalanceSnapshots PrismaVeBalUserBalanceSnapshot[] -} - - - -model PrismaUserWalletBalance { - @@id([id, chain]) - @@index(userAddress) - - id String - chain Chain - - balance String - balanceNum Float - updatedAt DateTime @updatedAt - - userAddress String - user PrismaUser @relation(fields:[userAddress], references: [address], onDelete: Cascade) - - poolId String? - pool PrismaPool? @relation(fields:[poolId, chain], references: [id, chain], onDelete: Cascade) - - tokenAddress String - token PrismaToken @relation(fields:[tokenAddress, chain], references: [address, chain], onDelete: Cascade) -} - - -model PrismaUserStakedBalance { - @@id([id, chain]) - @@index(userAddress) - - id String - chain Chain - balance String - balanceNum Float - updatedAt DateTime @updatedAt - - userAddress String - user PrismaUser @relation(fields:[userAddress], references: [address], onDelete: Cascade) - - poolId String? - pool PrismaPool? @relation(fields:[poolId, chain], references: [id, chain], onDelete: Cascade) - - tokenAddress String - token PrismaToken @relation(fields:[tokenAddress, chain], references: [address, chain], onDelete: Cascade) - - stakingId String - staking PrismaPoolStaking @relation(fields:[stakingId, chain], references: [id, chain], onDelete: Cascade) -} - -model PrismaUserBalanceSyncStatus { - @@id([type, chain]) - - type PrismaUserBalanceType - chain Chain - blockNumber Int -} - -enum PrismaUserBalanceType { - WALLET - STAKED - RELIQUARY - AURA - VEBAL -} - -model PrismaUserPoolBalanceSnapshot { - @@id([id, chain]) - - id String - userAddress String - user PrismaUser @relation(fields:[userAddress], references: [address]) - chain Chain - timestamp Int - - poolToken String - poolId String? - pool PrismaPool? @relation(fields:[poolId, chain], references:[id, chain]) - - walletBalance String - gaugeBalance String - farmBalance String - totalBalance String - percentShare String - totalValueUSD String - fees24h String -} - -model PrismaUserRelicSnapshot { - @@id([id, chain]) - - id String - userAddress String - user PrismaUser @relation(fields:[userAddress], references: [address]) - chain Chain - timestamp Int - - relicId Int - farmId String - farm PrismaPoolStakingReliquaryFarm @relation(fields:[farmId, chain], references: [id, chain]) - balance String - entryTimestamp Int - level Int -} - -model PrismaVeBalUserBalanceSnapshot { - @@id([userAddress, timestamp]) - userAddress String - user PrismaUser @relation(fields:[userAddress], references: [address]) - chain Chain - timestamp Int - - bias String - slope String - balance String -} - -model PrismaVeBalUserBalance { - @@id([id, chain]) - - id String - chain Chain - - balance String - locked String @default("0") - - userAddress String - user PrismaUser @relation(fields:[userAddress], references: [address]) - -} - -model PrismaVeBalTotalSupply { - @@id([address, chain]) - - address String - chain Chain - - totalSupply String -} - -enum PrismaVotingGaugeStatus { - KILLED - ACTIVE -} - -model PrismaVotingGauge { - @@id([id, chain]) - - id String - chain Chain - - stakingGauge PrismaPoolStakingGauge? @relation(fields: [stakingGaugeId, chain], references: [id, chain], onDelete: Cascade) - status PrismaVotingGaugeStatus @default(ACTIVE) - gaugeAddress String - stakingGaugeId String? - relativeWeight String? - relativeWeightCap String? - addedTimestamp Int? -} \ No newline at end of file diff --git a/prisma/schema/base.prisma b/prisma/schema/base.prisma index 122fdb2df..73d61305d 100644 --- a/prisma/schema/base.prisma +++ b/prisma/schema/base.prisma @@ -3,6 +3,7 @@ generator client { provider = "prisma-client-js" + previewFeatures = ["prismaSchemaFolder"] binaryTargets = ["native", "linux-arm64-openssl-1.0.x"] //, "linux-arm64-openssl-3.0.x"] }