// =============================================================================
// MPC Service - Prisma Schema
// =============================================================================
//
// mpc-service 作为 MPC 服务网关:
// 1. 缓存 username + publicKey 的映射关系
// 2. 存储 delegate share (由 mpc-system delegate server-party-api 返回)
//
// 所有其他 MPC 相关数据由 mpc-system 管理
//
// =============================================================================

generator client {
  provider = "prisma-client-js"
}

datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}

// =============================================================================
// MPC Wallets Table (缓存用户公钥，用于本地快速查询)
// =============================================================================
model MpcWallet {
  id        String   @id @default(uuid())
  username  String   @unique @db.VarChar(255)
  publicKey String   @map("public_key") @db.Text
  createdAt DateTime @default(now()) @map("created_at")
  updatedAt DateTime @updatedAt @map("updated_at")

  @@index([username], name: "idx_mw_username")
  @@map("mpc_wallets")
}

// =============================================================================
// MPC Shares Table (存储 delegate share，由 mpc-system 返回给用户)
// =============================================================================
model MpcShare {
  id             String   @id @default(uuid())
  username       String   @unique @db.VarChar(255)
  partyId        String   @map("party_id") @db.VarChar(255)
  partyIndex     Int      @map("party_index")
  encryptedShare String   @map("encrypted_share") @db.Text
  createdAt      DateTime @default(now()) @map("created_at")
  updatedAt      DateTime @updatedAt @map("updated_at")

  @@index([username], name: "idx_ms_username")
  @@map("mpc_shares")
}
