From 8d5c76004113d40e3cf950b4ebefcdd43a841aad Mon Sep 17 00:00:00 2001 From: gmbronco <83549293+gmbronco@users.noreply.github.com> Date: Thu, 9 Jan 2025 14:53:42 +0100 Subject: [PATCH] prisma v6 --- .changeset/five-plants-tickle.md | 5 + bun.lockb | Bin 468182 -> 470333 bytes package.json | 6 +- prisma/prisma-merge.ts | 38 -- prisma/prisma-types.ts | 20 +- prisma/schema.prisma | 1085 ------------------------------ prisma/schema/base.prisma | 1 + 7 files changed, 18 insertions(+), 1137 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..818a77131d5422998ea9a5ce4b79cb65ec90e093 100755 GIT binary patch delta 95074 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 delta 93120 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 EUp&HXm;e9( diff --git a/package.json b/package.json index c9354f3e8..968fa3be4 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.2.1", "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 314cdf566..000000000 --- a/prisma/schema.prisma +++ /dev/null @@ -1,1085 +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([id, chain]) - @@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? - - @@index([poolId, chain]) -} - -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? - - @@index([poolId, chain]) -} - -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) - - @@index([tokenAddress, chain]) -} - - -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[] - - @@index([poolId, chain]) -} - - -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 - - @@index([farmId, chain]) -} - -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) - - @@index([gaugeId, chain]) -} - - -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 - - @@index([farmId, chain]) -} - - -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[] - - @@index([farmId, chain]) -} - -model PrismaReliquaryLevelSnapshot { - @@id([id, chain]) - - id String - farmSnapshotId String - farmSnapshot PrismaReliquaryFarmSnapshot @relation(fields:[farmSnapshotId, chain], references: [id, chain]) - chain Chain - - level String - balance String - - @@index([farmSnapshotId, chain]) -} - -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 - - @@index([farmSnapshotId, chain]) -} - -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) - unwrapRate String @default("1") - - 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, chain]) - @@index([tokenAddress, chain]) -} - -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) - - @@index([poolId, chain]) -} - - -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) - - @@index([poolId, chain]) - @@index([stakingId, chain]) -} - -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"] }