From 40ee9aa203ef3019c3a2f91e2ba848b13fac67c2 Mon Sep 17 00:00:00 2001 From: TheRealToxicDev Date: Sun, 1 Mar 2026 01:53:37 -0700 Subject: [PATCH 1/2] chore(bruhh): v3.3.0 --- .env.example | 11 +- .../CODE_OF_CONDUCT.md | 0 CONTRIBUTING.md => .github/CONTRIBUTING.md | 0 .github/DEPLOYMENT.md | 706 +++ SECURITY.md => .github/SECURITY.md | 0 .gitmodules | 2 +- CHANGELOG.md | 65 + README.md | 613 +- app/admin/allocations/page.tsx | 345 ++ app/admin/eggs/page.tsx | 464 ++ app/admin/layout.tsx | 47 +- app/admin/locations/page.tsx | 162 + app/admin/nodes/page.tsx | 417 ++ app/admin/page.tsx | 150 +- app/admin/servers/page.tsx | 358 +- app/admin/settings/page.tsx | 775 ++- app/admin/sync/logs/page.tsx | 110 +- app/admin/sync/page.tsx | 430 +- app/admin/users/page.tsx | 155 +- app/api/admin/servers/route.ts | 129 - app/api/admin/settings/repos/route.ts | 140 - app/api/admin/settings/route.ts | 464 -- app/api/admin/settings/test/route.ts | 97 - app/api/admin/settings/webhooks/route.ts | 260 - app/api/admin/stats/route.ts | 61 - app/api/admin/sync/cancel/route.ts | 28 - app/api/admin/sync/logs/route.ts | 39 - app/api/admin/sync/route.ts | 260 - app/api/admin/sync/settings/route.ts | 40 - app/api/admin/users/roles/route.ts | 76 - app/api/admin/users/route.ts | 125 - app/api/auth/[...nextauth]/route.ts | 3 - app/api/auth/forgot-password/route.ts | 100 - app/api/auth/magic-link/route.ts | 110 - app/api/auth/magic-link/verify/route.ts | 140 - app/api/auth/register/route.ts | 107 - app/api/auth/reset-password/route.ts | 101 - app/api/auth/verify-email/route.ts | 157 - app/api/dashboard/account/password/route.ts | 93 - app/api/dashboard/account/route.ts | 144 - app/api/dashboard/servers/route.ts | 139 - app/api/dashboard/stats/route.ts | 121 - app/api/github/releases/route.ts | 45 +- app/api/panel/counts/route.ts | 42 +- app/api/panel/nodes/route.ts | 87 +- app/api/panel/servers/route.ts | 59 +- app/api/panel/stats/route.ts | 55 +- app/api/panel/users/route.ts | 53 +- app/api/setup/route.ts | 123 - app/api/stats/route.ts | 56 - app/auth/forgot-password/page.tsx | 4 +- app/auth/login/page.tsx | 4 +- app/auth/reset-password/page.tsx | 4 +- app/auth/verify-email/page.tsx | 63 +- app/dashboard/account/page.tsx | 283 +- app/dashboard/layout.tsx | 11 +- app/dashboard/page.tsx | 64 +- app/dashboard/servers/page.tsx | 113 +- app/favicon.ico | Bin 0 -> 71612 bytes app/games/hytale/page.tsx | 248 +- app/globals.css | 407 ++ app/layout.tsx | 39 +- app/setup/page.tsx | 261 +- bun.lock | 212 +- docs/CONFIG_SYSTEM.md | 332 -- docs/WEBHOOK_DISPATCHER_README.md | 297 - docs/WEBHOOK_INTEGRATION_GUIDE.md | 310 - docs/WEBHOOK_NOTIFICATION_COMPLETE.md | 226 - docs/WEBHOOK_QUICK_REFERENCE.ts | 261 - package-lock.json | 5042 ----------------- package.json | 10 +- packages/auth/components/auth-provider.tsx | 8 +- .../auth/components/forgot-password-form.tsx | 20 +- .../auth/components/login-form-multistep.tsx | 39 +- packages/auth/components/login-form.tsx | 23 +- packages/auth/components/logout-button.tsx | 5 +- packages/auth/components/register-form.tsx | 21 +- .../auth/components/reset-password-form.tsx | 28 +- packages/auth/components/user-menu.tsx | 38 +- packages/auth/index.ts | 10 +- packages/auth/lib/auth-client.ts | 206 + packages/auth/lib/auth-context.tsx | 226 + packages/auth/lib/auth-server.ts | 163 + packages/auth/lib/auth-service.ts | 313 - packages/auth/lib/auth.ts | 280 - packages/core/README.md | 182 + packages/core/dispatchers/email.ts | 675 --- packages/core/dispatchers/notifications.ts | 256 - packages/core/dispatchers/webhooks.ts | 456 -- packages/core/hooks/use-admin-api.ts | 271 + packages/core/hooks/use-api.ts | 70 + packages/core/hooks/use-public-api.ts | 36 + packages/core/index.ts | 61 + packages/core/lib/api.ts | 116 + packages/core/lib/config.ts | 238 - packages/core/lib/db-test.ts | 186 - packages/core/lib/prisma.ts | 20 - packages/core/lib/query-client.tsx | 28 + packages/core/lib/scheduler.ts | 51 - packages/core/lib/setup.ts | 93 - packages/core/lib/sync.ts | 1104 ---- packages/core/lib/system-settings.ts | 69 - packages/core/middleware/setup.ts | 45 +- packages/panels/properties/egg.ts | 143 - packages/panels/properties/server.ts | 169 - packages/panels/pterodactyl.ts | 1 - packages/panels/pterodactyl/application.ts | 102 - packages/panels/pterodactyl/client.ts | 15 - packages/panels/pterodactyl/core.ts | 50 - packages/panels/pterodactyl/index.ts | 4 - packages/panels/pterodactyl/types.ts | 151 - packages/panels/pterodactyl/websocket.ts | 0 packages/panels/virtfusion.ts | 242 - .../components/Layouts/About/about-page.tsx | 6 +- packages/ui/components/Layouts/Home/about.tsx | 27 +- packages/ui/components/Layouts/Home/games.tsx | 2 +- packages/ui/components/Layouts/Home/hero.tsx | 10 +- packages/ui/components/Static/navigation.tsx | 30 +- packages/ui/components/layout-chrome.tsx | 4 +- packages/ui/components/theme-provider.tsx | 2 +- packages/ui/components/theme-toggle.tsx | 55 +- prisma.config.ts | 12 - prisma/generated/prisma/browser.ts | 139 - prisma/generated/prisma/client.ts | 161 - prisma/generated/prisma/commonInputTypes.ts | 725 --- prisma/generated/prisma/enums.ts | 68 - prisma/generated/prisma/internal/class.ts | 420 -- .../prisma/internal/prismaNamespace.ts | 3034 ---------- .../prisma/internal/prismaNamespaceBrowser.ts | 522 -- prisma/generated/prisma/models.ts | 35 - prisma/generated/prisma/models/Allocation.ts | 1746 ------ prisma/generated/prisma/models/Config.ts | 1116 ---- .../generated/prisma/models/DiscordWebhook.ts | 1647 ------ prisma/generated/prisma/models/Egg.ts | 1966 ------- prisma/generated/prisma/models/EggProperty.ts | 1461 ----- prisma/generated/prisma/models/EggVariable.ts | 1761 ------ prisma/generated/prisma/models/Invoice.ts | 2001 ------- prisma/generated/prisma/models/InvoiceItem.ts | 1617 ------ prisma/generated/prisma/models/Location.ts | 1374 ----- prisma/generated/prisma/models/Nest.ts | 1430 ----- prisma/generated/prisma/models/Node.ts | 2334 -------- prisma/generated/prisma/models/Payment.ts | 1489 ----- prisma/generated/prisma/models/Product.ts | 2036 ------- prisma/generated/prisma/models/Server.ts | 3770 ------------ .../generated/prisma/models/ServerBackup.ts | 1588 ------ .../generated/prisma/models/ServerDatabase.ts | 1536 ----- .../generated/prisma/models/ServerProperty.ts | 1381 ----- .../generated/prisma/models/ServerVariable.ts | 1551 ----- prisma/generated/prisma/models/Session.ts | 1340 ----- .../generated/prisma/models/SupportTicket.ts | 1935 ------- .../prisma/models/SupportTicketReply.ts | 1577 ------ prisma/generated/prisma/models/SyncLog.ts | 1338 ----- prisma/generated/prisma/models/User.ts | 3356 ----------- .../prisma/models/VerificationToken.ts | 1122 ---- .../20251222064534_init/migration.sql | 55 - .../migration.sql | 267 - .../migration.sql | 3 - .../migration.sql | 21 - .../migration.sql | 13 - .../migration.sql | 2 - .../migration.sql | 39 - .../migration.sql | 2 - .../migration.sql | 4 - .../migration.sql | 12 - .../migration.sql | 15 - .../migration.sql | 8 - .../migration.sql | 315 - .../migration.sql | 14 - .../migration.sql | 14 - .../migration.sql | 2 - .../20251224071655_add/migration.sql | 19 - prisma/migrations/migration_lock.toml | 3 - prisma/schema.prisma | 699 --- proxy.ts | 162 +- translations | 2 +- tsconfig.json | 2 +- 176 files changed, 6116 insertions(+), 65950 deletions(-) rename CODE_OF_CONDUCT.md => .github/CODE_OF_CONDUCT.md (100%) rename CONTRIBUTING.md => .github/CONTRIBUTING.md (100%) create mode 100644 .github/DEPLOYMENT.md rename SECURITY.md => .github/SECURITY.md (100%) create mode 100644 app/admin/allocations/page.tsx create mode 100644 app/admin/eggs/page.tsx create mode 100644 app/admin/locations/page.tsx create mode 100644 app/admin/nodes/page.tsx delete mode 100644 app/api/admin/servers/route.ts delete mode 100644 app/api/admin/settings/repos/route.ts delete mode 100644 app/api/admin/settings/route.ts delete mode 100644 app/api/admin/settings/test/route.ts delete mode 100644 app/api/admin/settings/webhooks/route.ts delete mode 100644 app/api/admin/stats/route.ts delete mode 100644 app/api/admin/sync/cancel/route.ts delete mode 100644 app/api/admin/sync/logs/route.ts delete mode 100644 app/api/admin/sync/route.ts delete mode 100644 app/api/admin/sync/settings/route.ts delete mode 100644 app/api/admin/users/roles/route.ts delete mode 100644 app/api/admin/users/route.ts delete mode 100644 app/api/auth/[...nextauth]/route.ts delete mode 100644 app/api/auth/forgot-password/route.ts delete mode 100644 app/api/auth/magic-link/route.ts delete mode 100644 app/api/auth/magic-link/verify/route.ts delete mode 100644 app/api/auth/register/route.ts delete mode 100644 app/api/auth/reset-password/route.ts delete mode 100644 app/api/auth/verify-email/route.ts delete mode 100644 app/api/dashboard/account/password/route.ts delete mode 100644 app/api/dashboard/account/route.ts delete mode 100644 app/api/dashboard/servers/route.ts delete mode 100644 app/api/dashboard/stats/route.ts delete mode 100644 app/api/setup/route.ts delete mode 100644 app/api/stats/route.ts create mode 100644 app/favicon.ico delete mode 100644 docs/CONFIG_SYSTEM.md delete mode 100644 docs/WEBHOOK_DISPATCHER_README.md delete mode 100644 docs/WEBHOOK_INTEGRATION_GUIDE.md delete mode 100644 docs/WEBHOOK_NOTIFICATION_COMPLETE.md delete mode 100644 docs/WEBHOOK_QUICK_REFERENCE.ts delete mode 100644 package-lock.json create mode 100644 packages/auth/lib/auth-client.ts create mode 100644 packages/auth/lib/auth-context.tsx create mode 100644 packages/auth/lib/auth-server.ts delete mode 100644 packages/auth/lib/auth-service.ts delete mode 100644 packages/auth/lib/auth.ts create mode 100644 packages/core/README.md delete mode 100644 packages/core/dispatchers/email.ts delete mode 100644 packages/core/dispatchers/notifications.ts delete mode 100644 packages/core/dispatchers/webhooks.ts create mode 100644 packages/core/hooks/use-admin-api.ts create mode 100644 packages/core/hooks/use-api.ts create mode 100644 packages/core/hooks/use-public-api.ts create mode 100644 packages/core/index.ts create mode 100644 packages/core/lib/api.ts delete mode 100644 packages/core/lib/config.ts delete mode 100644 packages/core/lib/db-test.ts delete mode 100644 packages/core/lib/prisma.ts create mode 100644 packages/core/lib/query-client.tsx delete mode 100644 packages/core/lib/scheduler.ts delete mode 100644 packages/core/lib/setup.ts delete mode 100644 packages/core/lib/sync.ts delete mode 100644 packages/core/lib/system-settings.ts delete mode 100644 packages/panels/properties/egg.ts delete mode 100644 packages/panels/properties/server.ts delete mode 100644 packages/panels/pterodactyl.ts delete mode 100644 packages/panels/pterodactyl/application.ts delete mode 100644 packages/panels/pterodactyl/client.ts delete mode 100644 packages/panels/pterodactyl/core.ts delete mode 100644 packages/panels/pterodactyl/index.ts delete mode 100644 packages/panels/pterodactyl/types.ts delete mode 100644 packages/panels/pterodactyl/websocket.ts delete mode 100644 packages/panels/virtfusion.ts delete mode 100644 prisma.config.ts delete mode 100644 prisma/generated/prisma/browser.ts delete mode 100644 prisma/generated/prisma/client.ts delete mode 100644 prisma/generated/prisma/commonInputTypes.ts delete mode 100644 prisma/generated/prisma/enums.ts delete mode 100644 prisma/generated/prisma/internal/class.ts delete mode 100644 prisma/generated/prisma/internal/prismaNamespace.ts delete mode 100644 prisma/generated/prisma/internal/prismaNamespaceBrowser.ts delete mode 100644 prisma/generated/prisma/models.ts delete mode 100644 prisma/generated/prisma/models/Allocation.ts delete mode 100644 prisma/generated/prisma/models/Config.ts delete mode 100644 prisma/generated/prisma/models/DiscordWebhook.ts delete mode 100644 prisma/generated/prisma/models/Egg.ts delete mode 100644 prisma/generated/prisma/models/EggProperty.ts delete mode 100644 prisma/generated/prisma/models/EggVariable.ts delete mode 100644 prisma/generated/prisma/models/Invoice.ts delete mode 100644 prisma/generated/prisma/models/InvoiceItem.ts delete mode 100644 prisma/generated/prisma/models/Location.ts delete mode 100644 prisma/generated/prisma/models/Nest.ts delete mode 100644 prisma/generated/prisma/models/Node.ts delete mode 100644 prisma/generated/prisma/models/Payment.ts delete mode 100644 prisma/generated/prisma/models/Product.ts delete mode 100644 prisma/generated/prisma/models/Server.ts delete mode 100644 prisma/generated/prisma/models/ServerBackup.ts delete mode 100644 prisma/generated/prisma/models/ServerDatabase.ts delete mode 100644 prisma/generated/prisma/models/ServerProperty.ts delete mode 100644 prisma/generated/prisma/models/ServerVariable.ts delete mode 100644 prisma/generated/prisma/models/Session.ts delete mode 100644 prisma/generated/prisma/models/SupportTicket.ts delete mode 100644 prisma/generated/prisma/models/SupportTicketReply.ts delete mode 100644 prisma/generated/prisma/models/SyncLog.ts delete mode 100644 prisma/generated/prisma/models/User.ts delete mode 100644 prisma/generated/prisma/models/VerificationToken.ts delete mode 100644 prisma/migrations/20251222064534_init/migration.sql delete mode 100644 prisma/migrations/20251222070550_start_ptero_sync_support/migration.sql delete mode 100644 prisma/migrations/20251222073602_add_is_migrated_field/migration.sql delete mode 100644 prisma/migrations/20251222210058_add_system_settings_table/migration.sql delete mode 100644 prisma/migrations/20251222211923_add_crowdin_resend_discord_settings/migration.sql delete mode 100644 prisma/migrations/20251222213127_add_github_token_to_settings/migration.sql delete mode 100644 prisma/migrations/20251223015040_add_discord_webhook_model_with_types_and_scopes/migration.sql delete mode 100644 prisma/migrations/20251223020052_add_support_notification_type/migration.sql delete mode 100644 prisma/migrations/20251223023541_add_setup_status/migration.sql delete mode 100644 prisma/migrations/20251223031136_add_github_repo_encryption/migration.sql delete mode 100644 prisma/migrations/20251224054759_add_config_model/migration.sql delete mode 100644 prisma/migrations/20251224061617_remove_old_system_settings/migration.sql delete mode 100644 prisma/migrations/20251224062456_refactor_panel_stuff_to_key_values/migration.sql delete mode 100644 prisma/migrations/20251224064636_add_panel_specific_admin_roles/migration.sql delete mode 100644 prisma/migrations/20251224065241_add_user_roles_array/migration.sql delete mode 100644 prisma/migrations/20251224065842_make_username_optional/migration.sql delete mode 100644 prisma/migrations/20251224071655_add/migration.sql delete mode 100644 prisma/migrations/migration_lock.toml delete mode 100644 prisma/schema.prisma diff --git a/.env.example b/.env.example index cc552f2..0337c5e 100644 --- a/.env.example +++ b/.env.example @@ -1,10 +1,5 @@ -# Pterodactyl Game Panel -GAMEPANEL_URL="https://panel.example.com" -GAMEPANEL_API="https://panel.example.com/api" -GAMEPANEL_API_KEY="ptla_your_application_api_key" +NEXT_PUBLIC_GO_API_URL="http://localhost:8080" -# NextAuth - generate with: openssl rand -base64 32 -AUTH_SECRET="your_auth_secret_here" +BACKEND_API_KEY="" -# Database -DATABASE_URL="postgresql://user:password@127.0.0.1:65420/nodebyte-site" +JWT_SECRET="" \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md similarity index 100% rename from CODE_OF_CONDUCT.md rename to .github/CODE_OF_CONDUCT.md diff --git a/CONTRIBUTING.md b/.github/CONTRIBUTING.md similarity index 100% rename from CONTRIBUTING.md rename to .github/CONTRIBUTING.md diff --git a/.github/DEPLOYMENT.md b/.github/DEPLOYMENT.md new file mode 100644 index 0000000..52b68b1 --- /dev/null +++ b/.github/DEPLOYMENT.md @@ -0,0 +1,706 @@ +# NodeByte Website Deployment Guide + +Complete guide for deploying the NodeByte Website (Next.js) on Ubuntu using systemd and Nginx with Cloudflare Origin Certificates. + +**Service:** Website/Frontend (Next.js 14+ on Node.js 18+) +**Environment:** Ubuntu 20.04 LTS or 22.04 LTS +**Date:** February 2026 + +--- + +## Table of Contents + +1. [Prerequisites](#prerequisites) +2. [System Setup](#system-setup) +3. [Website Deployment](#website-deployment) +4. [Nginx Configuration](#nginx-configuration) +5. [SSL/TLS Setup](#ssltls-setup) +6. [Monitoring](#monitoring) +7. [Maintenance](#maintenance) +8. [Troubleshooting](#troubleshooting) + +--- + +## Prerequisites + +### Required Software +- Ubuntu 20.04 LTS or 22.04 LTS +- Node.js 18+ +- npm or yarn +- Nginx 1.18+ +- Git + +### Required Accounts +- Cloudflare account with domain configured +- Access to server with sudo privileges + +### Domain Assumptions +- Website: `yourdomain.com` and `www.yourdomain.com` + +--- + +## System Setup + +### 1. Update System +```bash +sudo apt update +sudo apt upgrade -y +``` + +### 2. Install Dependencies + +#### Node.js 18+ +```bash +# Add NodeSource repository for Node.js 18.x +curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - + +# Install Node.js +sudo apt install -y nodejs + +# Verify installation +node --version +npm --version +``` + +#### Nginx +```bash +sudo apt install -y nginx +``` + +#### Additional Tools +```bash +sudo apt install -y git curl wget htop ufw +``` + +### 3. Create Deploy User +```bash +sudo useradd -m -s /bin/bash deploy +sudo usermod -aG sudo deploy +``` + +### 4. Setup Firewall +```bash +sudo ufw enable +sudo ufw allow 22/tcp +sudo ufw allow 80/tcp +sudo ufw allow 443/tcp +``` + +### 5. Create Application Directory +```bash +sudo mkdir -p /var/www/nodebyte/website +sudo chown -R deploy:deploy /var/www/nodebyte +``` + +--- + +## Website Deployment + +### 1. Clone Repository +```bash +cd /var/www/nodebyte +sudo -u deploy git clone website +cd website +sudo -u deploy git checkout development # or your desired branch +``` + +### 2. Setup Environment Variables +```bash +sudo -u deploy cp .env.example .env +sudo -u deploy nano .env +``` + +Configure `.env`: +```env +# Environment +NODE_ENV=production + +# API endpoint +NEXT_PUBLIC_API_URL=https://api.yourdomain.com + +# Analytics (optional) +NEXT_PUBLIC_ANALYTICS_ID=your-analytics-id + +# Vercel Analytics (optional) +NEXT_PUBLIC_VERCEL_ANALYTICS=true + +# Additional environment variables as needed +NEXT_PUBLIC_SITE_URL=https://yourdomain.com +``` + +### 3. Install Dependencies +```bash +cd /var/www/nodebyte/website + +# Clean install (production dependencies only) +sudo -u deploy npm ci + +# Verify installation +sudo -u deploy npm list --depth=0 +``` + +### 4. Build Application +```bash +cd /var/www/nodebyte/website + +# Build Next.js application +sudo -u deploy npm run build + +# Verify build +ls -la .next +``` + +### 5. Create Systemd Service + +Create `/etc/systemd/system/nodebyte-website.service`: + +```ini +[Unit] +Description=NodeByte Website (Next.js) Service +After=network.target +Wants=network.target + +[Service] +Type=simple +User=deploy +WorkingDirectory=/var/www/nodebyte/website +Environment="PATH=/usr/bin:/bin:/usr/local/bin" +Environment="NODE_ENV=production" +Environment="PORT=3000" +ExecStart=/usr/bin/npm start +Restart=on-failure +RestartSec=30 +StandardOutput=journal +StandardError=journal +SyslogIdentifier=nodebyte-website + +# Performance tuning +LimitNOFILE=65000 +LimitNPROC=65000 + +# Security +PrivateTmp=yes +NoNewPrivileges=yes + +[Install] +WantedBy=multi-user.target +``` + +### 6. Enable and Start Service +```bash +sudo systemctl daemon-reload +sudo systemctl enable nodebyte-website +sudo systemctl start nodebyte-website + +# Verify +sudo systemctl status nodebyte-website +sudo journalctl -u nodebyte-website -n 50 + +# Test locally +curl http://localhost:3000 +``` + +--- + +## Nginx Configuration + +### 1. Create Nginx Configuration + +Create `/etc/nginx/sites-available/nodebyte-website`: + +```nginx +upstream website { + server 127.0.0.1:3000 max_fails=3 fail_timeout=30s; + keepalive 32; +} + +server { + listen 80; + listen [::]:80; + server_name yourdomain.com www.yourdomain.com; + + # Redirect HTTP to HTTPS + return 301 https://$server_name$request_uri; +} + +server { + listen 443 ssl http2; + listen [::]:443 ssl http2; + server_name yourdomain.com www.yourdomain.com; + + # Redirect www to non-www (optional) + if ($server_name = www.yourdomain.com) { + return 301 https://yourdomain.com$request_uri; + } + + # SSL certificates (Cloudflare Origin Certificates) + ssl_certificate /etc/ssl/certs/yourdomain.com.crt; + ssl_certificate_key /etc/ssl/private/yourdomain.com.key; + + # SSL configuration + ssl_protocols TLSv1.2 TLSv1.3; + ssl_ciphers HIGH:!aNULL:!MD5; + ssl_prefer_server_ciphers on; + ssl_session_cache shared:SSL:10m; + ssl_session_timeout 10m; + + # Security headers + add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-XSS-Protection "1; mode=block" always; + add_header Referrer-Policy "strict-origin-when-cross-origin" always; + add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always; + + # Logging + access_log /var/log/nginx/website-access.log combined; + error_log /var/log/nginx/website-error.log warn; + + # Rate limiting + limit_req_zone $binary_remote_addr zone=web_limit:10m rate=30r/s; + limit_req zone=web_limit burst=50 nodelay; + + # Client body size limit + client_max_body_size 10M; + + # Gzip compression + gzip on; + gzip_vary on; + gzip_min_length 1024; + gzip_types text/plain text/css text/xml text/javascript + application/x-javascript application/xml+rss + application/javascript application/json + image/svg+xml; + + # Main application proxy + location / { + proxy_pass http://website; + proxy_http_version 1.1; + + # Headers + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + + # Timeouts + proxy_connect_timeout 60s; + proxy_send_timeout 60s; + proxy_read_timeout 60s; + + # Buffering + proxy_buffering on; + proxy_buffer_size 4k; + proxy_buffers 8 4k; + proxy_busy_buffers_size 8k; + } + + # Next.js static assets - cache aggressively + location /_next/static/ { + proxy_pass http://website; + proxy_cache_valid 365d; + add_header Cache-Control "public, immutable"; + access_log off; + } + + # Next.js image optimization + location /_next/image { + proxy_pass http://website; + proxy_cache_valid 7d; + add_header Cache-Control "public, max-age=604800"; + } + + # Public files with long cache + location /public/ { + proxy_pass http://website; + proxy_cache_valid 30d; + add_header Cache-Control "public, max-age=2592000"; + access_log off; + } + + # Favicon + location = /favicon.ico { + proxy_pass http://website; + access_log off; + expires 7d; + } + + # Robots.txt + location = /robots.txt { + proxy_pass http://website; + access_log off; + } +} +``` + +### 2. Install Cloudflare Origin Certificates + +```bash +# Create certificates directory +sudo mkdir -p /etc/ssl/certs /etc/ssl/private + +# Create certificate file (get from Cloudflare Dashboard → SSL/TLS → Origin Server) +sudo tee /etc/ssl/certs/yourdomain.com.crt > /dev/null << 'EOF' +-----BEGIN CERTIFICATE----- +(Paste your Cloudflare certificate here) +-----END CERTIFICATE----- +EOF + +# Create private key file +sudo tee /etc/ssl/private/yourdomain.com.key > /dev/null << 'EOF' +-----BEGIN PRIVATE KEY----- +(Paste your private key here) +-----END PRIVATE KEY----- +EOF + +# Set correct permissions +sudo chmod 644 /etc/ssl/certs/yourdomain.com.crt +sudo chmod 600 /etc/ssl/private/yourdomain.com.key +sudo chown root:root /etc/ssl/certs/yourdomain.com.crt /etc/ssl/private/yourdomain.com.key +``` + +### 3. Enable Nginx Site +```bash +sudo ln -s /etc/nginx/sites-available/nodebyte-website /etc/nginx/sites-enabled/ + +# Remove default site +sudo rm /etc/nginx/sites-enabled/default + +# Test configuration +sudo nginx -t + +# Restart Nginx +sudo systemctl restart nginx +sudo systemctl enable nginx +``` + +--- + +## SSL/TLS Setup + +### Cloudflare Configuration + +1. **SSL/TLS → Overview** + - Mode: Full (strict) + - Minimum TLS Version: TLS 1.2 + +2. **Edge Certificates** + - Always use HTTPS: On + - HSTS: Enable (max-age=31536000) + - TLS 1.3: On + +3. **DNS** + - A Record: `yourdomain.com` → Your server IP (Proxied/Orange) + - CNAME Record: `www` → `yourdomain.com` (Proxied/Orange) + +--- + +## Monitoring + +### View Service Logs +```bash +# Real-time logs +sudo journalctl -u nodebyte-website -f + +# Last 50 lines +sudo journalctl -u nodebyte-website -n 50 + +# Filter by time +sudo journalctl -u nodebyte-website --since "2 hours ago" + +# Filter errors only +sudo journalctl -u nodebyte-website -p err +``` + +### Service Status +```bash +sudo systemctl status nodebyte-website +``` + +### Application Health +```bash +# Test local endpoint +curl http://localhost:3000 + +# Test through Nginx (HTTP) +curl -I http://yourdomain.com + +# Test through Nginx (HTTPS) +curl -I -k https://yourdomain.com +``` + +### System Resources +```bash +# CPU/Memory usage +htop -p $(pgrep -f "npm start") + +# Disk usage +df -h /var/www/nodebyte/website + +# Network connections +sudo ss -tulpn | grep 3000 + +# Node.js processes +ps aux | grep node +``` + +### Nginx Logs +```bash +# Access logs +tail -f /var/log/nginx/website-access.log + +# Error logs +tail -f /var/log/nginx/website-error.log + +# Request statistics +awk '{print $9}' /var/log/nginx/website-access.log | sort | uniq -c +``` + +--- + +## Maintenance + +### Updating Website + +```bash +cd /var/www/nodebyte/website + +# Fetch latest changes +sudo -u deploy git fetch origin +sudo -u deploy git pull origin development + +# Install updated dependencies +sudo -u deploy npm ci + +# Rebuild application +sudo -u deploy npm run build + +# Restart service +sudo systemctl restart nodebyte-website + +# Verify +sudo systemctl status nodebyte-website +sudo journalctl -u nodebyte-website -n 20 +``` + +### Quick Update Script + +Create `/home/deploy/update-website.sh`: + +```bash +#!/bin/bash +set -e + +WEBSITE_DIR="/var/www/nodebyte/website" +BRANCH="development" + +echo "=== Updating NodeByte Website ===" +cd "$WEBSITE_DIR" + +# Pull changes +git fetch origin +git pull origin "$BRANCH" + +# Update dependencies and rebuild +npm ci +npm run build + +# Restart service +sudo systemctl restart nodebyte-website +echo "Website updated and restarted" + +# Check status +sleep 2 +sudo systemctl status nodebyte-website --no-pager +``` + +Make executable: +```bash +chmod +x /home/deploy/update-website.sh +``` + +### Rollback +```bash +cd /var/www/nodebyte/website + +# View recent commits +sudo -u deploy git log --oneline -10 + +# Checkout previous version +sudo -u deploy git checkout + +# Rebuild and restart +sudo -u deploy npm ci +sudo -u deploy npm run build +sudo systemctl restart nodebyte-website +``` + +### Clear Cache and Rebuild +```bash +cd /var/www/nodebyte/website + +# Stop service +sudo systemctl stop nodebyte-website + +# Clean build artifacts +sudo -u deploy rm -rf .next node_modules + +# Fresh install and build +sudo -u deploy npm ci +sudo -u deploy npm run build + +# Restart service +sudo systemctl start nodebyte-website +``` + +--- + +## Troubleshooting + +### Service Won't Start + +```bash +# Check logs +sudo journalctl -u nodebyte-website -n 50 + +# Verify Node.js is installed +node --version +npm --version + +# Check if port is in use +sudo lsof -i :3000 + +# Test build manually +cd /var/www/nodebyte/website +sudo -u deploy npm run build +``` + +### Build Failures + +```bash +# Check for missing dependencies +cd /var/www/nodebyte/website +sudo -u deploy npm list + +# Clean and reinstall +sudo -u deploy rm -rf node_modules package-lock.json +sudo -u deploy npm install + +# Check for TypeScript errors +sudo -u deploy npm run build 2>&1 | less +``` + +### Nginx Issues + +```bash +# Test configuration +sudo nginx -t + +# Check Nginx logs +sudo tail -f /var/log/nginx/website-error.log + +# Verify upstream is accessible +curl http://localhost:3000 + +# Test SSL +openssl s_client -connect yourdomain.com:443 -showcerts +``` + +### Performance Issues + +```bash +# Check system resources +free -h +df -h + +# Monitor Node.js process +top -p $(pgrep -f "npm start") + +# Check for memory leaks +sudo -u deploy node --trace-warnings /var/www/nodebyte/website/.next/standalone/server.js + +# Analyze build size +du -sh /var/www/nodebyte/website/.next +``` + +### Environment Variable Issues + +```bash +# Verify environment variables loaded +sudo -u deploy bash -c 'cd /var/www/nodebyte/website && node -e "require(\"dotenv\").config(); console.log(process.env)"' + +# Check systemd environment +sudo systemctl show nodebyte-website | grep Environment +``` + +--- + +## Quick Reference Commands + +```bash +# Service management +sudo systemctl start nodebyte-website +sudo systemctl stop nodebyte-website +sudo systemctl restart nodebyte-website +sudo systemctl status nodebyte-website + +# Logs +sudo journalctl -u nodebyte-website -f +sudo tail -f /var/log/nginx/website-access.log + +# Health checks +curl http://localhost:3000 +curl -I https://yourdomain.com + +# Rebuild +cd /var/www/nodebyte/website +sudo -u deploy npm run build +sudo systemctl restart nodebyte-website + +# Update +cd /var/www/nodebyte/website +sudo -u deploy git pull origin development +sudo -u deploy npm ci +sudo -u deploy npm run build +sudo systemctl restart nodebyte-website +``` + +--- + +## Performance Optimization + +### Enable Next.js Standalone Output + +In `next.config.mjs`, enable standalone output: + +```javascript +export default { + output: 'standalone', + // ... other config +}; +``` + +Then update systemd service to use standalone server for better performance. + +### PM2 Alternative (Optional) + +For advanced process management, consider using PM2: + +```bash +# Install PM2 globally +sudo npm install -g pm2 + +# Start with PM2 +cd /var/www/nodebyte/website +pm2 start npm --name "nodebyte-website" -- start + +# Generate systemd service +pm2 startup systemd +pm2 save +``` + +--- + +**Last Updated:** February 28, 2026 diff --git a/SECURITY.md b/.github/SECURITY.md similarity index 100% rename from SECURITY.md rename to .github/SECURITY.md diff --git a/.gitmodules b/.gitmodules index a6a47c0..0525663 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "translations"] path = translations - url = https://github.com/NodeByteHosting/translations + url = https://github.com/NodeByteHosting/translations \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 803e4e1..4afb3ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,71 @@ All notable changes to the NodeByte Hosting website will be documented in this f The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [3.3.0] - 2026-03-01 + +### Added +- **Admin Locations Page** - View and sync Pterodactyl panel locations + - Stats cards showing total locations, descriptions, and node counts + - Searchable data table with short code, long name, and associated nodes + - Individual sync button for locations data + - Navigation item added to admin sidebar with MapPin icon +- **Admin Allocations Page** - View and manage server allocations across nodes + - Stats cards for total allocations, assigned/unassigned counts, and unique ports + - Filterable table by node with IP, port, alias, assigned server, and node columns + - Server name column now correctly populated from synced allocation data +- **Admin Nodes Page** - Navigation and routing for server nodes management +- **User Account Profile Management** - Full profile editing on dashboard account page + - Editable fields: first name, last name, username, phone number, company name, billing email + - Email verification status badge with resend verification button + - Email change request form with new email input and confirmation + - Security tab with password change form + - Account information section showing creation date, last login, and account ID +- **Translation Keys** - Added missing i18n keys for new features + - `admin.nav.locations`, `admin.nav.allocations`, `admin.nav.nodes` navigation labels + - `admin.sync.started`, `admin.sync.running` toast message translations + - `dashboard.account` section with full profile and security form labels +- **API Routes Migration to Go Backend** - Consolidated Next.js API routes to centralized Fiber backend + - Removed Next.js API routes from `/app/api/` directory + - All admin endpoints now served from unified Go Fiber backend with consistent error handling + - Bearer token authentication for all admin routes + - Admin settings endpoints: `GET/POST /api/admin/settings` + - GitHub repository management: `GET/POST/PUT/DELETE /api/admin/settings/repos` + - Discord webhook management: `GET/POST/PUT/PATCH/DELETE /api/admin/settings/webhooks` + - Sync controls: `GET/POST /api/admin/sync`, `GET /api/admin/sync/logs`, `GET/POST /api/admin/sync/settings` + - Server management: `GET /api/admin/servers` + - Improved API response consistency with backend-driven validation +- **Admin Users Management Enhancements** - Improved user listing and filtering capabilities + - Pagination support with configurable page size (25 users per page) + - Sorting by user, email, status, created date, and last login + - Search and filter functionality for user discovery + - User role management dialog for updating admin status + - Statistics cards showing total users, migrated users, admins, and active users +- **API Hooks Refactoring** - Updated all admin API hooks to work with Go backend + - `useAdminUsers()` - User listing with pagination and filtering + - `useAdminServers()` - Server management queries + - `useAdminSettings()` - Settings retrieval and updates + - `useAdminWebhooks()` - Webhook CRUD operations + - All hooks now construct proper query parameters for backend endpoints + - Consistent error handling and loading states across all admin operations + +### Fixed +- **Nested Form Hydration Error** - Fixed React hydration mismatch on account page + - Converted nested `
` inside profile form to `
` with `onClick` handler + - Email change submission now works without triggering DOM nesting warnings +- **Invisible Disabled Email Input** - Fixed dark mode styling for disabled inputs + - Added `text-foreground opacity-100` classes to ensure disabled email field text is visible + - Previously `bg-muted` made text invisible against dark backgrounds +- **Admin Users Page Data Population** - Fixed empty users table in admin panel + - Corrected `useAdminUsers()` hook to accept and pass query parameters (page, pageSize, sortField, sortOrder, filter, search) + - Fixed data structure extraction from nested API response format (`data.users[]` and `data.pagination`) + - Corrected mutation payload to only send `userId` and `roles` fields + - User data now properly displays with pagination, sorting, and filtering working correctly + - Backend timestamp handling fixed to properly convert PostgreSQL TIMESTAMP columns to ISO 8601 format +- **API Route Organization** - Eliminated duplicate API implementations + - Removed redundant Next.js API routes that are now handled by Go backend + - Centralized authentication and authorization in Go middleware + - Consistent response format across all API endpoints + ## [3.2.0] - 2025-12-24 ### Added diff --git a/README.md b/README.md index 05dd65e..1523d52 100644 --- a/README.md +++ b/README.md @@ -1,65 +1,59 @@ # NodeByte Hosting Platform -A modern, scalable hosting management platform built with **Next.js**, **Prisma**, and **PostgreSQL**. Manage game servers (Minecraft, Rust, Hytale), VPS nodes, and billing all from a unified admin dashboard. +A modern hosting management platform built with **Next.js** and a **Go (Fiber) backend**. Manage game servers (Minecraft, Rust, Hytale), VPS nodes, and billing from a unified admin dashboard. -[![License: GPL-3.0-only](https://img.shields.io/badge/License-GPL%203.0%20only-blue.svg)](LICENSE) -[![Next.js](https://img.shields.io/badge/Next.js-15+-black?logo=next.js)](https://nextjs.org/) +[![License: AGPL-3.0-only](https://img.shields.io/badge/License-AGPL%203.0%20only-blue.svg)](LICENSE) +[![Next.js](https://img.shields.io/badge/Next.js-16+-black?logo=next.js)](https://nextjs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-5+-blue?logo=typescript)](https://www.typescriptlang.org/) -[![Prisma](https://img.shields.io/badge/Prisma-ORM-2D3748?logo=prisma)](https://www.prisma.io/) -[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-16+-336791?logo=postgresql)](https://www.postgresql.org/) +[![Go](https://img.shields.io/badge/Go-Fiber_Backend-00ADD8?logo=go)](https://gofiber.io/) ## Features -### 🎮 Multi-Panel Game Server Hosting +### Multi-Panel Game Server Hosting - **Pterodactyl Panel** support for game servers (Minecraft, Rust, Hytale, etc.) - **Virtfusion Panel** support for VPS management -- Multi-panel architecture - manage multiple panels from single dashboard +- Multi-panel architecture -- manage multiple panels from a single dashboard - Real-time server status monitoring across all panels - Automatic panel API integration and connection testing - Resource allocation and limits management -### 🔐 Admin Dashboard -- **User Management**: Complete user CRUD with status tracking -- **Server Management**: Browse, filter, and manage all hosted servers -- **Node Management**: Monitor and configure hosting nodes -- **Sync Operations**: Real-time sync logs with terminal-style output -- **Settings Management**: System configuration with connection testing -- **Panel Configuration**: Built-in setup wizard for connecting multiple game panels - -### 🔔 Webhook Notification System -Automatic Discord webhook notifications for: -- **System Events** - Settings changes, sync operations, maintenance mode -- **Server Events** - Server online/offline/crashed status changes -- **Resource Alerts** - Node CPU, memory, disk, and network monitoring -- **Support Tickets** - Support ticket creation, updates, and resolution -- **Billing Events** - Invoices, payments, and subscription changes -- **Security Alerts** - Critical errors and system alerts -- **Custom Events** - Extensible system for custom notifications - -See [Webhook Dispatcher Documentation](./docs/WEBHOOK_DISPATCHER_README.md) for complete details. - -### 🌍 Internationalization -- Multi-language support (30+ languages) +### Admin Dashboard +- **User Management** -- user listing with pagination, filtering, sorting, and role management +- **Server Management** -- browse, filter, and manage all hosted servers +- **Node Management** -- monitor and configure hosting nodes +- **Location Management** -- view and sync Pterodactyl panel locations +- **Allocation Management** -- view allocations across nodes with server assignments +- **Egg Management** -- browse synced server types and configurations +- **Sync Operations** -- real-time sync logs with terminal-style output, cancellation support, and auto-sync scheduling +- **Settings Management** -- system configuration with connection testing across four tabs (Connections, Features, Notifications, Advanced) +- **Panel Configuration** -- built-in setup wizard for connecting multiple game panels + +### Webhook Notification System +Automatic Discord webhook notifications for system events, server state changes, sync operations, billing events, security alerts, and support tickets. Webhooks are managed through the admin settings panel with per-webhook type and scope configuration. + +### Internationalization +- 30+ languages supported - Translation management via Crowdin -- Language and currency selectors -- Region-specific pricing +- Modular translation file structure (`templates/en/*.json`) +- Language and currency selectors in navigation +- Region-specific pricing with multi-currency support (GBP, USD, EUR, CAD, AUD) -### 📚 Knowledge Base +### Knowledge Base - Markdown-based documentation system - Full-text search across articles -- Category organization +- Category organization with sidebar navigation - Table of contents with scroll spy - Syntax highlighting for code blocks -### 🔑 Authentication & Security -- NextAuth v5 with email/password authentication -- Session management -- Admin-only access control -- Environment variable and database credential storage -- Token immutability and protection -- Panel authentication via secure credential storage +### Authentication +- JWT-based authentication via Go backend +- Email/password registration and login +- Forgot password and email verification flows +- Session management with secure token handling +- Admin-only access control via middleware +- User profile management with email change and verification -### 💳 Billing +### Billing - Multi-currency support (GBP, USD, EUR, CAD, AUD) - Pricing configuration - Invoice management (WHMCS integration) @@ -68,10 +62,10 @@ See [Webhook Dispatcher Documentation](./docs/WEBHOOK_DISPATCHER_README.md) for ## Quick Start ### Prerequisites -- Node.js 18+ or Bun -- PostgreSQL 14+ -- Discord Server (for webhooks, optional) +- Node.js 22+ or Bun +- Go backend service (see backend repository) - Pterodactyl Game Panel (for game server hosting) +- Discord Server (for webhooks, optional) ### Installation @@ -92,23 +86,14 @@ See [Webhook Dispatcher Documentation](./docs/WEBHOOK_DISPATCHER_README.md) for ```bash cp .env.example .env.local ``` - Configure: - - `DATABASE_URL` - PostgreSQL connection string - - `NEXTAUTH_SECRET` - Session secret (generate with `openssl rand -base64 32`) - - `GAMEPANEL_URL` - Pterodactyl panel URL - - `GAMEPANEL_API_KEY` - Pterodactyl API key - -4. **Run database migrations** - ```bash - npx prisma migrate dev - ``` - -5. **Seed database (optional)** + Configure the following variables: ```bash - npx prisma db seed + NEXT_PUBLIC_GO_API_URL="http://localhost:8080" # Go backend URL + BACKEND_API_KEY="" # API key for backend communication + JWT_SECRET="" # JWT signing secret ``` -6. **Start development server** +4. **Start development server** ```bash npm run dev # or @@ -117,452 +102,171 @@ See [Webhook Dispatcher Documentation](./docs/WEBHOOK_DISPATCHER_README.md) for Open [http://localhost:3000](http://localhost:3000) in your browser. -## Panel Integration - -NodeByte supports multiple hosting control panels, allowing you to manage different types of infrastructure from a single dashboard. - -### Supported Panels - -#### **Pterodactyl Panel** -- **Purpose**: Game server management (Minecraft, Rust, Hytale, etc.) -- **Authentication**: API-based via token -- **Setup**: - 1. Go to your Pterodactyl panel (`Admin → Locations` is a good starting point) - 2. Create a new API token: `Admin → API Credentials → Create New` - 3. Ensure the token has permission to access applications endpoints - 4. Copy the token (format: `ptlc_xxxxxxxxxxxxx`) - 5. In NodeByte setup wizard, enter: - - **Panel URL**: `https://your-panel.example.com` - - **API Key**: Your API token from Pterodactyl - - **API Endpoint**: Usually `/api/application` (default) - -#### **Virtfusion Panel** -- **Purpose**: VPS and virtual machine management -- **Authentication**: API key-based -- **Setup**: - 1. Log into your Virtfusion control panel - 2. Generate an API key: `Settings → API → Create New Token` - 3. Copy the API key - 4. In NodeByte setup wizard, enter: - - **Panel URL**: `https://your-virtfusion.example.com` - - **API Key**: Your Virtfusion API key - - **API Endpoint**: Your Virtfusion API path (if custom) - -### Multi-Panel Architecture - -NodeByte allows you to configure **multiple panels simultaneously**: - -- **Game Servers**: Connect your Pterodactyl panel(s) to manage game servers -- **VPS/Infrastructure**: Connect Virtfusion for VPS provisioning -- **User Verification**: The system checks multiple panels during user registration to verify eligibility -- **Unified Dashboard**: Monitor and manage resources across all connected panels - -### Setup Wizard - -The platform includes an interactive setup wizard that guides you through panel configuration: - -1. **Visit Setup Page**: On first boot, you'll be redirected to `/setup` -2. **Configure Site Information**: - - Site Name - - Site URL - - Favicon (optional) - - Database URL (optional) -3. **Add Game Panels**: - - Click the "Pterodactyl" tab - - Enter panel credentials - - Click "Test" to verify connectivity - - Save configuration -4. **Add Infrastructure Panels**: - - Click the "Virtfusion" tab - - Enter panel credentials - - Test and save -5. **Complete Setup**: Once site info and at least one panel are configured, click "Complete Setup" - -### Partial Setup Support - -The setup system supports **incremental configuration**: - -- You can configure site information first -- Add panels later as needed -- Test each panel's connection before saving -- Skip optional configuration (database, favicon) -- Complete remaining steps anytime from admin panel - -**Progress indicators** show which components are configured: -- ✓ Site Info (required) -- ✓ Pterodactyl (optional but recommended) -- ✓ Virtfusion (optional but recommended) - -### Connection Testing - -Before saving panel credentials, you can test the connection: - -1. Fill in the panel URL and API key -2. Click the "Test" button -3. The system will: - - Verify the panel is accessible - - Test API authentication - - Check API permissions - - Display connection status and response time -4. Common error messages: - - "Cannot connect to panel server" - Check URL is correct and panel is online - - "Authentication failed" - Check API key is correct - - "Access denied" - API key doesn't have required permissions - - "Connection timeout" - Panel is down or unreachable - -### Panel Data Synchronization - -The platform automatically syncs data from configured panels: - -- **Nodes**: Server hosting nodes/locations -- **Locations**: Geographic regions -- **Eggs**: Server types and configurations -- **Servers**: Active game server instances -- **Users**: Panel user accounts for registration verification - -Sync frequency is configurable in admin settings (default: every hour). - -### User Registration with Panels - -When users register, the system: +> **Note:** The Go backend must be running for authentication, admin operations, and panel sync to function. The Next.js frontend communicates with the backend via the `NEXT_PUBLIC_GO_API_URL`. -1. Checks if user exists on any configured panel -2. Retrieves user's role/permissions from the panel -3. Validates eligibility based on panel data -4. Automatically syncs user information +## Architecture -This ensures users registering on NodeByte match their panel accounts. +This repository contains the **Next.js frontend**. All business logic, database access, authentication, and panel sync operations are handled by a separate **Go (Fiber) backend**. The frontend acts as a client, making API calls to the backend for all data operations. -### Adding More Panels +- **Frontend (this repo):** Next.js 16 with App Router, React 19, TanStack React Query for data fetching, shadcn/ui components, and Tailwind CSS v4 +- **Backend (separate service):** Go Fiber API server handling database, auth, panel integrations, sync, webhooks, and admin operations -To add additional panels after initial setup: +### API Communication -1. Go to **Admin Panel → Settings** -2. Click the panel type (Pterodactyl, Virtfusion, etc.) -3. Enter credentials -4. Test the connection -5. Save configuration -6. Restart the sync service to pull latest data +The frontend uses a centralized API client (`packages/core/lib/api.ts`) that routes all requests to the Go backend. Admin hooks in `packages/core/hooks/use-admin-api.ts` provide React Query wrappers for admin operations. Public data hooks are in `packages/core/hooks/use-public-api.ts`. -### Troubleshooting Panel Connections - -**Panel Not Connecting?** -- Verify the panel URL is correct and accessible -- Check firewall allows outbound connections from NodeByte to the panel -- Ensure API key has "Application" permission -- Check API key isn't expired or revoked -- Test the URL directly in a browser - -**Missing Data After Sync?** -- Verify API key has read permissions for the endpoint -- Check sync service is running -- Review sync logs in admin panel -- Try manual sync from **Admin → Sync Operations** - -**API Key Issues?** -- Regenerate the API key in the panel admin -- API keys are stored encrypted in the database -- Once saved, they cannot be retrieved (only replaced) -- Always test connections after updating credentials - -### API Documentation - -See the relevant panel's documentation for API details: -- [Pterodactyl API Docs](https://pterodactyl.io/api/overview.html) -- [Virtfusion API Docs](https://docs.virtfusion.com/api) - - Open [http://localhost:3000](http://localhost:3000) in your browser. +A small set of lightweight API routes remain in the Next.js app for public-facing proxy endpoints: +- `/api/github/releases` -- GitHub release data +- `/api/instatus` -- Status page integration +- `/api/panel/*` -- Public panel data (counts, nodes, servers, stats, users) +- `/api/trustpilot` -- Trustpilot review data ## Project Structure ``` . -├── app/ # Next.js app directory -│ ├── api/ # API routes -│ │ ├── admin/ # Admin-only endpoints -│ │ ├── auth/ # Authentication routes -│ │ ├── panel/ # Panel integration endpoints -│ │ └── stats/ # Statistics endpoints +├── app/ # Next.js App Router │ ├── admin/ # Admin dashboard pages +│ │ ├── allocations/ # Allocation management +│ │ ├── eggs/ # Egg management +│ │ ├── locations/ # Location management +│ │ ├── nodes/ # Node management +│ │ ├── servers/ # Server management +│ │ ├── settings/ # System settings +│ │ ├── sync/ # Sync operations and logs +│ │ └── users/ # User management +│ ├── api/ # Lightweight proxy routes +│ │ ├── github/releases/ # GitHub releases proxy +│ │ ├── instatus/ # Status page proxy +│ │ ├── panel/ # Public panel data +│ │ └── trustpilot/ # Trustpilot proxy │ ├── auth/ # Authentication pages +│ ├── changelog/ # Changelog page +│ ├── contact/ # Contact page +│ ├── dashboard/ # User dashboard +│ │ ├── account/ # Profile and security settings +│ │ └── servers/ # User server management │ ├── games/ # Game-specific pages -│ ├── kb/ # Knowledge base pages +│ ├── kb/ # Knowledge base +│ ├── maintenance/ # Maintenance mode page +│ ├── setup/ # Initial setup wizard │ └── layout.tsx # Root layout -├── packages/ # Shared packages -│ ├── auth/ # Authentication utilities -│ ├── core/ # Core business logic -│ │ ├── constants/ # Application constants -│ │ ├── dispatchers/ # Event dispatchers -│ │ │ ├── notifications.ts # Email/Discord notifications -│ │ │ └── webhooks.ts # Webhook dispatcher -│ │ ├── hooks/ # React hooks -│ │ ├── lib/ # Utilities and helpers -│ │ │ ├── sync.ts # Pterodactyl sync service -│ │ │ ├── pterodactyl.ts # Panel API wrapper -│ │ │ ├── prisma.ts # Database client -│ │ │ └── ... -│ │ └── utils.ts -│ ├── i18n/ # Internationalization -│ ├── kb/ # Knowledge base utilities -│ └── ui/ # Shared UI components -├── prisma/ # Database schema -│ ├── schema.prisma # Prisma schema -│ └── migrations/ # Database migrations +├── packages/ # Shared packages +│ ├── auth/ # Auth components and utilities +│ │ ├── components/ # Login, register, forgot-password forms +│ │ └── lib/ # Auth client, context, server helpers +│ ├── core/ # Core logic and hooks +│ │ ├── constants/ # Game-specific constants +│ │ ├── hooks/ # React hooks (admin API, public API, currency, locale, etc.) +│ │ ├── lib/ # API client, currency, query client, translations, utilities +│ │ └── middleware/ # Route middleware +│ ├── changelog/ # Changelog components and hooks +│ ├── i18n/ # Internationalization (next-intl config) +│ ├── kb/ # Knowledge base components, content, and utilities +│ └── ui/ # UI components (layouts, shadcn/ui primitives) ├── public/ # Static assets -├── translations/ # Localization files -│ └── messages/ # Language-specific translations -├── docs/ # Documentation -│ ├── WEBHOOK_DISPATCHER_README.md -│ ├── WEBHOOK_INTEGRATION_GUIDE.md -│ ├── WEBHOOK_NOTIFICATION_COMPLETE.md -│ └── WEBHOOK_QUICK_REFERENCE.ts -└── [config files] +├── translations/ # Localization +│ ├── messages/ # 30+ language files +│ └── templates/ # Source translation templates (modular) +└── [config files] # next.config.mjs, tsconfig.json, etc. ``` -## Webhook System - -The platform includes a comprehensive webhook notification system for automated Discord notifications. - -### Available Webhook Types - -| Type | Color | Usage | -|------|-------|-------| -| **GAME_SERVER** | Purple | Server start/stop/crash events | -| **VPS** | Blue | Node resource monitoring (CPU, memory, disk) | -| **SYSTEM** | Yellow | Sync operations, settings changes, maintenance | -| **BILLING** | Green | Invoices, payments, subscription events | -| **SECURITY** | Red | Errors, alerts, security incidents | -| **SUPPORT** | Cyan | Support ticket lifecycle events | -| **CUSTOM** | Gray | Custom/unclassified events | - -### Active Integrations - -✅ **System Settings Updates** - Automatically sends webhooks when settings are modified -✅ **Sync Completion** - Notified when sync operations complete or fail - -### Quick Setup - -1. Go to **Admin Panel → Settings → Discord Webhooks** -2. Click "Add Webhook" -3. Enter your Discord webhook URL -4. Select webhook type and description -5. Click "Test" to verify connectivity - -See [Webhook Documentation](./docs/WEBHOOK_DISPATCHER_README.md) for detailed integration guide. - -## API Documentation - -### Authentication -All admin endpoints require authentication via NextAuth session. - -### Admin Settings -- `GET /api/admin/settings` - Get current system settings -- `POST /api/admin/settings` - Update settings -- `PUT /api/admin/settings` - Reset API keys -- `POST /api/admin/settings/webhooks` - Create webhook -- `PUT /api/admin/settings/webhooks` - Update webhook -- `DELETE /api/admin/settings/webhooks` - Delete webhook -- `PATCH /api/admin/settings/webhooks` - Test webhook - -### Sync Operations -- `GET /api/admin/sync/stats` - Get sync statistics -- `POST /api/admin/sync` - Trigger sync operation - -### Panel Data -- `GET /api/panel/servers` - List all servers -- `GET /api/panel/nodes` - List all nodes -- `GET /api/panel/users` - List all users -- `GET /api/panel/stats` - Server statistics - -See individual endpoint files in `app/api/` for detailed request/response schemas. - -## Configuration - -### System Settings (Database) -Settings are stored in the `SystemSettings` table and can be configured via the admin panel or setup wizard: - -```typescript -{ - // Game Panel Connections - pterodactylUrl: string - pterodactylApiKey: string (secret) - pterodactylApi: string - - // Infrastructure Panel Connections - virtfusionUrl: string - virtfusionApiKey: string (secret) - virtfusionApi: string - - // Integrations - crowdinProjectId: string - crowdinPersonalToken: string (secret) - githubToken: string (secret) - resendApiKey: string (secret) - - // Database Configuration - databaseUrl: string (optional - for connection pooling/switching) - - // Features - registrationEnabled: boolean - maintenanceMode: boolean - autoSyncEnabled: boolean - - // Notifications - emailNotifications: boolean - discordNotifications: boolean - - // Webhooks - discordWebhooks: DiscordWebhook[] - - // Site Configuration - siteName: string - siteUrl: string - faviconUrl: string (optional) - - // Advanced - cacheTimeout: number (seconds) - syncInterval: number (seconds) - isSetupComplete: boolean -} -``` +## Panel Integration -### Environment Variables -```bash -# Database -DATABASE_URL=postgresql://user:password@localhost:5432/nodebyte +NodeByte supports multiple hosting control panels, allowing you to manage different types of infrastructure from a single dashboard. -# Authentication -NEXTAUTH_SECRET=your-secret-here -NEXTAUTH_URL=http://localhost:3000 +### Supported Panels -# Game Panel (can also be set in database via setup wizard) -GAMEPANEL_URL=https://pterodactyl.example.com -GAMEPANEL_API_KEY=ptlc_xxxxx +**Pterodactyl Panel** -- Game server management (Minecraft, Rust, Hytale, etc.) +- API-based authentication via token +- Sync support for nodes, locations, allocations, eggs, servers, and users -# Infrastructure Panel (optional, set in database) -VIRTFUSION_URL=https://virtfusion.example.com -VIRTFUSION_API_KEY=your-api-key +**Virtfusion Panel** -- VPS and virtual machine management +- API key-based authentication +- Infrastructure provisioning and monitoring -# Crowdin (optional) -CROWDIN_TOKEN=your-crowdin-token +### Setup Wizard -# GitHub (optional) -GITHUB_TOKEN=ghp_xxxxx +The platform includes an interactive setup wizard at `/setup` that guides you through: -# Resend (optional) -RESEND_API_KEY=re_xxxxx -``` +1. **Site Information** -- site name, URL, and optional favicon +2. **Game Panels** -- Pterodactyl panel credentials with connection testing +3. **Infrastructure Panels** -- Virtfusion panel credentials with connection testing -**Note**: After initial setup, panel credentials should be configured through the admin panel or setup wizard rather than environment variables. This allows dynamic switching between different panels without redeploying. +The setup supports incremental configuration. You can configure components in any order and add panels later from the admin settings. -## Database +### Panel Data Synchronization -### Prisma Migrations -Run migrations with: -```bash -npx prisma migrate dev -``` +The backend automatically syncs data from configured panels: -### Database Schema -Key models: -- **User** - User accounts with authentication -- **SystemSettings** - System-wide configuration -- **DiscordWebhook** - Webhook configurations with type and scope -- **Server** - Game server instances -- **Node** - Hosting nodes -- **Location** - Geographic locations -- **Allocation** - IP/port allocations -- **Nest** - Pterodactyl nests (game types) -- **SyncLog** - Sync operation history +- **Nodes** -- hosting nodes and their resources +- **Locations** -- geographic regions +- **Eggs** -- server types and configurations +- **Servers** -- active server instances +- **Allocations** -- IP/port assignments +- **Users** -- panel user accounts for registration verification -See [prisma/schema.prisma](./prisma/schema.prisma) for complete schema. +Sync frequency is configurable in admin settings. Auto-sync can be enabled or disabled, and manual sync can be triggered from the admin panel. Sync operations support cancellation and emit real-time progress logs. ## Development -### Running Tests +### Available Scripts + ```bash -npm run test -# or -bun test +npm run dev # Start development server +npm run build # Build for production +npm run start # Start production server +npm run lint # Run ESLint ``` ### Building for Production + ```bash npm run build npm start ``` -### Code Quality -```bash -npm run lint -npm run type-check -``` +### Deployment + +The project includes a `nixpacks.toml` for deployment via Nixpacks with Bun and Node.js 22. Git submodules (translations) are initialized during the setup phase. ## Contributing -We welcome contributions from the community! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines on: -- Code style and standards -- Commit message format -- Pull request process -- Development setup +Contributions are welcome. Please see [CONTRIBUTING.md](.github/CONTRIBUTING.md) for guidelines on code style, commit message format, and the pull request process. ## Security -For security vulnerabilities, please see [SECURITY.md](./SECURITY.md) for responsible disclosure procedures. **Do not** open public issues for security vulnerabilities. +For security vulnerabilities, please see [SECURITY.md](.github/SECURITY.md) for responsible disclosure procedures. Do not open public issues for security vulnerabilities. -Key security features: -- Session-based authentication with NextAuth +Key security measures: +- JWT-based authentication with token validation via Go backend - Admin-only access control via middleware -- API key masking in UI (shown as `••••••••••••••••••••`) -- Database credential storage instead of .env files +- API key masking in the admin UI +- Credential storage managed by the backend (not in environment variables) - Webhook URL validation before storage -- CORS and CSRF protection +- Webhook scope control (ADMIN, USER, PUBLIC) ## License -This project is licensed under the **GNU General Public License v3.0 or later** - see [LICENSE](./LICENSE) file for details. - -In summary, you are free to: -- ✅ Use commercially -- ✅ Modify and distribute -- ✅ Private use +This project is licensed under the **GNU Affero General Public License v3.0** -- see the [LICENSE](./LICENSE) file for details. -With the condition: -- 📋 Disclose source -- 📋 Include license and copyright notice -- 📋 Use same license for derivative works +You are free to use, modify, and distribute this software, provided that: +- Source code is disclosed +- License and copyright notice are included +- Derivative works use the same license ## Support -### Documentation -- 📚 [Webhook Dispatcher Guide](./docs/WEBHOOK_DISPATCHER_README.md) -- 📚 [Integration Examples](./docs/WEBHOOK_INTEGRATION_GUIDE.md) -- 📚 [Quick Reference](./docs/WEBHOOK_QUICK_REFERENCE.ts) -- 📚 [Knowledge Base](https://nodebyte.host/kb) +### Resources +- [Knowledge Base](https://nodebyte.host/kb) ### Community -- 💬 [Discord Server](https://discord.gg/nodebyte) -- 🐦 [Twitter/X](https://x.com/nodebyte) -- 📧 [Email Support](mailto:support@nodebyte.host) +- [Discord Server](https://discord.gg/wN58bTzzpW) +- [Twitter/X](https://x.com/NodeByteHosting) +- [Email Support](mailto:support@nodebyte.host) ### Issue Tracking -Report bugs and feature requests on [GitHub Issues](https://github.com/NodeByteHosting/website/issues) - -## Roadmap - -### Current Version (3.2.0) -- ✅ Webhook notification system -- ✅ Settings management with credential storage -- ✅ Multi-language support -- ✅ Knowledge base system - -### Planned Features -- 🔄 Client panel (user-scoped webhooks) -- 🔄 Enhanced billing system -- 🔄 Advanced analytics -- 🔄 API key management for users -- 🔄 Two-factor authentication -- 🔄 Audit logging +Report bugs and feature requests on [GitHub Issues](https://github.com/NodeByteHosting/website/issues). ## Authors @@ -570,22 +274,17 @@ Report bugs and feature requests on [GitHub Issues](https://github.com/NodeByteH - Website: https://nodebyte.host - Email: hello@nodebyte.host -## Acknowledgments - -Built with: -- [Next.js](https://nextjs.org/) -- [Prisma](https://www.prisma.io/) -- [NextAuth](https://next-auth.js.org/) -- [TypeScript](https://www.typescriptlang.org/) -- [Tailwind CSS](https://tailwindcss.com/) -- [shadcn/ui](https://ui.shadcn.com/) - -## Status - -🟢 **Production Ready** - v3.2.0 +## Built With -Fully functional hosting platform with webhook notifications, admin dashboard, and game server management. +- [Next.js](https://nextjs.org/) -- React framework with App Router +- [React](https://react.dev/) -- UI library (v19) +- [TypeScript](https://www.typescriptlang.org/) -- Type-safe JavaScript +- [Tailwind CSS](https://tailwindcss.com/) -- Utility-first CSS (v4) +- [shadcn/ui](https://ui.shadcn.com/) -- Radix-based UI components +- [TanStack React Query](https://tanstack.com/query) -- Data fetching and caching +- [next-intl](https://next-intl.dev/) -- Internationalization +- [Go Fiber](https://gofiber.io/) -- Backend API framework (separate service) --- -**Last Updated:** December 22, 2025 +**Last Updated:** March 1, 2026 diff --git a/app/admin/allocations/page.tsx b/app/admin/allocations/page.tsx new file mode 100644 index 0000000..32c65ce --- /dev/null +++ b/app/admin/allocations/page.tsx @@ -0,0 +1,345 @@ +"use client" + +import { useEffect, useState } from "react" +import { useTranslations } from "next-intl" +import { + Network, + Search, + RefreshCw, + ChevronLeft, + ChevronRight, + CheckCircle, + XCircle, + Server, + HardDrive, + Filter, +} from "lucide-react" +import { Card, CardContent, CardHeader, CardTitle } from "@/packages/ui/components/ui/card" +import { Button } from "@/packages/ui/components/ui/button" +import { Badge } from "@/packages/ui/components/ui/badge" +import { Input } from "@/packages/ui/components/ui/input" +import { Skeleton } from "@/packages/ui/components/ui/skeleton" +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/packages/ui/components/ui/table" +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/packages/ui/components/ui/select" +import { cn } from "@/packages/core/lib/utils" +import { useAdminAllocations, useAdminNodes } from "@/packages/core" +import { useAuth } from "@/packages/auth" + +interface AllocationRow { + id: number + ip: string + port: number + alias: string | null + isAssigned: boolean + nodeId: number + nodeName: string + nodeFqdn: string + serverId: string | null + serverPterodactylId: number | null + serverName: string | null +} + +type AssignedFilter = "all" | "yes" | "no" + +export default function AllocationsPage() { + const t = useTranslations("admin") + const { user } = useAuth() + + const [searchQuery, setSearchQuery] = useState("") + const [debouncedSearch, setDebouncedSearch] = useState("") + const [currentPage, setCurrentPage] = useState(1) + const [perPage, setPerPage] = useState(25) + const [assignedFilter, setAssignedFilter] = useState("all") + const [nodeFilter, setNodeFilter] = useState("all") + + // Debounce search + useEffect(() => { + const timer = setTimeout(() => { + setDebouncedSearch(searchQuery) + setCurrentPage(1) + }, 300) + return () => clearTimeout(timer) + }, [searchQuery]) + + const { data: allocResponse, isLoading, refetch } = useAdminAllocations( + { + page: currentPage, + perPage, + assigned: assignedFilter !== "all" ? assignedFilter : undefined, + nodeId: nodeFilter !== "all" ? nodeFilter : undefined, + search: debouncedSearch || undefined, + }, + { enabled: !!user } + ) + + const { data: nodesResponse } = useAdminNodes({ perPage: 200 }, { enabled: !!user }) + + const allocData = allocResponse as any + const allocations: AllocationRow[] = allocData?.allocations || [] + const meta = allocData?.pagination || null + + const nodesData = nodesResponse as any + const nodes: { id: number; name: string }[] = nodesData?.nodes || [] + + const stats = { + total: meta?.total || 0, + assigned: allocations.filter((a) => a.isAssigned).length, + unassigned: allocations.filter((a) => !a.isAssigned).length, + } + + return ( +
+ {/* Header */} +
+
+

+ + Allocations +

+

+ View and manage all port allocations across nodes +

+
+ +
+ + {/* Stats Cards */} +
+ + + Total Allocations + + + + {isLoading ? :
{stats.total}
} +
+
+ + + Assigned + + + + {isLoading ? :
{stats.assigned}
} +
+
+ + + Unassigned + + + + {isLoading ? :
{stats.unassigned}
} +
+
+
+ + {/* Filters */} + + + Filters + + +
+
+ + setSearchQuery(e.target.value)} + className="pl-9" + /> +
+
+ {/* Node filter */} + + + {/* Assigned filter */} + + + {/* Per-page */} + +
+
+
+
+ + {/* Table */} + + +
+ + + + IP : Port + Alias + Node + Status + Server + + + + {isLoading ? ( + Array.from({ length: 5 }).map((_, i) => ( + + + + + + + + )) + ) : allocations.length === 0 ? ( + + +
+ +

No allocations found

+ {debouncedSearch &&

Try a different search term

} +
+
+
+ ) : ( + allocations.map((alloc) => ( + + +
+
+ +
+
+ + {alloc.ip}:{alloc.port} + +
+
+
+ + {alloc.alias ? ( + {alloc.alias} + ) : ( + + )} + + +
+ {alloc.nodeName} +
{alloc.nodeFqdn}
+
+
+ + {alloc.isAssigned ? ( + + + Assigned + + ) : ( + + + Unassigned + + )} + + + {alloc.serverName ? ( +
+ +
+
{alloc.serverName}
+ {alloc.serverPterodactylId && ( +
#{alloc.serverPterodactylId}
+ )} +
+
+ ) : ( + + )} +
+
+ )) + )} +
+
+
+ + {/* Pagination */} + {meta && meta.totalPages > 1 && ( +
+

+ Showing {(currentPage - 1) * perPage + 1}–{Math.min(currentPage * perPage, meta.total)} of {meta.total} +

+
+ +
+ {currentPage} + / + {meta.totalPages} +
+ +
+
+ )} +
+
+
+ ) +} diff --git a/app/admin/eggs/page.tsx b/app/admin/eggs/page.tsx new file mode 100644 index 0000000..910e294 --- /dev/null +++ b/app/admin/eggs/page.tsx @@ -0,0 +1,464 @@ +"use client" + +import { useEffect, useState } from "react" +import { useTranslations } from "next-intl" +import { + Layers, + Search, + RefreshCw, + Server, + ChevronLeft, + ChevronRight, + Filter, + Package, +} from "lucide-react" +import { Card, CardContent, CardHeader, CardTitle } from "@/packages/ui/components/ui/card" +import { Button } from "@/packages/ui/components/ui/button" +import { Badge } from "@/packages/ui/components/ui/badge" +import { Input } from "@/packages/ui/components/ui/input" +import { Skeleton } from "@/packages/ui/components/ui/skeleton" +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/packages/ui/components/ui/table" +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/packages/ui/components/ui/select" +import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/packages/ui/components/ui/tabs" +import { cn } from "@/packages/core/lib/utils" +import { useAdminNests, useAdminEggs } from "@/packages/core" +import { useAuth } from "@/packages/auth" + +interface NestData { + id: number + uuid: string + name: string + description: string + author: string + eggCount: number + serverCount: number + createdAt: string + updatedAt: string +} + +interface EggData { + id: number + uuid: string + name: string + description: string + author: string + nestId: number + nestName: string + serverCount: number + createdAt: string + updatedAt: string +} + +function NestsTab() { + const t = useTranslations("admin") + const { user } = useAuth() + const [searchQuery, setSearchQuery] = useState("") + const [debouncedSearch, setDebouncedSearch] = useState("") + const [currentPage, setCurrentPage] = useState(1) + const [perPage, setPerPage] = useState(25) + + useEffect(() => { + const timer = setTimeout(() => { + setDebouncedSearch(searchQuery) + setCurrentPage(1) + }, 300) + return () => clearTimeout(timer) + }, [searchQuery]) + + const { data: response, isLoading, refetch } = useAdminNests({ + page: currentPage, + perPage, + search: debouncedSearch || undefined, + }, { enabled: !!user }) + + const nestsData = response as any + const nests: NestData[] = nestsData?.nests || [] + const meta = nestsData?.pagination || null + + const formatDate = (dateString: string) => + new Date(dateString).toLocaleDateString(undefined, { + year: "numeric", month: "short", day: "numeric", + }) + + return ( +
+ {/* Filters */} + + +
+
+ + setSearchQuery(e.target.value)} + className="pl-9" + /> +
+
+ + +
+
+
+
+ + + +
+ + + + Nest + Author + Eggs + Servers + Created + + + + {isLoading ? ( + Array.from({ length: 5 }).map((_, i) => ( + + + + + + + + )) + ) : nests.length === 0 ? ( + + +
+ +

No nests found

+
+
+
+ ) : ( + nests.map((nest) => ( + + +
+
+ +
+
+
{nest.name}
+ {nest.description && ( +
{nest.description}
+ )} +
+
+
+ + {nest.author} + + + {nest.eggCount} + + +
+ + {nest.serverCount} +
+
+ + {formatDate(nest.createdAt)} + +
+ )) + )} +
+
+
+ {meta && meta.totalPages > 1 && ( +
+

+ Showing {(currentPage - 1) * perPage + 1}–{Math.min(currentPage * perPage, meta.total)} of {meta.total} nests +

+
+ +
+ {currentPage} + / + {meta.totalPages} +
+ +
+
+ )} +
+
+
+ ) +} + +function EggsTab({ nests }: { nests: NestData[] }) { + const t = useTranslations("admin") + const { user } = useAuth() + const [searchQuery, setSearchQuery] = useState("") + const [debouncedSearch, setDebouncedSearch] = useState("") + const [currentPage, setCurrentPage] = useState(1) + const [perPage, setPerPage] = useState(25) + const [nestFilter, setNestFilter] = useState("all") + + useEffect(() => { + const timer = setTimeout(() => { + setDebouncedSearch(searchQuery) + setCurrentPage(1) + }, 300) + return () => clearTimeout(timer) + }, [searchQuery]) + + const { data: response, isLoading, refetch } = useAdminEggs({ + page: currentPage, + perPage, + search: debouncedSearch || undefined, + nestId: nestFilter !== "all" ? parseInt(nestFilter) : undefined, + }, { enabled: !!user }) + + const eggsData = response as any + const eggs: EggData[] = eggsData?.eggs || [] + const meta = eggsData?.pagination || null + + const formatDate = (dateString: string) => + new Date(dateString).toLocaleDateString(undefined, { + year: "numeric", month: "short", day: "numeric", + }) + + return ( +
+ {/* Filters */} + + +
+
+ + setSearchQuery(e.target.value)} + className="pl-9" + /> +
+
+ + + +
+
+
+
+ + + +
+ + + + Egg + Nest + Author + Servers + Created + + + + {isLoading ? ( + Array.from({ length: 5 }).map((_, i) => ( + + + + + + + + )) + ) : eggs.length === 0 ? ( + + +
+ +

No eggs found

+ {debouncedSearch &&

Try a different search term

} +
+
+
+ ) : ( + eggs.map((egg) => ( + + +
+
+ +
+
+
{egg.name}
+ {egg.description && ( +
{egg.description}
+ )} +
+
+
+ + {egg.nestName} + + + {egg.author} + + +
+ + {egg.serverCount} +
+
+ + {formatDate(egg.createdAt)} + +
+ )) + )} +
+
+
+ {meta && meta.totalPages > 1 && ( +
+

+ Showing {(currentPage - 1) * perPage + 1}–{Math.min(currentPage * perPage, meta.total)} of {meta.total} eggs +

+
+ +
+ {currentPage} + / + {meta.totalPages} +
+ +
+
+ )} +
+
+
+ ) +} + +export default function EggsPage() { + const { user } = useAuth() + const { data: nestsResponse } = useAdminNests({ perPage: 100 }, { enabled: !!user }) + const nestsData = nestsResponse as any + const nests: NestData[] = nestsData?.nests || [] + + return ( +
+ {/* Header */} +
+
+

+ + Eggs & Nests +

+

Browse server configuration templates (eggs) and their containers (nests)

+
+
+ + {/* Stats */} +
+ + + Total Nests + + + +
{nests.length}
+
+
+ + + Total Eggs + + + +
{nests.reduce((sum, n) => sum + n.eggCount, 0)}
+
+
+
+ + {/* Tabs */} + + + + + Eggs + + + + Nests + + + + + + + + + +
+ ) +} diff --git a/app/admin/layout.tsx b/app/admin/layout.tsx index fdbb648..10bd11b 100644 --- a/app/admin/layout.tsx +++ b/app/admin/layout.tsx @@ -1,6 +1,6 @@ "use client" -import { useSession } from "next-auth/react" +import { useAuth } from "@/packages/auth" import { useRouter, usePathname } from "next/navigation" import { useEffect, useState } from "react" import { useTranslations } from "next-intl" @@ -18,6 +18,10 @@ import { Menu, Home, LogOut, + HardDrive, + Layers, + Network, + MapPin, } from "lucide-react" import { cn } from "@/packages/core/lib/utils" import { Button } from "@/packages/ui/components/ui/button" @@ -39,6 +43,7 @@ import { import { LanguageSelector } from "@/packages/ui/components/ui/language-selector" import { UserMenu } from "@/packages/auth/components/user-menu" import { ThemeToggle } from "@/packages/ui/components/theme-toggle" +import { canAccessAdmin } from "@/packages/auth" interface NavItem { title: string @@ -51,7 +56,7 @@ export default function AdminLayout({ }: { children: React.ReactNode }) { - const { data: session, status } = useSession() + const { user, isLoading } = useAuth() const router = useRouter() const pathname = usePathname() const t = useTranslations("admin") @@ -64,7 +69,21 @@ export default function AdminLayout({ setMobileOpen(false) }, [pathname]) - if (status === "loading") { + // Redirect to login if not authenticated + useEffect(() => { + if (!isLoading && !user) { + router.push(`/auth/login?callbackUrl=/admin`) + } + }, [user, isLoading, router]) + + // Redirect to home if not a system admin + useEffect(() => { + if (!isLoading && user && !canAccessAdmin(user)) { + router.push("/") + } + }, [user, isLoading, router]) + + if (isLoading) { return (
@@ -72,8 +91,20 @@ export default function AdminLayout({ ) } - // Redirect if not authenticated or not system admin - if (!session?.user?.isSystemAdmin) { + // Redirect if not authenticated + if (!user) { + return ( +
+
+

Please log in to access admin panel

+ +
+
+ ) + } + + // Redirect if not a system admin + if (!canAccessAdmin(user)) { return (
@@ -88,6 +119,10 @@ export default function AdminLayout({ { title: t("nav.dashboard"), href: "/admin", icon: LayoutDashboard }, { title: t("nav.users"), href: "/admin/users", icon: Users }, { title: t("nav.servers"), href: "/admin/servers", icon: Server }, + { title: t("nav.nodes"), href: "/admin/nodes", icon: HardDrive }, + { title: t("nav.locations"), href: "/admin/locations", icon: MapPin }, + { title: t("nav.allocations"), href: "/admin/allocations", icon: Network }, + { title: t("nav.eggs"), href: "/admin/eggs", icon: Layers }, { title: t("nav.sync"), href: "/admin/sync", icon: RefreshCw }, { title: t("nav.syncLogs"), href: "/admin/sync/logs", icon: RefreshCw }, { title: t("nav.settings"), href: "/admin/settings", icon: Settings }, @@ -286,7 +321,7 @@ export default function AdminLayout({ }} /> - {session?.user?.firstName || session?.user?.username} + {user?.firstName || user?.username}
diff --git a/app/admin/locations/page.tsx b/app/admin/locations/page.tsx new file mode 100644 index 0000000..a20c3db --- /dev/null +++ b/app/admin/locations/page.tsx @@ -0,0 +1,162 @@ +"use client" + +import { useAuth } from "@/packages/auth" +import { useAdminLocations, useTriggerSync, useSyncStatus } from "@/packages/core" +import { MapPin, RefreshCw, HardDrive, Hash } from "lucide-react" +import { Card, CardContent, CardHeader, CardTitle } from "@/packages/ui/components/ui/card" +import { Button } from "@/packages/ui/components/ui/button" +import { Badge } from "@/packages/ui/components/ui/badge" +import { Skeleton } from "@/packages/ui/components/ui/skeleton" +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/packages/ui/components/ui/table" +import { cn } from "@/packages/core/lib/utils" + +interface Location { + id: number + shortCode: string + description: string + nodeCount: number +} + +export default function LocationsPage() { + const { user } = useAuth() + + const { data: locResponse, isLoading, refetch } = useAdminLocations({ enabled: !!user }) + const triggerSync = useTriggerSync() + const { data: syncStatus } = useSyncStatus() + + const locData = locResponse as any + const locations: Location[] = locData?.locations || [] + + const syncRunning = (syncStatus as any)?.status === "RUNNING" + + const handleSync = () => { + triggerSync.mutate( + { type: "locations" }, + { onSuccess: () => setTimeout(() => refetch(), 2000) } + ) + } + + const totalNodes = locations.reduce((sum, l) => sum + l.nodeCount, 0) + + return ( +
+ {/* Header */} +
+
+

+ + Locations +

+

+ Data centre locations synced from the Pterodactyl panel +

+
+
+ + +
+
+ + {/* Stats */} +
+ + + Total Locations + + + + {isLoading ? :
{locations.length}
} +
+
+ + + Total Nodes + + + + {isLoading ? :
{totalNodes}
} +
+
+
+ + {/* Table */} + + + + + + ID + Short Code + Description + Nodes + + + + {isLoading ? ( + Array.from({ length: 3 }).map((_, i) => ( + + + + + + + )) + ) : locations.length === 0 ? ( + + +
+ +

No locations found — run a sync to populate

+
+
+
+ ) : ( + locations.map((loc) => ( + + +
+ + {loc.id} +
+
+ + + {loc.shortCode} + + + + {loc.description || No description} + + +
+ + {loc.nodeCount} +
+
+
+ )) + )} +
+
+
+
+
+ ) +} diff --git a/app/admin/nodes/page.tsx b/app/admin/nodes/page.tsx new file mode 100644 index 0000000..a951898 --- /dev/null +++ b/app/admin/nodes/page.tsx @@ -0,0 +1,417 @@ +"use client" + +import { useEffect, useState } from "react" +import { useTranslations } from "next-intl" +import { + HardDrive, + Search, + RefreshCw, + MapPin, + Server, + Network, + ChevronLeft, + ChevronRight, + Filter, + AlertTriangle, + CheckCircle, + Loader2, +} from "lucide-react" +import { Card, CardContent, CardHeader, CardTitle } from "@/packages/ui/components/ui/card" +import { Button } from "@/packages/ui/components/ui/button" +import { Badge } from "@/packages/ui/components/ui/badge" +import { Input } from "@/packages/ui/components/ui/input" +import { Skeleton } from "@/packages/ui/components/ui/skeleton" +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/packages/ui/components/ui/table" +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/packages/ui/components/ui/select" +import { + Tooltip, + TooltipContent, + TooltipProvider, + TooltipTrigger, +} from "@/packages/ui/components/ui/tooltip" +import { cn } from "@/packages/core/lib/utils" +import { useAdminNodes, useToggleNodeMaintenance } from "@/packages/core" +import { useAuth } from "@/packages/auth" + +interface NodeData { + id: number + uuid: string + name: string + description: string + fqdn: string + scheme: string + behindProxy: boolean + isPublic: boolean + isMaintenanceMode: boolean + memory: number + memoryOverallocate: number + disk: number + diskOverallocate: number + daemonListenPort: number + daemonSftpPort: number + locationId: number + locationCode: string + serverCount: number + allocationCount: number + createdAt: string + updatedAt: string +} + +type MaintenanceFilter = "all" | "yes" | "no" + +const formatBytes = (mb: number) => { + if (mb === 0) return "Unlimited" + if (mb >= 1024) return `${(mb / 1024).toFixed(1)} GB` + return `${mb} MB` +} + +export default function NodesPage() { + const t = useTranslations("admin") + const { user } = useAuth() + const [searchQuery, setSearchQuery] = useState("") + const [debouncedSearch, setDebouncedSearch] = useState("") + const [currentPage, setCurrentPage] = useState(1) + const [perPage, setPerPage] = useState(25) + const [maintenanceFilter, setMaintenanceFilter] = useState("all") + const [togglingId, setTogglingId] = useState(null) + + useEffect(() => { + const timer = setTimeout(() => { + setDebouncedSearch(searchQuery) + setCurrentPage(1) + }, 300) + return () => clearTimeout(timer) + }, [searchQuery]) + + const { data: response, isLoading, refetch } = useAdminNodes({ + page: currentPage, + perPage, + search: debouncedSearch || undefined, + maintenance: maintenanceFilter === "all" ? undefined : maintenanceFilter === "yes", + }, { enabled: !!user }) + + const toggleMaintenance = useToggleNodeMaintenance() + + const nodesData = response as any + const nodes: NodeData[] = nodesData?.nodes || [] + const meta = nodesData?.pagination || null + + const stats = { + total: meta?.total || 0, + maintenance: nodes.filter((n) => n.isMaintenanceMode).length, + totalServers: nodes.reduce((sum, n) => sum + n.serverCount, 0), + totalAllocations: nodes.reduce((sum, n) => sum + n.allocationCount, 0), + } + + const handleToggleMaintenance = async (node: NodeData) => { + setTogglingId(node.id) + try { + await toggleMaintenance.mutateAsync({ nodeId: node.id }) + } finally { + setTogglingId(null) + } + } + + return ( +
+ {/* Header */} +
+
+

+ + Nodes +

+

Manage Pterodactyl nodes and their allocations

+
+ +
+ + {/* Stats */} +
+ + + Total Nodes + + + + {isLoading ? :
{stats.total}
} +
+
+ + + Maintenance + + + + {isLoading ? :
{stats.maintenance}
} +
+
+ + + Servers + + + + {isLoading ? :
{stats.totalServers}
} +
+
+ + + Allocations + + + + {isLoading ? :
{stats.totalAllocations}
} +
+
+
+ + {/* Filters */} + + + Filters + + +
+
+ + setSearchQuery(e.target.value)} + className="pl-9" + /> +
+
+ + +
+
+
+
+ + {/* Table */} + + +
+ + + + Node + Status + Location + Resources + Servers + Ports + Actions + + + + {isLoading ? ( + Array.from({ length: 5 }).map((_, i) => ( + + + + + + + + + + )) + ) : nodes.length === 0 ? ( + + +
+ +

No nodes found

+ {debouncedSearch &&

Try a different search term

} +
+
+
+ ) : ( + nodes.map((node) => ( + + +
+
+ +
+
+
{node.name}
+
{node.fqdn}
+
+
+
+ + +
+ {node.isMaintenanceMode ? ( + + + Maintenance + + ) : ( + + + Online + + )} + {!node.isPublic && ( + + + Private + + This node is not visible to users + + )} +
+
+
+ +
+ + {node.locationCode || `Location #${node.locationId}`} +
+
+ +
+
+ RAM: + {formatBytes(node.memory)} + {node.memoryOverallocate > 0 && ( + +{node.memoryOverallocate}% + )} +
+
+ Disk: + {formatBytes(node.disk)} + {node.diskOverallocate > 0 && ( + +{node.diskOverallocate}% + )} +
+
+
+ +
+
+ Servers: + {node.serverCount} +
+
+ Allocs: + {node.allocationCount} +
+
+
+ +
+
+ Daemon: + {node.scheme}://{node.fqdn}:{node.daemonListenPort} +
+
+ SFTP: + {node.fqdn}:{node.daemonSftpPort} +
+
+
+ + + +
+ )) + )} +
+
+
+ + {/* Pagination */} + {meta && meta.totalPages > 1 && ( +
+

+ Showing {(currentPage - 1) * perPage + 1}–{Math.min(currentPage * perPage, meta.total)} of {meta.total} nodes +

+
+ +
+ {currentPage} + / + {meta.totalPages} +
+ +
+
+ )} +
+
+
+ ) +} diff --git a/app/admin/page.tsx b/app/admin/page.tsx index 796f28e..2f1eb35 100644 --- a/app/admin/page.tsx +++ b/app/admin/page.tsx @@ -2,6 +2,7 @@ import { useEffect, useState } from "react" import { useTranslations } from "next-intl" +import { useApiQuery, useApiMutation } from "@/packages/core" import { Users, Server, @@ -88,38 +89,51 @@ function StatCard({ title, value, icon: Icon, description, loading }: StatCardPr export default function AdminDashboard() { const t = useTranslations("admin") const { toast } = useToast() - const [stats, setStats] = useState(null) - const [loading, setLoading] = useState(true) - const [syncing, setSyncing] = useState(false) const [syncProgress, setSyncProgress] = useState(0) const [currentSyncTarget, setCurrentSyncTarget] = useState(null) - const [error, setError] = useState(null) - const fetchStats = async () => { - try { - setError(null) - const response = await fetch("/api/admin/sync") - const data = await response.json() - + // Fetch sync stats using React Query + const { data: statsResponse, isLoading: loading, refetch } = useApiQuery("/api/admin/sync") + + const stats = statsResponse ?? null + const error = statsResponse?.error ?? null + + // Start sync mutation + const syncMutation = useApiMutation< + { success: boolean; error?: string }, + { target: string } + >("POST", "/api/admin/sync", { + onSuccess: (data) => { + setSyncProgress(100) if (!data.success) { - setError(data.error || "Failed to fetch stats") - return + toast({ + title: t("sync.error"), + description: data.error, + variant: "destructive", + }) + } else { + toast({ + title: t("sync.started"), + description: t("sync.running"), + }) + // Refetch stats after a delay + setTimeout(() => refetch(), 2000) } - - setStats(data) - } catch (err) { - setError("Failed to connect to server") - } finally { - setLoading(false) - } - } - - useEffect(() => { - fetchStats() - }, []) + }, + onError: (error) => { + toast({ + title: t("sync.error"), + description: error.message, + variant: "destructive", + }) + }, + onSettled: () => { + setSyncProgress(0) + setCurrentSyncTarget(null) + }, + }) - const runSync = async (target: string = "all") => { - setSyncing(true) + const runSync = (target: string = "all") => { setSyncProgress(0) setCurrentSyncTarget(target) @@ -131,58 +145,32 @@ export default function AdminDashboard() { }) }, 500) - try { - const response = await fetch("/api/admin/sync", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ target }), - }) - - const data = await response.json() - clearInterval(progressInterval) - setSyncProgress(100) - - if (!data.success) { - toast({ - title: t("sync.error"), - description: data.error, - variant: "destructive", - }) - return - } + syncMutation.mutate({ target }) + } - toast({ - title: t("sync.success"), - description: t("sync.completed", { target }), - }) + const isSyncing = syncMutation.isPending - // Refresh stats after sync - await fetchStats() - } catch (err) { - clearInterval(progressInterval) - toast({ - title: t("sync.error"), - description: "Failed to connect to server", - variant: "destructive", - }) - } finally { - setTimeout(() => { - setSyncing(false) - setSyncProgress(0) - setCurrentSyncTarget(null) - }, 1000) + const formatLastSync = (value: any) => { + if (!value) return t("sync.never") + + // If it's an object with startedAt property, use that + let dateString = typeof value === "object" && value.startedAt ? value.startedAt : value + + // If dateString is still not a string, return never + if (typeof dateString !== "string") return t("sync.never") + + try { + const date = new Date(dateString) + if (isNaN(date.getTime())) return t("sync.never") + return new Intl.DateTimeFormat("en-US", { + dateStyle: "medium", + timeStyle: "short", + }).format(date) + } catch { + return t("sync.never") } } - const formatLastSync = (dateString: string | null) => { - if (!dateString) return t("sync.never") - const date = new Date(dateString) - return new Intl.DateTimeFormat("en-US", { - dateStyle: "medium", - timeStyle: "short", - }).format(date) - } - return (
{/* Header */} @@ -196,7 +184,7 @@ export default function AdminDashboard() { onClick={() => fetchStats()} variant="outline" size="sm" - disabled={loading || syncing} + disabled={loading || isSyncing} > {t("actions.refresh")} @@ -204,21 +192,21 @@ export default function AdminDashboard() {
{/* Sync Progress */} - {syncing && ( + {isSyncing && ( @@ -357,9 +345,9 @@ export default function AdminDashboard() { variant="outline" size="sm" onClick={() => runSync(target)} - disabled={syncing} + disabled={isSyncing} > - + {t(`sync.targets.${target}`)} ))} diff --git a/app/admin/servers/page.tsx b/app/admin/servers/page.tsx index c236a70..9a75241 100644 --- a/app/admin/servers/page.tsx +++ b/app/admin/servers/page.tsx @@ -1,6 +1,6 @@ "use client" -import { useEffect, useState, useCallback } from "react" +import { useEffect, useState } from "react" import { useTranslations } from "next-intl" import { Server, @@ -10,9 +10,6 @@ import { Cpu, Database, Calendar, - CheckCircle2, - XCircle, - Loader2, ChevronLeft, ChevronRight, Filter, @@ -21,13 +18,19 @@ import { Square, Pause, Activity, + Loader2, + XCircle, + Users, + Monitor, + Mail, + Globe, + Network, } from "lucide-react" -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/packages/ui/components/ui/card" +import { Card, CardContent, CardHeader, CardTitle } from "@/packages/ui/components/ui/card" import { Button } from "@/packages/ui/components/ui/button" import { Badge } from "@/packages/ui/components/ui/badge" import { Input } from "@/packages/ui/components/ui/input" import { Skeleton } from "@/packages/ui/components/ui/skeleton" -import { Progress } from "@/packages/ui/components/ui/progress" import { Table, TableBody, @@ -49,74 +52,70 @@ import { TooltipProvider, TooltipTrigger, } from "@/packages/ui/components/ui/tooltip" -import { useToast } from "@/packages/ui/components/ui/use-toast" import { cn } from "@/packages/core/lib/utils" +import { useAdminServers } from "@/packages/core" interface ServerData { id: string + serverType: string pterodactylId: number uuid: string name: string - description: string | null + description: string status: string isSuspended: boolean + panelType: string owner: { id: string username: string email: string - } + } | null node: { id: number name: string - } + fqdn: string + } | null egg: { id: number name: string - } - properties: Array<{ - key: string - value: string - }> + nest: string + } | null + memory: number + disk: number + cpu: number createdAt: string - allocations: Array<{ - ip: string - port: number - isAssigned: boolean - }> + updatedAt: string } -interface ServerMeta { - total: number - page: number - perPage: number - totalPages: number -} +type FilterStatus = "all" | "online" | "offline" | "suspended" | "installing" +type FilterType = "all" | "game_server" | "vps" | "email" | "web_hosting" -type FilterStatus = "all" | "running" | "offline" | "suspended" | "installing" +const serverTypeConfig: Record }> = { + game_server: { label: "Game Server", icon: Server }, + vps: { label: "VPS", icon: Monitor }, + email: { label: "Email", icon: Mail }, + web_hosting: { label: "Web Hosting", icon: Globe }, +} const statusConfig: Record }> = { - RUNNING: { label: "Running", variant: "default", icon: Play }, - OFFLINE: { label: "Offline", variant: "secondary", icon: Square }, - STARTING: { label: "Starting", variant: "outline", icon: Activity }, - STOPPING: { label: "Stopping", variant: "outline", icon: Pause }, - INSTALLING: { label: "Installing", variant: "outline", icon: Loader2 }, - INSTALL_FAILED: { label: "Install Failed", variant: "destructive", icon: XCircle }, - SUSPENDED: { label: "Suspended", variant: "destructive", icon: AlertTriangle }, - RESTORING_BACKUP: { label: "Restoring", variant: "outline", icon: RefreshCw }, + online: { label: "Online", variant: "default", icon: Play }, + offline: { label: "Offline", variant: "secondary", icon: Square }, + starting: { label: "Starting", variant: "outline", icon: Activity }, + stopping: { label: "Stopping", variant: "outline", icon: Pause }, + installing: { label: "Installing", variant: "outline", icon: Loader2 }, + install_failed: { label: "Install Failed", variant: "destructive", icon: XCircle }, + suspended: { label: "Suspended", variant: "destructive", icon: AlertTriangle }, + restoring_backup: { label: "Restoring", variant: "outline", icon: RefreshCw }, } export default function ServersPage() { const t = useTranslations("admin") - const { toast } = useToast() - const [servers, setServers] = useState([]) - const [meta, setMeta] = useState(null) - const [loading, setLoading] = useState(true) - const [refreshing, setRefreshing] = useState(false) const [searchQuery, setSearchQuery] = useState("") const [debouncedSearch, setDebouncedSearch] = useState("") const [currentPage, setCurrentPage] = useState(1) const [perPage, setPerPage] = useState(25) const [filterStatus, setFilterStatus] = useState("all") + const [filterType, setFilterType] = useState("all") // Debounce search useEffect(() => { @@ -127,72 +126,38 @@ export default function ServersPage() { return () => clearTimeout(timer) }, [searchQuery]) - const fetchServers = useCallback(async (showRefreshing = false) => { - if (showRefreshing) setRefreshing(true) - else setLoading(true) - - try { - const params = new URLSearchParams({ - page: currentPage.toString(), - perPage: perPage.toString(), - filter: filterStatus, - ...(debouncedSearch && { search: debouncedSearch }), - }) + const { data: response, isLoading, refetch } = useAdminServers({ + page: currentPage, + perPage, + status: filterStatus, + serverType: filterType !== "all" ? filterType : undefined, + search: debouncedSearch || undefined, + }) - const response = await fetch(`/api/admin/servers?${params}`) - const data = await response.json() - - if (data.success) { - setServers(data.data) - setMeta(data.meta) - } else { - toast({ - title: t("error.title"), - description: data.error || "Failed to fetch servers", - variant: "destructive", - }) - } - } catch (error) { - toast({ - title: t("error.title"), - description: "Failed to connect to server", - variant: "destructive", - }) - } finally { - setLoading(false) - setRefreshing(false) - } - }, [currentPage, perPage, filterStatus, debouncedSearch, t, toast]) - - useEffect(() => { - fetchServers() - }, [fetchServers]) + const serversData = response as any + const servers: ServerData[] = serversData?.servers || [] + const meta = serversData?.pagination || null const formatBytes = (mb: number) => { - if (mb >= 1024) { - return `${(mb / 1024).toFixed(1)} GB` - } + if (mb === 0) return "Unlimited" + if (mb >= 1024) return `${(mb / 1024).toFixed(1)} GB` return `${mb} MB` } - const formatDate = (dateString: string) => { - return new Date(dateString).toLocaleDateString(undefined, { - year: "numeric", - month: "short", - day: "numeric", + const formatDate = (dateString: string) => + new Date(dateString).toLocaleDateString(undefined, { + year: "numeric", month: "short", day: "numeric", }) - } const getStatusConfig = (status: string, suspended: boolean) => { - if (suspended) return statusConfig.SUSPENDED - return statusConfig[status] || { label: status, variant: "outline" as const, icon: Activity } + if (suspended) return statusConfig.suspended + return statusConfig[status.toLowerCase()] || { label: status, variant: "outline" as const, icon: Activity } } - // Calculate stats const stats = { total: meta?.total || 0, - running: servers.filter((s) => s.status === "RUNNING" && !s.isSuspended).length, - offline: servers.filter((s) => s.status === "OFFLINE" && !s.isSuspended).length, + online: servers.filter((s) => s.status === "online" && !s.isSuspended).length, + offline: servers.filter((s) => s.status === "offline" && !s.isSuspended).length, suspended: servers.filter((s) => s.isSuspended).length, } @@ -205,17 +170,10 @@ export default function ServersPage() { {t("servers.title")} -

- {t("servers.description")} -

+

{t("servers.description")}

- @@ -228,11 +186,7 @@ export default function ServersPage() { - {loading ? ( - - ) : ( -
{stats.total}
- )} + {isLoading ? :
{stats.total}
}
@@ -241,11 +195,7 @@ export default function ServersPage() { - {loading ? ( - - ) : ( -
{stats.running}
- )} + {isLoading ? :
{stats.online}
}
@@ -254,11 +204,7 @@ export default function ServersPage() { - {loading ? ( - - ) : ( -
{stats.offline}
- )} + {isLoading ? :
{stats.offline}
}
@@ -267,16 +213,12 @@ export default function ServersPage() { - {loading ? ( - - ) : ( -
{stats.suspended}
- )} + {isLoading ? :
{stats.suspended}
}
- {/* Filters and Search */} + {/* Filters */} {t("servers.filters.title")} @@ -300,16 +242,27 @@ export default function ServersPage() { {t("servers.filters.all")} - {t("servers.filters.running")} + {t("servers.filters.running")} {t("servers.filters.offline")} {t("servers.filters.suspended")} {t("servers.filters.installing")} - { setFilterType(v as FilterType); setCurrentPage(1) }}> + + + + All Types + Game Server + VPS + Email + Web Hosting + + + setEditingWebhookForm({...editingWebhookForm, description: e.target.value})} />
- +
@@ -1624,8 +1529,8 @@ export default function SettingsPage() {
- diff --git a/app/admin/sync/page.tsx b/app/admin/sync/page.tsx index 16d4b85..88ecee3 100644 --- a/app/admin/sync/page.tsx +++ b/app/admin/sync/page.tsx @@ -2,6 +2,7 @@ import { useEffect, useState, useCallback, useRef } from "react" import { useTranslations } from "next-intl" +import { useApiQuery, useApiMutation } from "@/packages/core" import { RefreshCw, AlertCircle, @@ -63,6 +64,57 @@ export default function SyncPage() { const [logs, setLogs] = useState([]) const logsEndRef = useRef(null) + // Fetch sync status using React Query + const { data: statusResponse, refetch: refetchStatus } = useApiQuery<{ + success: boolean + status: { lastSync: string | null; isSyncing: boolean } + counts: Record + availableTargets: string[] + }>("/api/admin/sync") + + // Start sync mutation (for single target) + const singleSyncMutation = useApiMutation< + { success: boolean; result?: Record; error?: string }, + { target: string } + >("POST", "/api/admin/sync", { + onSuccess: (data) => { + if (data.success) { + refetchStatus() + } + }, + }) + + // Start full sync mutation + const fullSyncMutation = useApiMutation< + { success: boolean; error?: string }, + { type: string } + >("POST", "/api/admin/sync", { + onSuccess: (data) => { + if (data.success) { + refetchStatus() + } + }, + }) + + // Cancel sync mutation + const cancelMutation = useApiMutation< + { success: boolean; error?: string }, + void + >("POST", "/api/admin/sync/cancel", { + onSuccess: (data) => { + if (data.success) { + refetchStatus() + } + }, + }) + + // Initialize sync status on mount + useEffect(() => { + if (statusResponse?.status?.lastSync) { + setLastSyncTime(new Date(statusResponse.status.lastSync)) + } + }, [statusResponse]) + // Auto-scroll logs useEffect(() => { logsEndRef.current?.scrollIntoView({ behavior: "smooth" }) @@ -79,24 +131,20 @@ export default function SyncPage() { setLogs((prev) => [...prev, log].slice(-100)) }, []) - const fetchStatus = async () => { - try { - const response = await fetch("/api/admin/sync") - const data = await response.json() - if (data.success && data.status?.lastSync) { - setLastSyncTime(new Date(data.status.lastSync)) - } - } catch (error) { - console.error("Failed to fetch sync status:", error) - } - } - - // Poll server sync logs while a sync is running to show live progress/messages + // Poll server sync logs for single sync operations (not used during fullSync) const serverPollRef = useRef(null) const lastServerLogId = useRef(null) + // Fetch sync logs using React Query (disabled by default, enabled during polling) + const { data: logsResponse, refetch: refetchLogs } = useApiQuery<{ + success: boolean + logs: any[] + }>("/api/admin/sync/logs", { limit: "5" }, { enabled: false }) + + useEffect(() => { - if (!isRunning) { + // Skip polling if a full sync SSE stream is active (eventSourceRef handles it) + if (!isRunning || eventSourceRef.current !== null) { if (serverPollRef.current) { clearInterval(serverPollRef.current) serverPollRef.current = null @@ -106,21 +154,38 @@ export default function SyncPage() { const poll = async () => { try { - const res = await fetch('/api/admin/sync/logs?limit=5') - const data = await res.json() - if (data.success && Array.isArray(data.logs) && data.logs.length > 0) { - const latest = data.logs[0] - // Update progress if available - const itemsTotal = latest.itemsTotal || 0 - const itemsSynced = latest.itemsSynced || 0 + const data = await refetchLogs() + if (data.data?.success && Array.isArray(data.data.logs) && data.data.logs.length > 0) { + const latest = data.data.logs[0] + + // Parse metadata if it's a string + let metadata = latest.metadata + if (typeof metadata === 'string') { + try { + metadata = JSON.parse(metadata) + } catch { + metadata = {} + } + } + + // Update progress from metadata with detailed info + const itemsTotal = metadata?.itemsTotal || latest.itemsTotal || 0 + const itemsProcessed = metadata?.itemsProcessed || latest.itemsSynced || 0 + if (itemsTotal > 0) { - setProgress(Math.round((itemsSynced / itemsTotal) * 100)) + setProgress(Math.round((itemsProcessed / itemsTotal) * 100)) } - // Add message if there's a new server-side message - const lastMessage = latest.metadata?.lastMessage + // Add message if there's a new server-side message with detailed progress + const lastMessage = metadata?.lastMessage if (latest.id !== lastServerLogId.current && lastMessage) { - addLog(lastMessage, 'progress') + // Enhanced message with progress details + let displayMessage = lastMessage + if (itemsProcessed > 0 && itemsTotal > 0) { + const percentage = Math.round((itemsProcessed / itemsTotal) * 100) + displayMessage = `${lastMessage} [${itemsProcessed}/${itemsTotal} - ${percentage}%]` + } + addLog(displayMessage, 'progress') lastServerLogId.current = latest.id } } @@ -137,23 +202,24 @@ export default function SyncPage() { if (serverPollRef.current) clearInterval(serverPollRef.current) serverPollRef.current = null } - }, [isRunning]) + }, [isRunning, refetchLogs, addLog]) - const requestCancel = async () => { - try { - const res = await fetch('/api/admin/sync/cancel', { method: 'POST' }) - const data = await res.json() - if (data.success) { - addLog('Cancellation requested', 'info') - toast({ title: 'Cancellation requested' }) - } else { - addLog(`Cancel failed: ${data.error}`, 'error') + const requestCancel = () => { + cancelMutation.mutate(undefined, { + onSuccess: (data) => { + if (data.success) { + addLog('Cancellation requested', 'info') + toast({ title: 'Cancellation requested' }) + } else { + addLog(`Cancel failed: ${data.error}`, 'error') + toast({ title: 'Cancel failed', variant: 'destructive' }) + } + }, + onError: (error) => { + addLog('Cancel failed: network error', 'error') toast({ title: 'Cancel failed', variant: 'destructive' }) - } - } catch (e) { - addLog('Cancel failed: network error', 'error') - toast({ title: 'Cancel failed', variant: 'destructive' }) - } + }, + }) } const scrollToLogsMobile = () => { @@ -162,8 +228,8 @@ export default function SyncPage() { } useEffect(() => { - fetchStatus() - }, []) + refetchStatus() + }, [refetchStatus]) const updateTargetStatus = (targetId: string, status: SyncTarget["status"]) => { setTargets((prev) => prev.map((t) => (t.id === targetId ? { ...t, status } : t))) @@ -173,50 +239,96 @@ export default function SyncPage() { setTargets(initialTargets.map((t) => ({ ...t, status: "idle" }))) } - const runSingleSync = async (targetId: string) => { + const runSingleSync = (targetId: string) => { if (isRunning) return setIsRunning(true) setCurrentTarget(targetId) updateTargetStatus(targetId, "running") - + const target = targets.find((t) => t.id === targetId) addLog(`Starting sync: ${target?.name}...`, "info", targetId) - try { - const response = await fetch("/api/admin/sync", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ target: targetId }), - }) + singleSyncMutation.mutate( + { type: targetId } as any, + { + onSuccess: (data) => { + if (!data.success) { + updateTargetStatus(targetId, "error") + addLog(`✗ ${target?.name} failed: ${data.error}`, "error", targetId) + toast({ title: `${target?.name} sync failed`, variant: "destructive" }) + setIsRunning(false) + setCurrentTarget(null) + return + } - const data = await response.json() + const syncLogId = (data as any).sync_log_id + addLog(`✓ Enqueued — streaming progress...`, "progress", targetId) - if (data.success) { - updateTargetStatus(targetId, "success") - const result = data.result?.[targetId] - if (result) { - addLog(`✓ ${target?.name}: ${formatResult(result)}`, "success", targetId) - } else { - addLog(`✓ ${target?.name} synced successfully`, "success", targetId) - } - toast({ title: `${target?.name} synced` }) - } else { - updateTargetStatus(targetId, "error") - addLog(`✗ ${target?.name} failed: ${data.error}`, "error", targetId) - toast({ title: `${target?.name} sync failed`, variant: "destructive" }) + const apiBase = process.env.NEXT_PUBLIC_GO_API_URL || "http://localhost:8080" + const token = (typeof window !== "undefined" ? localStorage.getItem("auth_token") : "") || "" + const sseUrl = `${apiBase}/api/admin/sync/stream/${syncLogId}?token=${encodeURIComponent(token)}` + + const es = new EventSource(sseUrl) + eventSourceRef.current = es + + const stopSingleStream = () => { + es.close() + if (eventSourceRef.current === es) eventSourceRef.current = null + setIsRunning(false) + setCurrentTarget(null) + refetchStatus() + } + + es.addEventListener("update", (e: MessageEvent) => { + try { + const payload = JSON.parse(e.data) + const meta = payload.metadata || {} + const lastMessage: string = meta.lastMessage || "" + if (lastMessage) addLog(lastMessage, "progress", targetId) + } catch {} + }) + + es.addEventListener("done", (e: MessageEvent) => { + try { + const payload = JSON.parse(e.data) + if (payload.status === "COMPLETED") { + updateTargetStatus(targetId, "success") + addLog(`✓ ${target?.name} synced successfully`, "success", targetId) + toast({ title: `${target?.name} synced` }) + } else if (payload.status === "FAILED") { + updateTargetStatus(targetId, "error") + const errMsg = payload.metadata?.error || payload.metadata?.failed_step || "Unknown error" + addLog(`✗ ${target?.name} failed: ${errMsg}`, "error", targetId) + toast({ title: `${target?.name} sync failed`, variant: "destructive" }) + } + } catch {} + stopSingleStream() + }) + + es.onerror = () => { + updateTargetStatus(targetId, "error") + addLog(`✗ ${target?.name}: stream connection lost`, "error", targetId) + toast({ title: `${target?.name} sync failed`, variant: "destructive" }) + stopSingleStream() + } + }, + onError: (error) => { + updateTargetStatus(targetId, "error") + addLog(`✗ ${target?.name} failed: Network error`, "error", targetId) + toast({ title: `${target?.name} sync failed`, variant: "destructive" }) + setIsRunning(false) + setCurrentTarget(null) + }, } - } catch (error) { - updateTargetStatus(targetId, "error") - addLog(`✗ ${target?.name} failed: Network error`, "error", targetId) - toast({ title: `${target?.name} sync failed`, variant: "destructive" }) - } finally { - setIsRunning(false) - setCurrentTarget(null) - } + ) } - const runFullSync = async () => { + // EventSource ref for SSE streaming — closed on unmount and on terminal sync state + const eventSourceRef = useRef(null) + useEffect(() => () => { eventSourceRef.current?.close() }, []) + + const runFullSync = () => { if (isRunning) return setIsRunning(true) @@ -227,56 +339,134 @@ export default function SyncPage() { addLog("═══ Starting Full Sync ═══", "info") addLog("Connecting to Pterodactyl panel...", "progress") - const syncOrder = ["locations", "nodes", "allocations", "nests", "servers", "databases", "users"] - let completedCount = 0 - - for (const targetId of syncOrder) { - setCurrentTarget(targetId) - updateTargetStatus(targetId, "running") - - const target = targets.find((t) => t.id === targetId) - addLog(`Syncing ${target?.name}...`, "progress", targetId) - setProgress(Math.round((completedCount / syncOrder.length) * 100)) - - try { - const response = await fetch("/api/admin/sync", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ target: targetId }), - }) + fullSyncMutation.mutate( + { type: "full" }, + { + onSuccess: (data) => { + if (!data.success) { + addLog(`✗ Sync failed: ${data.error}`, "error") + toast({ title: "Sync failed", variant: "destructive" }) + setIsRunning(false) + return + } - const data = await response.json() + const syncLogId = (data as any).sync_log_id + addLog("✓ Sync enqueued — streaming live updates...", "progress") + + // Connect directly to the backend SSE endpoint. + // EventSource cannot send Authorization headers, so the JWT is passed + // as a query param and validated server-side. + const apiBase = process.env.NEXT_PUBLIC_GO_API_URL || "http://localhost:8080" + const token = (typeof window !== "undefined" ? localStorage.getItem("auth_token") : "") || "" + const sseUrl = `${apiBase}/api/admin/sync/stream/${syncLogId}?token=${encodeURIComponent(token)}` + + const es = new EventSource(sseUrl) + eventSourceRef.current = es + + const syncOrder = ["locations", "nodes", "allocations", "nests", "servers", "databases", "users"] + let hasStarted = false + let lastStep = "" + + let intentionallyClosed = false + const stopStream = (finalStatus?: string) => { + intentionallyClosed = true + es.close() + eventSourceRef.current = null + setIsRunning(false) + if (finalStatus !== "CANCELLED") refetchStatus() + } - if (data.success) { - updateTargetStatus(targetId, "success") - const result = data.result?.[targetId] - if (result) { - addLog(` ✓ ${formatResult(result)}`, "success", targetId) - } else { - addLog(` ✓ Completed`, "success", targetId) + es.addEventListener("connected", () => { + addLog("✓ Live sync stream connected", "progress") + }) + + es.addEventListener("update", (e: MessageEvent) => { + try { + const payload = JSON.parse(e.data) + const meta = payload.metadata || {} + const status: string = payload.status + + if (!hasStarted && status === "RUNNING") { + hasStarted = true + addLog("✓ Backend sync started — processing data...", "progress") + } + + if (status === "RUNNING") { + // Use the real step-based progress written by the worker + // (0 → starting, 15 → nodes, 30 → allocations, 45 → nests, + // 60 → servers, 75 → users, 85 → databases, 100 → done) + const metaProgress = typeof meta.progress === "number" ? meta.progress : 50 + setProgress(metaProgress) + + const step: string = meta.step || "" + if (step && step !== "starting" && step !== lastStep) { + lastStep = step + const stepIdx = syncOrder.indexOf(step) + if (stepIdx >= 0) { + syncOrder.forEach((s, i) => { + if (i < stepIdx) updateTargetStatus(s, "success") + else if (i === stepIdx) updateTargetStatus(s, "running") + }) + } + } + + const lastMessage: string = meta.lastMessage || "" + if (lastMessage) { + const itemsTotal: number = meta.itemsTotal || 0 + const itemsProcessed: number = meta.itemsProcessed || 0 + let displayMessage = lastMessage + if (step && itemsTotal > 0 && itemsProcessed > 0) { + const pct = Math.round((itemsProcessed / itemsTotal) * 100) + displayMessage = `${step}: ${lastMessage} [${itemsProcessed}/${itemsTotal} – ${pct}%]` + } else if (step) { + displayMessage = `${step}: ${lastMessage}` + } + addLog(displayMessage, "progress", step || undefined) + } + } + } catch (err) { + console.error("SSE parse error", err) + } + }) + + es.addEventListener("done", (e: MessageEvent) => { + try { + const payload = JSON.parse(e.data) + const status: string = payload.status + const meta = payload.metadata || {} + + if (status === "COMPLETED") { + setProgress(100) + syncOrder.forEach((s) => updateTargetStatus(s, "success")) + addLog("═══ Full Sync Complete ═══", "success") + setLastSyncTime(new Date()) + toast({ title: "Full sync completed" }) + } else if (status === "FAILED") { + const failedStep: string = meta.failed_step || meta.step || "" + if (failedStep) updateTargetStatus(failedStep, "error") + addLog(`✗ Sync failed: ${meta.error || "Unknown error"}`, "error") + toast({ title: "Sync failed", variant: "destructive" }) + } else if (status === "CANCELLED") { + addLog("⚠️ Sync cancelled", "info") + } + stopStream(status) + } catch {} + }) + + es.onerror = () => { + if (intentionallyClosed) return + addLog("✗ Streaming connection lost", "error") + stopStream() + toast({ title: "Connection lost", variant: "destructive" }) } - } else { - updateTargetStatus(targetId, "error") - addLog(` ✗ Failed: ${data.error}`, "error", targetId) - } - } catch (error) { - updateTargetStatus(targetId, "error") - addLog(` ✗ Network error`, "error", targetId) + }, + onError: (error) => { + addLog(`✗ Network error: ${error.message}`, "error") + toast({ title: "Sync failed", variant: "destructive" }) + setIsRunning(false) + }, } - - completedCount++ - - // Small delay between syncs for visual feedback - await new Promise((r) => setTimeout(r, 300)) - } - - setProgress(100) - setLastSyncTime(new Date()) - addLog("═══ Full Sync Complete ═══", "success") - toast({ title: "Full sync completed" }) - - setIsRunning(false) - setCurrentTarget(null) + ) } const formatResult = (result: Record): string => { @@ -419,7 +609,7 @@ export default function SyncPage() {

{formatDate(lastSyncTime)}

- diff --git a/app/admin/users/page.tsx b/app/admin/users/page.tsx index 1ca0454..6231d0e 100644 --- a/app/admin/users/page.tsx +++ b/app/admin/users/page.tsx @@ -1,6 +1,6 @@ "use client" -import { useEffect, useState, useCallback } from "react" +import { useEffect, useState } from "react" import { useTranslations } from "next-intl" import { Users, @@ -59,6 +59,8 @@ import { Switch } from "@/packages/ui/components/ui/switch" import { Checkbox } from "@/packages/ui/components/ui/checkbox" import { useToast } from "@/packages/ui/components/ui/use-toast" import { cn } from "@/packages/core/lib/utils" +import { useAdminUsers, useUpdateUserRoles } from "@/packages/core" +import { isStaffUser } from "@/packages/auth" interface User { id: string @@ -66,19 +68,19 @@ interface User { username: string firstName: string | null lastName: string | null - roles?: string[] - isAdmin: boolean - isSystemAdmin?: boolean + pterodactylId: number | null + roles: string[] + isPterodactylAdmin: boolean + isVirtfusionAdmin: boolean + isSystemAdmin: boolean isMigrated: boolean isActive: boolean - pterodactylId: number | null + emailVerified: boolean createdAt: string + updatedAt: string lastLoginAt: string | null - lastSyncedAt: string | null - _count?: { - servers: number - sessions: number - } + serverCount: number + sessionCount: number } interface UserMeta { @@ -95,10 +97,8 @@ type FilterStatus = "all" | "active" | "inactive" | "admin" | "migrated" | "not- export default function UsersPage() { const t = useTranslations("admin") const { toast } = useToast() - const [users, setUsers] = useState([]) - const [meta, setMeta] = useState(null) - const [loading, setLoading] = useState(true) - const [refreshing, setRefreshing] = useState(false) + + // State const [searchQuery, setSearchQuery] = useState("") const [debouncedSearch, setDebouncedSearch] = useState("") const [currentPage, setCurrentPage] = useState(1) @@ -111,7 +111,6 @@ export default function UsersPage() { const [editingUser, setEditingUser] = useState(null) const [editDialogOpen, setEditDialogOpen] = useState(false) const [editingRoles, setEditingRoles] = useState({ isAdmin: false, isSystemAdmin: false, isActive: true, roles: [] as string[] }) - const [savingRole, setSavingRole] = useState(false) // Debounce search useEffect(() => { @@ -122,48 +121,20 @@ export default function UsersPage() { return () => clearTimeout(timer) }, [searchQuery]) - const fetchUsers = useCallback(async (showRefreshing = false) => { - if (showRefreshing) setRefreshing(true) - else setLoading(true) + // Use TanStack Query hooks + const { data: usersData, isLoading, refetch } = useAdminUsers({ + page: currentPage, + perPage, + sortField, + sortOrder, + filter: filterStatus, + search: debouncedSearch || undefined, + }) - try { - const params = new URLSearchParams({ - page: currentPage.toString(), - perPage: perPage.toString(), - sortField, - sortOrder, - filter: filterStatus, - ...(debouncedSearch && { search: debouncedSearch }), - }) - - const response = await fetch(`/api/admin/users?${params}`) - const data = await response.json() - - if (data.success) { - setUsers(data.data) - setMeta(data.meta) - } else { - toast({ - title: t("error.title"), - description: data.error || "Failed to fetch users", - variant: "destructive", - }) - } - } catch (error) { - toast({ - title: t("error.title"), - description: "Failed to connect to server", - variant: "destructive", - }) - } finally { - setLoading(false) - setRefreshing(false) - } - }, [currentPage, perPage, sortField, sortOrder, filterStatus, debouncedSearch, t, toast]) + const updateRoles = useUpdateUserRoles() - useEffect(() => { - fetchUsers() - }, [fetchUsers]) + const users = usersData?.users || [] + const meta = usersData?.pagination || null const handleSort = (field: SortField) => { if (sortField === field) { @@ -207,8 +178,8 @@ export default function UsersPage() { const handleOpenEditDialog = (user: User) => { setEditingUser(user) setEditingRoles({ - isAdmin: user.isAdmin, - isSystemAdmin: user.isSystemAdmin || false, + isAdmin: user.isPterodactylAdmin || user.isVirtfusionAdmin, + isSystemAdmin: user.isSystemAdmin, isActive: user.isActive, roles: user.roles || [], }) @@ -217,43 +188,27 @@ export default function UsersPage() { const handleSaveRoles = async () => { if (!editingUser) return - setSavingRole(true) - try { - const response = await fetch("/api/admin/users/roles", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - userId: editingUser.id, - isAdmin: editingRoles.isAdmin, - isSystemAdmin: editingRoles.isSystemAdmin, - isActive: editingRoles.isActive, - roles: editingRoles.roles, - }), - }) - const data = await response.json() - if (data.success) { + + updateRoles.mutate({ + userId: editingUser.id, + roles: editingRoles.roles, + }, { + onSuccess: () => { toast({ title: "Role updated", description: `${editingUser.username}'s role has been updated successfully`, }) setEditDialogOpen(false) - fetchUsers(true) - } else { + refetch() + }, + onError: (error: any) => { toast({ title: "Error", - description: data.error || "Failed to update user role", + description: error.message || "Failed to update user role", variant: "destructive", }) } - } catch (error) { - toast({ - title: "Error", - description: "Failed to update user role", - variant: "destructive", - }) - } finally { - setSavingRole(false) - } + }) } return ( @@ -270,12 +225,12 @@ export default function UsersPage() {

@@ -288,7 +243,7 @@ export default function UsersPage() {
- {loading ? ( + {isLoading ? ( ) : (
{meta?.total || 0}
@@ -301,7 +256,7 @@ export default function UsersPage() { - {loading ? ( + {isLoading ? ( ) : (
@@ -316,11 +271,11 @@ export default function UsersPage() { - {loading ? ( + {isLoading ? ( ) : (
- {users.filter((u) => u.isAdmin).length} + {users.filter((u: User) => isStaffUser(u as any)).length}
)}
@@ -331,7 +286,7 @@ export default function UsersPage() { - {loading ? ( + {isLoading ? ( ) : (
@@ -415,6 +370,7 @@ export default function UsersPage() { {t("users.table.status")} {t("users.table.pterodactyl")} + Servers handleSort("createdAt")} @@ -437,7 +393,7 @@ export default function UsersPage() { - {loading ? ( + {isLoading ? ( Array.from({ length: 5 }).map((_, i) => ( @@ -473,7 +429,7 @@ export default function UsersPage() {
{user.username} - {user.isAdmin && ( + {(isStaffUser(user as any)) && ( @@ -529,9 +485,12 @@ export default function UsersPage() { - )} + + {user.serverCount ?? 0} +
- + {formatDate(user.createdAt)}
@@ -685,17 +644,17 @@ export default function UsersPage() {
diff --git a/app/api/admin/servers/route.ts b/app/api/admin/servers/route.ts deleted file mode 100644 index 8a7416b..0000000 --- a/app/api/admin/servers/route.ts +++ /dev/null @@ -1,129 +0,0 @@ -import { NextResponse } from "next/server" -import { requireAdmin } from "@/packages/auth" -import { prisma } from "@/packages/core/lib/prisma" - -export async function GET(request: Request) { - // Require admin authentication - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - try { - const { searchParams } = new URL(request.url) - const page = parseInt(searchParams.get("page") || "1", 10) - const perPage = Math.min(parseInt(searchParams.get("perPage") || "25", 10), 100) - const search = searchParams.get("search") || "" - const filter = searchParams.get("filter") || "all" - - // Build where clause - const where: any = {} - - // Search filter - if (search) { - where.OR = [ - { name: { contains: search, mode: "insensitive" } }, - { description: { contains: search, mode: "insensitive" } }, - { uuid: { contains: search, mode: "insensitive" } }, - ] - } - - // Status filter - switch (filter) { - case "running": - where.status = "RUNNING" - where.isSuspended = false - break - case "offline": - where.status = "OFFLINE" - where.isSuspended = false - break - case "suspended": - where.isSuspended = true - break - case "installing": - where.status = { in: ["INSTALLING", "INSTALL_FAILED"] } - break - } - - // Get total count - const total = await prisma.server.count({ where }) - - // Get servers with pagination - const servers = await prisma.server.findMany({ - where, - orderBy: { createdAt: "desc" }, - skip: (page - 1) * perPage, - take: perPage, - select: { - id: true, - pterodactylId: true, - uuid: true, - name: true, - description: true, - status: true, - isSuspended: true, - createdAt: true, - owner: { - select: { - id: true, - username: true, - email: true, - }, - }, - node: { - select: { - id: true, - name: true, - }, - }, - egg: { - select: { - id: true, - name: true, - }, - }, - properties: { - select: { - key: true, - value: true, - }, - }, - allocations: { - select: { - ip: true, - port: true, - isAssigned: true, - }, - take: 5, - }, - }, - }) - - return NextResponse.json({ - success: true, - data: servers, - meta: { - total, - page, - perPage, - totalPages: Math.ceil(total / perPage), - }, - }) - } catch (error) { - console.error("Failed to fetch servers:", error) - - return NextResponse.json( - { - success: false, - error: "Failed to fetch servers", - data: [], - meta: null, - }, - { status: 500 } - ) - } -} diff --git a/app/api/admin/settings/repos/route.ts b/app/api/admin/settings/repos/route.ts deleted file mode 100644 index 7eea48f..0000000 --- a/app/api/admin/settings/repos/route.ts +++ /dev/null @@ -1,140 +0,0 @@ -import { NextResponse } from "next/server" -import { requireAdmin } from "@/packages/auth" -import { getConfig, setConfig, clearConfigCache } from "@/packages/core/lib/config" - -const REPO_REGEX = /^[^\s\/]+\/[^\s\/]+$/ - -export async function GET() { - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json({ success: false, error: authResult.error }, { status: authResult.status }) - } - - try { - const raw = await getConfig("github_repositories") - let repos: string[] = [] - if (raw) { - try { - const parsed = JSON.parse(raw) - if (Array.isArray(parsed)) repos = parsed.map(String) - } catch { - // fallback: newline separated or single value - repos = String(raw).split("\n").map(r => r.trim()).filter(Boolean) - } - } - - return NextResponse.json({ success: true, repos }) - } catch (error) { - console.error("Failed to fetch repos:", error) - return NextResponse.json({ success: false, error: "Failed to fetch repos" }, { status: 500 }) - } -} - -export async function POST(request: Request) { - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json({ success: false, error: authResult.error }, { status: authResult.status }) - } - - try { - const body = await request.json() - const repo = (body?.repo || "").trim() - if (!repo || !REPO_REGEX.test(repo)) { - return NextResponse.json({ success: false, error: "Invalid repo format. Use owner/repo." }, { status: 400 }) - } - - const raw = await getConfig("github_repositories") - let repos: string[] = [] - if (raw) { - try { repos = JSON.parse(raw) } catch { repos = String(raw).split("\n").map(r => r.trim()).filter(Boolean) } - } - - if (!repos.includes(repo)) repos.push(repo) - - await setConfig("github_repositories", JSON.stringify(repos)) - clearConfigCache() - - return NextResponse.json({ success: true, repos }) - } catch (error) { - console.error("Failed to add repo:", error) - return NextResponse.json({ success: false, error: "Failed to add repo" }, { status: 500 }) - } -} - -export async function PUT(request: Request) { - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json({ success: false, error: authResult.error }, { status: authResult.status }) - } - - try { - const body = await request.json() - const oldRepo = (body?.oldRepo || "").trim() - const repo = (body?.repo || "").trim() - if (!repo || !REPO_REGEX.test(repo)) { - return NextResponse.json({ success: false, error: "Invalid repo format. Use owner/repo." }, { status: 400 }) - } - - const raw = await getConfig("github_repositories") - let repos: string[] = [] - if (raw) { - try { repos = JSON.parse(raw) } catch { repos = String(raw).split("\n").map(r => r.trim()).filter(Boolean) } - } - - const idx = oldRepo ? repos.indexOf(oldRepo) : -1 - if (idx >= 0) { - repos[idx] = repo - } else { - // fallback: replace first matching by prefix or just append - const found = repos.findIndex(r => r.toLowerCase() === repo.toLowerCase()) - if (found >= 0) repos[found] = repo - else repos.push(repo) - } - - // Deduplicate - repos = Array.from(new Set(repos)).map(String) - - await setConfig("github_repositories", JSON.stringify(repos)) - clearConfigCache() - - return NextResponse.json({ success: true, repos }) - } catch (error) { - console.error("Failed to update repo:", error) - return NextResponse.json({ success: false, error: "Failed to update repo" }, { status: 500 }) - } -} - -export async function DELETE(request: Request) { - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json({ success: false, error: authResult.error }, { status: authResult.status }) - } - - try { - const body = await request.json() - const repo = (body?.repo || "").trim() - const index = typeof body?.index === "number" ? Number(body.index) : undefined - - const raw = await getConfig("github_repositories") - let repos: string[] = [] - if (raw) { - try { repos = JSON.parse(raw) } catch { repos = String(raw).split("\n").map(r => r.trim()).filter(Boolean) } - } - - if (typeof index === "number") { - if (index >= 0 && index < repos.length) repos.splice(index, 1) - } else if (repo) { - repos = repos.filter(r => r !== repo) - } else { - return NextResponse.json({ success: false, error: "Provide repo or index to delete" }, { status: 400 }) - } - - await setConfig("github_repositories", JSON.stringify(repos)) - clearConfigCache() - - return NextResponse.json({ success: true, repos }) - } catch (error) { - console.error("Failed to delete repo:", error) - return NextResponse.json({ success: false, error: "Failed to delete repo" }, { status: 500 }) - } -} diff --git a/app/api/admin/settings/route.ts b/app/api/admin/settings/route.ts deleted file mode 100644 index 06e8c1d..0000000 --- a/app/api/admin/settings/route.ts +++ /dev/null @@ -1,464 +0,0 @@ -import { NextResponse } from "next/server" -import { requireAdmin, isSuperAdmin } from "@/packages/auth" -import { auth } from "@/packages/auth" -import { prisma } from "@/packages/core/lib/prisma" -import { dispatchSettingsUpdate } from "@/packages/core/dispatchers/webhooks" -import { testPanelConnection } from "@/packages/core/lib/db-test" -import { getConfig, getAllSettings, setConfig, clearConfigCache } from "@/packages/core/lib/config" - -export async function GET() { - // Require admin authentication - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - // Get current user's roles - const session = await auth() - const userRoles = session?.user?.roles || [] - - try { - // Get all config settings - const allSettings = await getAllSettings() - - // Test database connection - let databaseConnected = false - try { - await prisma.$queryRaw`SELECT 1` - databaseConnected = true - } catch { - databaseConnected = false - } - - // Check Pterodactyl panel connection - let pterodactylConnected = false - let pterodactylVersion = null - let pterodactylLatency = null - const pterodactylUrl = allSettings.pterodactyl_url - const pterodactylApiKey = allSettings.pterodactyl_api_key - - if (pterodactylUrl && pterodactylApiKey) { - try { - const testResult = await testPanelConnection(pterodactylUrl, pterodactylApiKey, "pterodactyl") - if (testResult.success) { - pterodactylConnected = true - pterodactylVersion = testResult.panelVersion || "Connected" - pterodactylLatency = testResult.latency - } - } catch { - pterodactylConnected = false - } - } - - // Check Virtfusion panel connection - let virtfusionConnected = false - let virtfusionVersion = null - let virtfusionLatency = null - const virtfusionUrl = allSettings.virtfusion_url - const virtfusionApiKey = allSettings.virtfusion_api_key - - if (virtfusionUrl && virtfusionApiKey) { - try { - const testResult = await testPanelConnection(virtfusionUrl, virtfusionApiKey, "virtfusion") - if (testResult.success) { - virtfusionConnected = true - virtfusionVersion = "Virtfusion" - virtfusionLatency = testResult.latency - } - } catch { - virtfusionConnected = false - } - } - - // Parse Discord webhooks from database - let discordWebhooks = [] - try { - // Get admin webhooks from DiscordWebhook model - const webhooks = await prisma.discordWebhook.findMany({ - where: { - scope: "ADMIN" - }, - select: { - id: true, - name: true, - webhookUrl: true, - type: true, - scope: true, - description: true, - enabled: true, - testSuccessAt: true, - createdAt: true, - }, - orderBy: { - createdAt: "desc" - } - }) - discordWebhooks = webhooks - } catch { - discordWebhooks = [] - } - - // Parse GitHub repositories config into an array for frontend - let githubRepos: string[] = [] - try { - const rawRepos = allSettings.github_repositories - if (rawRepos) { - try { - const parsed = JSON.parse(rawRepos) - if (Array.isArray(parsed)) { - githubRepos = parsed - } else if (typeof parsed === "string") { - // handle double-encoded string - try { - const inner = JSON.parse(parsed) - if (Array.isArray(inner)) githubRepos = inner - else githubRepos = [String(parsed)] - } catch { - githubRepos = parsed.split("\n").map((r: string) => r.trim()).filter(Boolean) - } - } - } catch { - // fallback: newline-separated - githubRepos = rawRepos.split("\n").map((r: string) => r.trim()).filter(Boolean) - } - } - } catch (e) { - githubRepos = [] - } - - return NextResponse.json({ - success: true, - settings: { - pterodactylUrl: allSettings.pterodactyl_url || "", - pterodactylApiKey: isSuperAdmin(userRoles) && allSettings.pterodactyl_api_key ? allSettings.pterodactyl_api_key : (allSettings.pterodactyl_api_key ? "••••••••••••••••••••" : ""), - pterodactylClientApiKey: isSuperAdmin(userRoles) && allSettings.pterodactyl_client_api_key ? allSettings.pterodactyl_client_api_key : (allSettings.pterodactyl_client_api_key ? "••••••••••••••••••••" : ""), - pterodactylApi: allSettings.pterodactyl_api || "", - virtfusionUrl: allSettings.virtfusion_url || "", - virtfusionApiKey: isSuperAdmin(userRoles) && allSettings.virtfusion_api_key ? allSettings.virtfusion_api_key : (allSettings.virtfusion_api_key ? "••••••••••••••••••••" : ""), - virtfusionApi: allSettings.virtfusion_api || "", - crowdinProjectId: allSettings.crowdin_project_id || "", - crowdinPersonalToken: isSuperAdmin(userRoles) && allSettings.crowdin_personal_token ? allSettings.crowdin_personal_token : (allSettings.crowdin_personal_token ? "••••••••••••••••••••" : ""), - githubToken: isSuperAdmin(userRoles) && allSettings.github_token ? allSettings.github_token : (allSettings.github_token ? "••••••••••••••••••••" : ""), - registrationEnabled: allSettings.registration_enabled !== "false", - maintenanceMode: allSettings.maintenance_mode === "true", - // Email & Notifications - emailNotifications: allSettings.email_notifications_enabled !== "false", - resendApiKey: isSuperAdmin(userRoles) && allSettings.resend_api_key ? allSettings.resend_api_key : (allSettings.resend_api_key ? "••••••••••••••••••••" : ""), - discordNotifications: allSettings.discord_notifications_enabled === "true", - // Feature flags - autoSyncEnabled: allSettings.auto_sync_enabled === "true", - // Advanced - cacheTimeout: allSettings.cache_timeout ? parseInt(allSettings.cache_timeout, 10) : 60, - syncInterval: allSettings.sync_interval ? parseInt(allSettings.sync_interval, 10) : 3600, - // Admin/site - adminEmail: allSettings.admin_email || "", - discordWebhooks: discordWebhooks, - githubRepositories: githubRepos, - siteName: allSettings.site_name || "NodeByte Hosting", - siteUrl: allSettings.site_url || "", - faviconUrl: allSettings.favicon_url || "", - }, - pterodactylStatus: { - connected: pterodactylConnected, - version: pterodactylVersion, - latency: pterodactylLatency, - }, - virtfusionStatus: { - connected: virtfusionConnected, - version: virtfusionVersion, - latency: virtfusionLatency, - }, - databaseStatus: { - connected: databaseConnected, - }, - }) - } catch (error) { - console.error("Failed to fetch settings:", error) - - return NextResponse.json( - { success: false, error: "Failed to fetch settings" }, - { status: 500 } - ) - } -} - -const MASKED_VALUE = "••••••••••••••••••••" - -export async function POST(request: Request) { - // Require admin authentication - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - // Get current user's roles - const session = await auth() - const userRoles = session?.user?.roles || [] - - // Only SUPER_ADMIN can modify sensitive settings - if (!isSuperAdmin(userRoles)) { - return NextResponse.json( - { success: false, error: "Only super admins can modify sensitive settings" }, - { status: 403 } - ) - } - - try { - const body = await request.json() - - // Track which fields are being changed for webhook notification - const changedFields: string[] = [] - - // Save all settings to Config store - if (body.siteName) { - await setConfig("site_name", body.siteName) - changedFields.push("Site Name") - } - if (body.siteUrl) { - await setConfig("site_url", body.siteUrl) - changedFields.push("Site URL") - } - if (body.faviconUrl !== undefined) { - await setConfig("favicon_url", body.faviconUrl || "") - changedFields.push("Favicon URL") - } - - // Panel settings - if (body.pterodactylUrl) { - await setConfig("pterodactyl_url", body.pterodactylUrl) - changedFields.push("Pterodactyl URL") - } - if (body.pterodactylApi) { - await setConfig("pterodactyl_api", body.pterodactylApi) - } - if (body.pterodactylApiKey && body.pterodactylApiKey !== MASKED_VALUE) { - await setConfig("pterodactyl_api_key", body.pterodactylApiKey) - changedFields.push("Pterodactyl API Key") - } - - if (body.pterodactylClientApiKey && body.pterodactylClientApiKey !== MASKED_VALUE) { - await setConfig("pterodactyl_client_api_key", body.pterodactylClientApiKey) - changedFields.push("Pterodactyl Client API Key") - } - - if (body.virtfusionUrl) { - await setConfig("virtfusion_url", body.virtfusionUrl) - changedFields.push("Virtfusion URL") - } - if (body.virtfusionApi) { - await setConfig("virtfusion_api", body.virtfusionApi) - } - if (body.virtfusionApiKey && body.virtfusionApiKey !== MASKED_VALUE) { - await setConfig("virtfusion_api_key", body.virtfusionApiKey) - changedFields.push("Virtfusion API Key") - } - - // Optional settings - if (body.githubToken && body.githubToken !== MASKED_VALUE) { - await setConfig("github_token", body.githubToken) - changedFields.push("GitHub Token") - } - if (body.githubRepositories !== undefined) { - // Accept either an array or a JSON string from the frontend. Avoid double-encoding. - let reposToStore: string[] = [] - if (Array.isArray(body.githubRepositories)) { - reposToStore = body.githubRepositories - } else if (typeof body.githubRepositories === "string") { - try { - const parsed = JSON.parse(body.githubRepositories) - if (Array.isArray(parsed)) { - reposToStore = parsed - } else { - // It's a plain string (double-encoded), treat as single-entry list - reposToStore = [String(parsed)] - } - } catch { - // Not JSON — fallback to splitting newlines or treating as single entry - reposToStore = body.githubRepositories.split("\n").map((r: string) => r.trim()).filter(Boolean) - } - } - - // If requested, merge with existing stored repositories instead of overwriting - if (body.githubRepositoriesMerge) { - try { - const existingRaw = await getConfig("github_repositories") - let existing: string[] = [] - if (existingRaw) { - try { - const parsed = JSON.parse(existingRaw) - if (Array.isArray(parsed)) existing = parsed - } catch { - // ignore parse errors - } - } - - const union = Array.from(new Set([...existing, ...reposToStore])) - await setConfig("github_repositories", JSON.stringify(union)) - } catch (e) { - // fallback to overwrite - await setConfig("github_repositories", JSON.stringify(reposToStore)) - } - } else { - await setConfig("github_repositories", JSON.stringify(reposToStore)) - } - changedFields.push("GitHub Repositories") - } - if (body.resendApiKey && body.resendApiKey !== MASKED_VALUE) { - await setConfig("resend_api_key", body.resendApiKey) - changedFields.push("Resend API Key") - } - if (body.crowdinProjectId) { - await setConfig("crowdin_project_id", body.crowdinProjectId) - changedFields.push("Crowdin Project ID") - } - if (body.crowdinPersonalToken && body.crowdinPersonalToken !== MASKED_VALUE) { - await setConfig("crowdin_personal_token", body.crowdinPersonalToken) - changedFields.push("Crowdin Token") - } - - // System settings - if (body.registrationEnabled !== undefined) { - await setConfig("registration_enabled", body.registrationEnabled ? "true" : "false") - changedFields.push("Registration") - } - if (body.maintenanceMode !== undefined) { - await setConfig("maintenance_mode", body.maintenanceMode ? "true" : "false") - changedFields.push("Maintenance Mode") - } - - // Auto-sync - if (body.autoSyncEnabled !== undefined) { - await setConfig("auto_sync_enabled", body.autoSyncEnabled ? "true" : "false") - changedFields.push("Auto Sync") - } - - // Admin email - if (body.adminEmail !== undefined) { - await setConfig("admin_email", body.adminEmail || "") - changedFields.push("Admin Email") - } - - // Notification settings - if (body.emailNotifications !== undefined) { - await setConfig("email_notifications_enabled", body.emailNotifications ? "true" : "false") - changedFields.push("Email Notifications") - } - if (body.discordNotifications !== undefined) { - await setConfig("discord_notifications_enabled", body.discordNotifications ? "true" : "false") - changedFields.push("Discord Notifications") - } - - // Advanced settings - if (body.cacheTimeout !== undefined) { - // store as seconds string - await setConfig("cache_timeout", String(Number(body.cacheTimeout) || 60)) - changedFields.push("Cache Timeout") - } - if (body.syncInterval !== undefined) { - await setConfig("sync_interval", String(Number(body.syncInterval) || 3600)) - changedFields.push("Sync Interval") - } - - // Discord webhooks - // Discord webhooks are managed via the DiscordWebhook model and the dedicated webhooks API. - // Do not write discord_webhooks JSON blob into Config to avoid duplication. - - // Clear cache after updating settings - clearConfigCache() - - // Dispatch webhook notification for settings update (async, non-blocking) - if (changedFields.length > 0) { - dispatchSettingsUpdate(changedFields).catch((error) => { - console.error("Failed to dispatch settings update webhook:", error) - }) - } - - // Get updated settings to return - const updatedSettings = await getAllSettings() - - return NextResponse.json({ - success: true, - message: "Settings updated successfully", - settings: updatedSettings - }) - } catch (error) { - console.error("Failed to save settings:", error) - - return NextResponse.json( - { success: false, error: "Failed to save settings" }, - { status: 500 } - ) - } -} - -export async function PUT(request: Request) { - // Require admin authentication - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - // Get current user's roles - const session = await auth() - const userRoles = session?.user?.roles || [] - - // Only SUPER_ADMIN can reset/delete sensitive settings - if (!isSuperAdmin(userRoles)) { - return NextResponse.json( - { success: false, error: "Only super admins can reset sensitive settings" }, - { status: 403 } - ) - } - - try { - const body = await request.json() - const { keys } = body - - if (!Array.isArray(keys)) { - return NextResponse.json( - { success: false, error: "keys must be an array" }, - { status: 400 } - ) - } - - // Delete specified config keys - const configKeyMap: Record = { - pterodactylApiKey: "pterodactyl_api_key", - virtfusionApiKey: "virtfusion_api_key", - crowdinPersonalToken: "crowdin_personal_token", - githubToken: "github_token", - resendApiKey: "resend_api_key", - } - - for (const key of keys) { - const configKey = configKeyMap[key] - if (configKey) { - // Delete by setting to empty string (or you can delete from DB directly) - await setConfig(configKey, "") - } - } - - clearConfigCache() - - return NextResponse.json({ - success: true, - message: "Settings keys reset successfully" - }) - } catch (error) { - console.error("Failed to reset settings:", error) - - return NextResponse.json( - { success: false, error: "Failed to reset settings" }, - { status: 500 } - ) - } -} diff --git a/app/api/admin/settings/test/route.ts b/app/api/admin/settings/test/route.ts deleted file mode 100644 index 1515fcb..0000000 --- a/app/api/admin/settings/test/route.ts +++ /dev/null @@ -1,97 +0,0 @@ -import { NextResponse } from "next/server" -import { requireAdmin } from "@/packages/auth" -import { prisma } from "@/packages/core/lib/prisma" -import { getConfig } from "@/packages/core/lib/config" -import { testPanelConnection } from "@/packages/core/lib/db-test" - -export async function POST(request: Request) { - // Require admin authentication - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - try { - const { searchParams } = new URL(request.url) - const type = searchParams.get("type") - const body = await request.json() - - if (type === "database") { - const start = Date.now() - try { - await prisma.$queryRaw`SELECT 1` - const latency = Date.now() - start - return NextResponse.json({ - success: true, - latency, - }) - } catch (error) { - return NextResponse.json({ - success: false, - error: "Database connection failed", - }) - } - } - - if (type === "pterodactyl") { - // Get settings from config store - const pterodactylUrl = body.pterodactylUrl || (await getConfig("pterodactyl_url")) - const pterodactylApiKey = body.pterodactylApiKey || (await getConfig("pterodactyl_api_key")) - - if (!pterodactylUrl || !pterodactylApiKey) { - return NextResponse.json({ - success: false, - error: "Pterodactyl credentials not configured", - }) - } - - try { - const testResult = await testPanelConnection(pterodactylUrl, pterodactylApiKey, "pterodactyl") - return NextResponse.json(testResult) - } catch (error) { - return NextResponse.json({ - success: false, - error: "Failed to connect to Pterodactyl panel", - }) - } - } - - if (type === "virtfusion") { - // Get settings from config store - const virtfusionUrl = body.virtfusionUrl || (await getConfig("virtfusion_url")) - const virtfusionApiKey = body.virtfusionApiKey || (await getConfig("virtfusion_api_key")) - - if (!virtfusionUrl || !virtfusionApiKey) { - return NextResponse.json({ - success: false, - error: "Virtfusion credentials not configured", - }) - } - - try { - const testResult = await testPanelConnection(virtfusionUrl, virtfusionApiKey, "virtfusion") - return NextResponse.json(testResult) - } catch (error) { - return NextResponse.json({ - success: false, - error: "Failed to connect to Virtfusion panel", - }) - } - } - - return NextResponse.json({ - success: false, - error: "Invalid test type", - }) - } catch (error) { - console.error("Connection test failed:", error) - - return NextResponse.json( - { success: false, error: "Connection test failed" }, - { status: 500 } - ) - } -} diff --git a/app/api/admin/settings/webhooks/route.ts b/app/api/admin/settings/webhooks/route.ts deleted file mode 100644 index ee662ea..0000000 --- a/app/api/admin/settings/webhooks/route.ts +++ /dev/null @@ -1,260 +0,0 @@ -import { NextResponse } from "next/server" -import { requireAdmin } from "@/packages/auth" -import { prisma } from "@/packages/core/lib/prisma" - -export async function POST(request: Request) { - // Require admin authentication - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - try { - const body = await request.json() - const { name, webhookUrl, type, description, scope } = body - - if (!name || !webhookUrl || !type) { - return NextResponse.json( - { success: false, error: "name, webhookUrl, and type are required" }, - { status: 400 } - ) - } - - const validWebhookUrls = ["discord.com/api/webhooks", "gateway.nodebyte.host/proxy/discord"] - - // Validate Discord webhook URL format - if (!validWebhookUrls.includes(webhookUrl)) { - return NextResponse.json( - { success: false, error: "Invalid Discord webhook URL" }, - { status: 400 } - ) - } - - // Validate scope if provided - const allowedScopes = ["ADMIN", "USER", "PUBLIC"] - const webhookScope = scope && allowedScopes.includes(scope) ? scope : "ADMIN" - - // Create webhook - const webhook = await prisma.discordWebhook.create({ - data: { - name, - webhookUrl, - type, - description, - scope: webhookScope, - } - }) - - return NextResponse.json({ - success: true, - message: "Webhook created successfully", - webhook - }) - } catch (error: any) { - console.error("Failed to create webhook:", error) - - // Check for unique constraint violation - if (error.code === "P2002") { - return NextResponse.json( - { success: false, error: "This webhook URL already exists" }, - { status: 400 } - ) - } - - return NextResponse.json( - { success: false, error: "Failed to create webhook" }, - { status: 500 } - ) - } -} - -export async function PUT(request: Request) { - // Require admin authentication - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - try { - const body = await request.json() - const { id, name, type, description, enabled, scope, webhookUrl } = body - - if (!id) { - return NextResponse.json( - { success: false, error: "id is required" }, - { status: 400 } - ) - } - - const updateData: any = {} - if (name !== undefined) updateData.name = name - if (webhookUrl !== undefined) updateData.webhookUrl = webhookUrl - if (type !== undefined) updateData.type = type - if (description !== undefined) updateData.description = description - if (enabled !== undefined) updateData.enabled = enabled - if (scope !== undefined) updateData.scope = scope - - const webhook = await prisma.discordWebhook.update({ - where: { id }, - data: updateData - }) - - return NextResponse.json({ - success: true, - message: "Webhook updated successfully", - webhook - }) - } catch (error) { - console.error("Failed to update webhook:", error) - - return NextResponse.json( - { success: false, error: "Failed to update webhook" }, - { status: 500 } - ) - } -} - -export async function DELETE(request: Request) { - // Require admin authentication - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - try { - const body = await request.json() - const { id } = body - - if (!id) { - return NextResponse.json( - { success: false, error: "id is required" }, - { status: 400 } - ) - } - - await prisma.discordWebhook.delete({ - where: { id } - }) - - return NextResponse.json({ - success: true, - message: "Webhook deleted successfully" - }) - } catch (error) { - console.error("Failed to delete webhook:", error) - - return NextResponse.json( - { success: false, error: "Failed to delete webhook" }, - { status: 500 } - ) - } -} - -// Test webhook endpoint -export async function PATCH(request: Request) { - // Require admin authentication - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - try { - const body = await request.json() - const { id } = body - - if (!id) { - return NextResponse.json( - { success: false, error: "id is required" }, - { status: 400 } - ) - } - - // Get webhook - const webhook = await prisma.discordWebhook.findUnique({ - where: { id } - }) - - if (!webhook) { - return NextResponse.json( - { success: false, error: "Webhook not found" }, - { status: 404 } - ) - } - - // Test the webhook by sending a test message - try { - const response = await fetch(webhook.webhookUrl, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify({ - embeds: [ - { - title: "Test Webhook", - description: `Testing ${webhook.type} webhook (${webhook.name})`, - color: 5814783, // Green - timestamp: new Date().toISOString(), - fields: [ - { - name: "Type", - value: webhook.type, - inline: true, - }, - { - name: "Status", - value: "✅ Webhook is working", - inline: true, - }, - ], - }, - ], - }), - }) - - if (!response.ok) { - return NextResponse.json( - { success: false, error: `Discord API error: ${response.status}` }, - { status: 400 } - ) - } - - // Update test success timestamp - await prisma.discordWebhook.update({ - where: { id }, - data: { - testSuccessAt: new Date(), - }, - }) - - return NextResponse.json({ - success: true, - message: "Webhook test successful" - }) - } catch (fetchError) { - return NextResponse.json( - { success: false, error: "Failed to reach Discord webhook endpoint" }, - { status: 400 } - ) - } - } catch (error) { - console.error("Failed to test webhook:", error) - - return NextResponse.json( - { success: false, error: "Failed to test webhook" }, - { status: 500 } - ) - } -} diff --git a/app/api/admin/stats/route.ts b/app/api/admin/stats/route.ts deleted file mode 100644 index 6335bed..0000000 --- a/app/api/admin/stats/route.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { NextResponse } from "next/server" -import { requireAdmin } from "@/packages/auth" -import { prisma } from "@/packages/core/lib/prisma" - -export async function GET(request: Request) { - try { - const auth = await requireAdmin() - if (!auth.authorized) { - return NextResponse.json({ success: false, error: auth.error }, { status: auth.status }) - } - - // Fetch all statistics - const [ - totalServers, - totalUsers, - totalAllocations, - totalNodes, - totalNests, - totalEggs, - runningServers, - migratedUsers, - activeUsers, - ] = await Promise.all([ - prisma.server.count(), - prisma.user.count(), - prisma.allocation.count(), - prisma.node.count(), - prisma.nest.count(), - prisma.egg.count(), - prisma.server.count(), - prisma.user.count({ - where: { - isMigrated: true, - }, - }), - prisma.user.count({ - where: { - isActive: true, - }, - }), - ]) - - return NextResponse.json({ - success: true, - stats: { - totalServers, - totalUsers, - totalAllocations, - totalNodes, - totalNests, - totalEggs, - runningServers, - migratedUsers, - activeUsers, - }, - }) - } catch (error) { - console.error("[Admin Stats] Error:", error) - return NextResponse.json({ success: false, error: "Internal server error" }, { status: 500 }) - } -} diff --git a/app/api/admin/sync/cancel/route.ts b/app/api/admin/sync/cancel/route.ts deleted file mode 100644 index 5981dc2..0000000 --- a/app/api/admin/sync/cancel/route.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { NextResponse } from "next/server" -import { requireAdmin } from "@/packages/auth" -import { prisma } from "@/packages/core/lib/prisma" - -export async function POST() { - try { - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json({ success: false, error: authResult.error }, { status: authResult.status }) - } - - // Find the most recent running sync log - const running = await prisma.syncLog.findFirst({ where: { status: "RUNNING" }, orderBy: { startedAt: "desc" } }) - if (!running) { - return NextResponse.json({ success: false, error: "No running sync found" }, { status: 404 }) - } - - const meta = (running.metadata as any) || {} - meta.cancelRequested = true - - await prisma.syncLog.update({ where: { id: running.id }, data: { metadata: meta } }) - - return NextResponse.json({ success: true, message: "Cancellation requested" }) - } catch (error) { - console.error("[Admin Sync Cancel] Error:", error) - return NextResponse.json({ success: false, error: "Internal server error" }, { status: 500 }) - } -} diff --git a/app/api/admin/sync/logs/route.ts b/app/api/admin/sync/logs/route.ts deleted file mode 100644 index f6dac00..0000000 --- a/app/api/admin/sync/logs/route.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { NextResponse } from "next/server" -import { requireAdmin } from "@/packages/auth" -import { prisma } from "@/packages/core/lib/prisma" - -export async function GET(request: Request) { - try { - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json({ success: false, error: authResult.error }, { status: authResult.status }) - } - - const url = new URL(request.url) - const limit = Math.min(100, Number(url.searchParams.get("limit") || "20")) - const cursor = url.searchParams.get("cursor") || null - - let logs - if (cursor) { - // Cursor-based pagination: return items older than the cursor - logs = await prisma.syncLog.findMany({ - orderBy: { startedAt: "desc" }, - cursor: { id: cursor }, - skip: 1, - take: limit, - }) - } else { - logs = await prisma.syncLog.findMany({ - orderBy: { startedAt: "desc" }, - take: limit, - }) - } - - const nextCursor = logs.length === limit ? logs[logs.length - 1].id : null - - return NextResponse.json({ success: true, logs, nextCursor }) - } catch (error) { - console.error("[Admin Sync Logs] Error:", error) - return NextResponse.json({ success: false, error: "Internal server error" }, { status: 500 }) - } -} diff --git a/app/api/admin/sync/route.ts b/app/api/admin/sync/route.ts deleted file mode 100644 index 05051cf..0000000 --- a/app/api/admin/sync/route.ts +++ /dev/null @@ -1,260 +0,0 @@ -import { NextResponse } from "next/server" -import { auth, requireAdmin } from "@/packages/auth" -import { - syncLocations, - syncNodes, - syncAllocations, - syncNestsAndEggs, - syncServers, - syncServerDatabases, - runFullSync, - getSyncStatus, -} from "@/packages/core/lib/sync" -import { prisma } from "@/packages/core/lib/prisma" -import { getPterodactylSettings } from "@/packages/core/lib/config" - -// Types for sync targets -type SyncTarget = "locations" | "nodes" | "allocations" | "nests" | "servers" | "databases" | "users" | "all" - -/** - * Sync ALL users from panel - creates new users if they don't exist - * New users will have isMigrated=false and no password (must register) - */ -async function syncAllPanelUsers(): Promise<{ success: boolean; created: number; updated: number; error?: string }> { - try { - const settings = await getPterodactylSettings() - - if (!settings.url || !settings.apiKey) { - return { success: false, created: 0, updated: 0, error: "Missing panel configuration" } - } - - let created = 0 - let updated = 0 - let page = 1 - let hasMore = true - - while (hasMore) { - const response = await fetch( - `${settings.url}/api/application/users?page=${page}`, - { - headers: { - Authorization: `Bearer ${settings.apiKey}`, - Accept: "application/json", - "Content-Type": "application/json", - }, - } - ) - - if (!response.ok) { - return { success: false, created, updated, error: `Panel API error: ${response.status}` } - } - - const data = await response.json() - const users = data.data || [] - const meta = data.meta?.pagination - - for (const panelUser of users) { - const attrs = panelUser.attributes - - try { - // Check if user already exists (by pterodactylId or email) - const existingUser = await prisma.user.findFirst({ - where: { - OR: [ - { pterodactylId: attrs.id }, - { email: attrs.email }, - ], - }, - }) - - if (existingUser) { - // Update existing user (but NEVER touch password or isMigrated status) - await prisma.user.update({ - where: { id: existingUser.id }, - data: { - pterodactylId: attrs.id, - username: attrs.username, - firstName: attrs.first_name || null, - lastName: attrs.last_name || null, - isPterodactylAdmin: attrs.root_admin, - lastSyncedAt: new Date(), - }, - }) - updated++ - } else { - // Create new user from panel (no password, not migrated) - await prisma.user.create({ - data: { - email: attrs.email, - password: null, // No password - must register to set one - username: attrs.username, - firstName: attrs.first_name || null, - lastName: attrs.last_name || null, - isPterodactylAdmin: attrs.root_admin, - pterodactylId: attrs.id, - isMigrated: false, // Must register to complete migration - lastSyncedAt: new Date(), - }, - }) - created++ - } - } catch (error) { - console.error(`[Sync] Failed to sync panel user ${attrs.id}:`, error) - } - } - - // Check for more pages - hasMore = meta && page < meta.total_pages - page++ - } - - return { success: true, created, updated } - } catch (error) { - const errorMsg = error instanceof Error ? error.message : "Unknown error" - return { success: false, created: 0, updated: 0, error: errorMsg } - } -} - -/** - * POST /api/admin/sync - * Manually trigger a sync operation - */ -export async function POST(request: Request) { - try { - // Require admin auth (centralized check) - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - const session = { user: authResult.user } - - const body = await request.json() - const target: SyncTarget = body.target || "all" - - console.log(`[Admin Sync] Starting sync for: ${target} (by ${session.user.email})`) - - let result: Record - - switch (target) { - case "locations": - result = { locations: await syncLocations() } - break - - case "nodes": - result = { nodes: await syncNodes() } - break - - case "allocations": - result = { allocations: await syncAllocations() } - break - - case "nests": - result = { nests: await syncNestsAndEggs() } - break - - case "servers": - result = { servers: await syncServers() } - break - - case "databases": - result = { databases: await syncServerDatabases() } - break - - case "users": - // Sync ALL users from panel (creates new + updates existing) - result = { users: await syncAllPanelUsers() } - break - - case "all": - // Run full sync (infrastructure + servers + databases) then users - const fullSyncResult = await runFullSync() - const usersResult = await syncAllPanelUsers() - result = { - ...fullSyncResult.results, - users: usersResult, - } - break - - default: - return NextResponse.json( - { success: false, error: `Invalid sync target: ${target}` }, - { status: 400 } - ) - } - - console.log(`[Admin Sync] Completed sync for: ${target}`) - - return NextResponse.json({ - success: true, - target, - result, - }) - } catch (error) { - console.error("[Admin Sync] Error:", error) - return NextResponse.json( - { success: false, error: "Internal server error" }, - { status: 500 } - ) - } -} - -/** - * GET /api/admin/sync - * Get sync status and recent logs - */ -export async function GET() { - try { - // Require admin auth (centralized check) - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - const session = { user: authResult.user } - - const status = await getSyncStatus() - - // Get comprehensive stats - const stats = await prisma.$transaction([ - prisma.user.count(), - prisma.user.count({ where: { isMigrated: true } }), - prisma.server.count(), - prisma.node.count(), - prisma.location.count(), - prisma.allocation.count(), - prisma.nest.count(), - prisma.egg.count(), - prisma.eggVariable.count(), - prisma.serverDatabase.count(), - ]) - - return NextResponse.json({ - success: true, - status, - counts: { - users: stats[0], - migratedUsers: stats[1], - servers: stats[2], - nodes: stats[3], - locations: stats[4], - allocations: stats[5], - nests: stats[6], - eggs: stats[7], - eggVariables: stats[8], - serverDatabases: stats[9], - }, - availableTargets: ["locations", "nodes", "allocations", "nests", "servers", "databases", "users", "all"], - }) - } catch (error) { - console.error("[Admin Sync] Error:", error) - return NextResponse.json( - { success: false, error: "Internal server error" }, - { status: 500 } - ) - } -} diff --git a/app/api/admin/sync/settings/route.ts b/app/api/admin/sync/settings/route.ts deleted file mode 100644 index 264e11c..0000000 --- a/app/api/admin/sync/settings/route.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { NextResponse } from "next/server" -import { requireAdmin } from "@/packages/auth" -import { getConfigs, setConfig } from "@/packages/core/lib/config" - -export async function GET() { - try { - const auth = await requireAdmin() - if (!auth.authorized) return NextResponse.json({ success: false, error: auth.error }, { status: auth.status }) - - const cfg = await getConfigs("auto_sync_enabled", "sync_interval") - return NextResponse.json({ success: true, settings: cfg }) - } catch (error) { - console.error('[Admin Sync Settings] GET error', error) - return NextResponse.json({ success: false, error: 'Internal error' }, { status: 500 }) - } -} - -export async function POST(request: Request) { - try { - const auth = await requireAdmin() - if (!auth.authorized) return NextResponse.json({ success: false, error: auth.error }, { status: auth.status }) - - const body = await request.json() - const { auto_sync_enabled, sync_interval } = body || {} - - if (typeof auto_sync_enabled !== 'undefined') { - await setConfig('auto_sync_enabled', auto_sync_enabled ? 'true' : 'false') - } - - if (typeof sync_interval !== 'undefined') { - // store as string (seconds) - await setConfig('sync_interval', String(Number(sync_interval) || 3600)) - } - - return NextResponse.json({ success: true }) - } catch (error) { - console.error('[Admin Sync Settings] POST error', error) - return NextResponse.json({ success: false, error: 'Internal error' }, { status: 500 }) - } -} diff --git a/app/api/admin/users/roles/route.ts b/app/api/admin/users/roles/route.ts deleted file mode 100644 index 64e1112..0000000 --- a/app/api/admin/users/roles/route.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { NextResponse } from "next/server" -import { requireAdmin } from "@/packages/auth" -import { prisma } from "@/packages/core/lib/prisma" - -export async function POST(request: Request) { - try { - const auth = await requireAdmin() - if (!auth.authorized) { - return NextResponse.json({ success: false, error: auth.error }, { status: auth.status }) - } - - // Only system admins can change roles - if (!auth.user?.isSystemAdmin) { - return NextResponse.json( - { success: false, error: "Only system admins can manage user roles" }, - { status: 403 } - ) - } - - const body = await request.json() - const { userId, isSystemAdmin, isAdmin, isActive, roles } = body - - if (!userId) { - return NextResponse.json( - { success: false, error: "User ID is required" }, - { status: 400 } - ) - } - - // Prevent removing yourself as system admin (safety check) - if (userId === auth.user.id && isSystemAdmin === false) { - return NextResponse.json( - { success: false, error: "You cannot remove yourself as a system admin" }, - { status: 400 } - ) - } - - // Validate roles if provided - const validRoles = ["MEMBER", "PARTNER", "SPONSOR", "TECH_TEAM", "SUPPORT_TEAM", "ADMINISTRATOR", "SUPER_ADMIN"] - if (roles && Array.isArray(roles)) { - for (const role of roles) { - if (!validRoles.includes(role)) { - return NextResponse.json( - { success: false, error: `Invalid role: ${role}` }, - { status: 400 } - ) - } - } - } - - // Update user - const updatedUser = await prisma.user.update({ - where: { id: userId }, - data: { - ...(typeof isSystemAdmin !== "undefined" && { isSystemAdmin }), - ...(typeof isAdmin !== "undefined" && { isAdmin }), - ...(typeof isActive !== "undefined" && { isActive }), - ...(Array.isArray(roles) && { roles }), - }, - select: { - id: true, - email: true, - username: true, - roles: true, - isSystemAdmin: true, - isAdmin: true, - isActive: true, - }, - }) - - return NextResponse.json({ success: true, user: updatedUser }) - } catch (error) { - console.error("[Admin Users Roles] Error:", error) - return NextResponse.json({ success: false, error: "Internal server error" }, { status: 500 }) - } -} diff --git a/app/api/admin/users/route.ts b/app/api/admin/users/route.ts deleted file mode 100644 index d171621..0000000 --- a/app/api/admin/users/route.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { NextResponse } from "next/server" -import { requireAdmin } from "@/packages/auth" -import { prisma } from "@/packages/core/lib/prisma" - -export async function GET(request: Request) { - // Require admin authentication - const authResult = await requireAdmin() - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - try { - const { searchParams } = new URL(request.url) - const page = parseInt(searchParams.get("page") || "1", 10) - const perPage = Math.min(parseInt(searchParams.get("perPage") || "25", 10), 100) - const search = searchParams.get("search") || "" - const sortField = searchParams.get("sortField") || "createdAt" - const sortOrder = searchParams.get("sortOrder") || "desc" - const filter = searchParams.get("filter") || "all" - - // Build where clause - const where: any = {} - - // Search filter - if (search) { - where.OR = [ - { email: { contains: search, mode: "insensitive" } }, - { username: { contains: search, mode: "insensitive" } }, - { firstName: { contains: search, mode: "insensitive" } }, - { lastName: { contains: search, mode: "insensitive" } }, - ] - } - - // Status filter - switch (filter) { - case "active": - where.isActive = true - break - case "inactive": - where.isActive = false - break - case "admin": - // Match any administrative indicator: system admin, panel-specific admin, or admin roles - where.OR = [ - { isSystemAdmin: true }, - { isPterodactylAdmin: true }, - { isVirtfusionAdmin: true }, - { roles: { has: "ADMINISTRATOR" } }, - { roles: { has: "SUPER_ADMIN" } }, - ] - break - case "migrated": - where.isMigrated = true - break - case "not-migrated": - where.isMigrated = false - break - } - - // Build orderBy - const validSortFields = ["username", "email", "createdAt", "lastLoginAt"] - const orderField = validSortFields.includes(sortField) ? sortField : "createdAt" - const orderBy = { [orderField]: sortOrder === "asc" ? "asc" : "desc" } - - // Get total count - const total = await prisma.user.count({ where }) - - // Get users with pagination - const users = await prisma.user.findMany({ - where, - orderBy, - skip: (page - 1) * perPage, - take: perPage, - select: { - id: true, - email: true, - username: true, - firstName: true, - lastName: true, - isSystemAdmin: true, - isPterodactylAdmin: true, - isVirtfusionAdmin: true, - roles: true, - isMigrated: true, - isActive: true, - pterodactylId: true, - createdAt: true, - lastLoginAt: true, - lastSyncedAt: true, - _count: { - select: { - servers: true, - sessions: true, - }, - }, - }, - }) - - return NextResponse.json({ - success: true, - data: users, - meta: { - total, - page, - perPage, - totalPages: Math.ceil(total / perPage), - }, - }) - } catch (error) { - console.error("Failed to fetch users:", error) - - return NextResponse.json( - { - success: false, - error: "Failed to fetch users", - data: [], - meta: null, - }, - { status: 500 } - ) - } -} diff --git a/app/api/auth/[...nextauth]/route.ts b/app/api/auth/[...nextauth]/route.ts deleted file mode 100644 index fd2b09c..0000000 --- a/app/api/auth/[...nextauth]/route.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { handlers } from "@/packages/auth" - -export const { GET, POST } = handlers diff --git a/app/api/auth/forgot-password/route.ts b/app/api/auth/forgot-password/route.ts deleted file mode 100644 index 6704b1c..0000000 --- a/app/api/auth/forgot-password/route.ts +++ /dev/null @@ -1,100 +0,0 @@ -/** - * Forgot Password Endpoint - * - * Generates a password reset token and sends a password reset email. - * Token expires in 24 hours. - */ - -import { NextResponse } from "next/server" -import { prisma } from "@/packages/core/lib/prisma" -import { sendPasswordResetEmail } from "@/packages/core/dispatchers/email" -import crypto from "crypto" - -interface ForgotPasswordRequest { - email: string -} - -/** - * POST /api/auth/forgot-password - * Generate password reset token and send email - */ -export async function POST(request: Request) { - try { - const body: ForgotPasswordRequest = await request.json() - const { email } = body - - if (!email || typeof email !== "string") { - return NextResponse.json( - { success: false, error: "email_required" }, - { status: 400 } - ) - } - - // Find user by email - const user = await prisma.user.findUnique({ - where: { email: email.toLowerCase() }, - }) - - // Don't reveal if email exists or not (security) - if (!user) { - return NextResponse.json( - { success: true, message: "If the email exists, a reset link has been sent" }, - { status: 200 } - ) - } - - // Generate reset token - const resetToken = crypto.randomBytes(32).toString("hex") - const resetTokenHash = crypto - .createHash("sha256") - .update(resetToken) - .digest("hex") - - // Store token in database with 24-hour expiration - const expiresAt = new Date(Date.now() + 24 * 60 * 60 * 1000) // 24 hours - - await prisma.passwordResetToken.upsert({ - where: { userId: user.id }, - update: { - token: resetTokenHash, - expiresAt, - }, - create: { - token: resetTokenHash, - expiresAt, - userId: user.id, - }, - }) - - // Build reset URL - const baseUrl = process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000" - const resetUrl = `${baseUrl}/auth/reset-password?token=${resetToken}` - - // Send password reset email - const emailResult = await sendPasswordResetEmail({ - email: user.email, - resetToken, - resetUrl, - }) - - if (!emailResult.success) { - console.error("[Auth] Failed to send password reset email:", emailResult.error) - // Don't expose email service errors to client - return NextResponse.json( - { success: true, message: "If the email exists, a reset link has been sent" }, - { status: 200 } - ) - } - - return NextResponse.json( - { success: true, message: "Password reset email sent" }, - { status: 200 } - ) - } catch (error) { - console.error("[Auth] Forgot password error:", error) - return NextResponse.json( - { success: false, error: "server_error" }, - { status: 500 } - ) - } -} diff --git a/app/api/auth/magic-link/route.ts b/app/api/auth/magic-link/route.ts deleted file mode 100644 index 464cea6..0000000 --- a/app/api/auth/magic-link/route.ts +++ /dev/null @@ -1,110 +0,0 @@ -/** - * Magic Link Authentication - Request Endpoint - * - * Generates a magic login token and sends a magic link email. - * Token expires in 30 minutes. - */ - -import { NextResponse } from "next/server" -import { prisma } from "@/packages/core/lib/prisma" -import { sendMagicLinkEmail } from "@/packages/core/dispatchers/email" -import crypto from "crypto" - -interface MagicLinkRequest { - email: string -} - -/** - * POST /api/auth/magic-link - * Generate magic link token and send email - */ -export async function POST(request: Request) { - try { - const body: MagicLinkRequest = await request.json() - const { email } = body - - if (!email || typeof email !== "string") { - return NextResponse.json( - { success: false, error: "email_required" }, - { status: 400 } - ) - } - - // Find or create user for email-only signup - let user = await prisma.user.findUnique({ - where: { email: email.toLowerCase() }, - }) - - if (!user) { - // Create user on first magic link request - // They'll set password after first login - user = await prisma.user.create({ - data: { - email: email.toLowerCase(), - isMigrated: false, // Haven't set password yet - isActive: true, - roles: ["MEMBER"], // Default role - }, - }) - } - - // Generate magic token (32 random bytes = 64 hex chars) - const magicToken = crypto.randomBytes(32).toString("hex") - const magicTokenHash = crypto - .createHash("sha256") - .update(magicToken) - .digest("hex") - - // Store token with 30-minute expiration - const expiresAt = new Date(Date.now() + 30 * 60 * 1000) // 30 minutes - - // Use VerificationToken model for magic links - await prisma.verificationToken.deleteMany({ - where: { - identifier: user.id, - type: "magic_link", - }, - }) - - await prisma.verificationToken.create({ - data: { - identifier: user.id, - token: magicTokenHash, - expires: expiresAt, - type: "magic_link", - }, - }) - - // Build magic link URL - const baseUrl = process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000" - const magicLink = `${baseUrl}/api/auth/magic-link/verify?token=${magicToken}` - - // Send magic link email - const emailResult = await sendMagicLinkEmail({ - email: user.email, - magicToken, - magicUrl: magicLink, - expiresIn: "30 minutes", - }) - - if (!emailResult.success) { - console.error("[Auth] Failed to send magic link email:", emailResult.error) - // Don't expose email service errors to client - return NextResponse.json( - { success: true, message: "If the email exists, a magic link has been sent" }, - { status: 200 } - ) - } - - return NextResponse.json( - { success: true, message: "Magic link email sent" }, - { status: 200 } - ) - } catch (error) { - console.error("[Auth] Magic link error:", error) - return NextResponse.json( - { success: false, error: "server_error" }, - { status: 500 } - ) - } -} diff --git a/app/api/auth/magic-link/verify/route.ts b/app/api/auth/magic-link/verify/route.ts deleted file mode 100644 index a8fae97..0000000 --- a/app/api/auth/magic-link/verify/route.ts +++ /dev/null @@ -1,140 +0,0 @@ -/** - * Magic Link Authentication - Verify Endpoint - * - * Validates magic link token and creates a session for the user. - */ - -import { NextResponse, NextRequest } from "next/server" -import { prisma } from "@/packages/core/lib/prisma" -import { signIn } from "@/packages/auth" -import crypto from "crypto" - -/** - * GET /api/auth/magic-link/verify?token=xxx - * Validate token and redirect to authenticated state - */ -export async function GET(request: NextRequest) { - try { - const searchParams = request.nextUrl.searchParams - const token = searchParams.get("token") - - if (!token) { - // Redirect to login with error - return NextResponse.redirect( - `${process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000"}/auth/login?error=token_required` - ) - } - - // Hash the token to look it up - const tokenHash = crypto - .createHash("sha256") - .update(token) - .digest("hex") - - // Find magic link token - const verificationToken = await prisma.verificationToken.findFirst({ - where: { - token: tokenHash, - type: "magic_link", - }, - }) - - if (!verificationToken) { - return NextResponse.redirect( - `${process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000"}/auth/login?error=invalid_token` - ) - } - - // Check if token has expired - if (verificationToken.expires < new Date()) { - // Delete expired token - await prisma.verificationToken.delete({ - where: { - identifier_token: { - identifier: verificationToken.identifier, - token: verificationToken.token, - }, - }, - }) - - return NextResponse.redirect( - `${process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000"}/auth/login?error=token_expired` - ) - } - - // Get the user with all required fields - const user = await prisma.user.findUnique({ - where: { id: verificationToken.identifier }, - }) - - if (!user) { - return NextResponse.redirect( - `${process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000"}/auth/login?error=user_not_found` - ) - } - - // Delete the magic link token (one-time use) - await prisma.verificationToken.delete({ - where: { - identifier_token: { - identifier: verificationToken.identifier, - token: verificationToken.token, - }, - }, - }) - - // Update email verified status and last login - await prisma.user.update({ - where: { id: user.id }, - data: { - emailVerified: user.emailVerified || new Date(), - lastLoginAt: new Date(), - isMigrated: true, // Mark as migrated since they've logged in - }, - }) - - console.log(`[Auth] Magic link login successful for user: ${user.email}`) - - // Create a session by storing in the database (NextAuth will recognize this) - const sessionToken = crypto.randomBytes(32).toString("hex") - const expires = new Date(Date.now() + 30 * 24 * 60 * 60 * 1000) // 30 days - - // Store the session in the database - await prisma.session.create({ - data: { - sessionToken, - userId: user.id, - expires, - }, - }) - - console.log(`[Auth] Session created for user: ${user.id}`) - - // Create response with redirect to dashboard - const baseUrl = process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000" - const response = NextResponse.redirect( - `${baseUrl}/dashboard?login=magic-link`, - { status: 302 } - ) - - // Set the session cookie - const cookieName = process.env.NODE_ENV === "production" - ? "__Secure-next-auth.session-token" - : "next-auth.session-token" - - response.cookies.set(cookieName, sessionToken, { - httpOnly: true, - secure: process.env.NODE_ENV === "production", - sameSite: "lax", - path: "/", - maxAge: 30 * 24 * 60 * 60, // 30 days - }) - - return response - } catch (error) { - console.error("[Auth] Magic link verification error:", error) - return NextResponse.redirect( - `${process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000"}/auth/login?error=server_error` - ) - } -} diff --git a/app/api/auth/register/route.ts b/app/api/auth/register/route.ts deleted file mode 100644 index 630c760..0000000 --- a/app/api/auth/register/route.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { NextResponse } from "next/server" -import { registerUser, verifyPterodactylUser } from "@/packages/auth/lib/auth-service" - -export async function POST(request: Request) { - try { - const body = await request.json() - const { email, password, confirmPassword } = body - - // Validate input - if (!email || !password) { - return NextResponse.json( - { success: false, error: "missing_fields" }, - { status: 400 } - ) - } - - // Validate email format - const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/ - if (!emailRegex.test(email)) { - return NextResponse.json( - { success: false, error: "invalid_email" }, - { status: 400 } - ) - } - - // Validate password strength - if (password.length < 8) { - return NextResponse.json( - { success: false, error: "password_too_short" }, - { status: 400 } - ) - } - - // Validate password confirmation - if (password !== confirmPassword) { - return NextResponse.json( - { success: false, error: "passwords_dont_match" }, - { status: 400 } - ) - } - - console.log(`[Register] Attempting registration for: ${email}`) - - // Register the user - const result = await registerUser(email, password) - - if (!result.success) { - console.log(`[Register] Registration failed: ${result.error}`) - - // Map errors to appropriate status codes - const statusMap: Record = { - email_exists: 409, - panel_account_linked: 409, - server_error: 500, - } - - return NextResponse.json( - { success: false, error: result.error }, - { status: statusMap[result.error || "server_error"] || 500 } - ) - } - - console.log(`[Register] User registered successfully: ${email}`) - - return NextResponse.json({ - success: true, - message: "Account created successfully", - }) - } catch (error) { - console.error("[Register] Error:", error) - return NextResponse.json( - { success: false, error: "server_error" }, - { status: 500 } - ) - } -} - -// Check if email exists in panel (informational - for UI hints) -export async function GET(request: Request) { - try { - const { searchParams } = new URL(request.url) - const email = searchParams.get("email") - - if (!email) { - return NextResponse.json( - { success: false, error: "missing_email" }, - { status: 400 } - ) - } - - // Check if email exists in Pterodactyl panel (optional info for UI) - const pteroUser = await verifyPterodactylUser(email) - - return NextResponse.json({ - success: true, - // Whether this email exists in the panel (for UI hints) - existsInPanel: !!pteroUser, - username: pteroUser?.username || null, - }) - } catch (error) { - console.error("[Register] Check error:", error) - return NextResponse.json( - { success: false, error: "server_error" }, - { status: 500 } - ) - } -} diff --git a/app/api/auth/reset-password/route.ts b/app/api/auth/reset-password/route.ts deleted file mode 100644 index 1e61f0c..0000000 --- a/app/api/auth/reset-password/route.ts +++ /dev/null @@ -1,101 +0,0 @@ -/** - * Reset Password Endpoint - * - * Validates password reset token and updates user password. - */ - -import { NextResponse } from "next/server" -import { prisma } from "@/packages/core/lib/prisma" -import bcrypt from "bcryptjs" -import crypto from "crypto" - -const SALT_ROUNDS = 12 - -interface ResetPasswordRequest { - token: string - password: string -} - -/** - * POST /api/auth/reset-password - * Validate token and update password - */ -export async function POST(request: Request) { - try { - const body: ResetPasswordRequest = await request.json() - const { token, password } = body - - if (!token || typeof token !== "string") { - return NextResponse.json( - { success: false, error: "token_required" }, - { status: 400 } - ) - } - - if (!password || password.length < 8) { - return NextResponse.json( - { success: false, error: "password_too_short" }, - { status: 400 } - ) - } - - // Hash the token to look it up - const tokenHash = crypto - .createHash("sha256") - .update(token) - .digest("hex") - - // Find reset token - const resetToken = await prisma.passwordResetToken.findUnique({ - where: { token: tokenHash }, - include: { user: true }, - }) - - if (!resetToken) { - return NextResponse.json( - { success: false, error: "invalid_token" }, - { status: 400 } - ) - } - - // Check if token has expired - if (resetToken.expiresAt < new Date()) { - // Delete expired token - await prisma.passwordResetToken.delete({ - where: { id: resetToken.id }, - }) - - return NextResponse.json( - { success: false, error: "token_expired" }, - { status: 400 } - ) - } - - // Hash new password - const hashedPassword = await bcrypt.hash(password, SALT_ROUNDS) - - // Update user password and delete token - const [updatedUser] = await Promise.all([ - prisma.user.update({ - where: { id: resetToken.user.id }, - data: { password: hashedPassword }, - }), - prisma.passwordResetToken.delete({ - where: { id: resetToken.id }, - }), - ]) - - console.log(`[Auth] Password reset successful for user: ${updatedUser.email}`) - - return NextResponse.json( - { success: true, message: "Password reset successful" }, - { status: 200 } - ) - } catch (error) { - console.error("[Auth] Reset password error:", error) - return NextResponse.json( - { success: false, error: "server_error" }, - { status: 500 } - ) - } -} diff --git a/app/api/auth/verify-email/route.ts b/app/api/auth/verify-email/route.ts deleted file mode 100644 index 61385db..0000000 --- a/app/api/auth/verify-email/route.ts +++ /dev/null @@ -1,157 +0,0 @@ -import { NextResponse } from "next/server" -import { prisma } from "@/packages/core/lib/prisma" - -interface VerifyEmailRequest { - token: string - userId: string -} - -/** - * POST /api/auth/verify-email - * Verify email with token (used from client-side form) - */ -export async function POST(request: Request) { - try { - const body: VerifyEmailRequest = await request.json() - const { token, userId } = body - - if (!token || typeof token !== "string") { - return NextResponse.json( - { success: false, error: "token_required" }, - { status: 400 } - ) - } - - if (!userId || typeof userId !== "string") { - return NextResponse.json( - { success: false, error: "user_id_required" }, - { status: 400 } - ) - } - - // Find verification token - const verificationToken = await prisma.verificationToken.findFirst({ - where: { - identifier: userId, - token, - type: "email", - }, - }) - - if (!verificationToken) { - return NextResponse.json( - { success: false, error: "invalid_token" }, - { status: 400 } - ) - } - - // Check if token has expired - if (verificationToken.expires < new Date()) { - // Delete expired token - await prisma.verificationToken.delete({ - where: { token }, - }) - - return NextResponse.json( - { success: false, error: "token_expired" }, - { status: 400 } - ) - } - - // Mark email as verified and delete token - await Promise.all([ - prisma.user.update({ - where: { id: userId }, - data: { emailVerified: new Date() }, - }), - prisma.verificationToken.delete({ - where: { token }, - }), - ]) - - console.log(`[Auth] Email verified for user: ${userId}`) - - return NextResponse.json( - { success: true, message: "Email verified successfully" }, - { status: 200 } - ) - } catch (error) { - console.error("[Auth] Email verification error:", error) - return NextResponse.json( - { success: false, error: "server_error" }, - { status: 500 } - ) - } -} - -/** - * GET /api/auth/verify-email?token=xxx&id=yyy - * Verify email from email link (redirected from email) - */ -export async function GET(request: Request) { - try { - const { searchParams } = new URL(request.url) - const token = searchParams.get("token") - const userId = searchParams.get("id") - - if (!token || !userId) { - return NextResponse.json( - { success: false, error: "missing_parameters" }, - { status: 400 } - ) - } - - // Find the verification token - const verificationToken = await prisma.verificationToken.findFirst({ - where: { - identifier: userId, - token, - type: "email", - }, - }) - - if (!verificationToken) { - return NextResponse.json( - { success: false, error: "invalid_or_expired_token" }, - { status: 400 } - ) - } - - // Check if token has expired - if (verificationToken.expires < new Date()) { - // Delete expired token - await prisma.verificationToken.delete({ - where: { token }, - }) - return NextResponse.json( - { success: false, error: "token_expired" }, - { status: 400 } - ) - } - - // Mark user email as verified - await prisma.user.update({ - where: { id: userId }, - data: { emailVerified: new Date() }, - }) - - // Delete the verification token - await prisma.verificationToken.delete({ - where: { token }, - }) - - console.log(`[Auth] Email verified for user: ${userId}`) - - return NextResponse.json({ - success: true, - message: "Email verified successfully", - }) - } catch (error) { - console.error("[Auth] Email verification error:", error) - return NextResponse.json( - { success: false, error: "server_error" }, - { status: 500 } - ) - } -} - diff --git a/app/api/dashboard/account/password/route.ts b/app/api/dashboard/account/password/route.ts deleted file mode 100644 index 7a71d1d..0000000 --- a/app/api/dashboard/account/password/route.ts +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Dashboard Account Password API - Change user password - * - * POST /api/dashboard/account/password - Change password - */ - -import { NextResponse } from "next/server" -import { requireAuth } from "@/packages/auth" -import { prisma } from "@/packages/core/lib/prisma" -import bcrypt from "bcryptjs" - -export async function POST(request: Request) { - const authResult = await requireAuth() - - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - const userId = authResult.user!.id - - try { - const body = await request.json() - const { currentPassword, newPassword } = body - - // Validate input - if (!currentPassword || !newPassword) { - return NextResponse.json( - { success: false, error: "Current password and new password are required" }, - { status: 400 } - ) - } - - if (newPassword.length < 8) { - return NextResponse.json( - { success: false, error: "New password must be at least 8 characters" }, - { status: 400 } - ) - } - - // Get user with password - const user = await prisma.user.findUnique({ - where: { id: userId }, - select: { id: true, password: true }, - }) - - if (!user) { - return NextResponse.json( - { success: false, error: "User not found" }, - { status: 404 } - ) - } - - // If user has no password (magic link only), allow setting one - if (user.password) { - // Verify current password - const isValid = await bcrypt.compare(currentPassword, user.password) - if (!isValid) { - return NextResponse.json( - { success: false, error: "Current password is incorrect" }, - { status: 400 } - ) - } - } - - // Hash new password - const hashedPassword = await bcrypt.hash(newPassword, 12) - - // Update password - await prisma.user.update({ - where: { id: userId }, - data: { - password: hashedPassword, - isMigrated: true, // Mark as having set password - }, - }) - - console.log(`[Auth] Password changed for user: ${userId}`) - - return NextResponse.json({ - success: true, - message: "Password updated successfully", - }) - } catch (error) { - console.error("[Dashboard] Failed to change password:", error) - return NextResponse.json( - { success: false, error: "Failed to change password" }, - { status: 500 } - ) - } -} diff --git a/app/api/dashboard/account/route.ts b/app/api/dashboard/account/route.ts deleted file mode 100644 index 035f2c0..0000000 --- a/app/api/dashboard/account/route.ts +++ /dev/null @@ -1,144 +0,0 @@ -/** - * Dashboard Account API - Get and update user profile - * - * GET /api/dashboard/account - Get current user profile - * PATCH /api/dashboard/account - Update user profile - */ - -import { NextResponse } from "next/server" -import { requireAuth } from "@/packages/auth" -import { prisma } from "@/packages/core/lib/prisma" - -export async function GET() { - const authResult = await requireAuth() - - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - const userId = authResult.user!.id - - try { - const user = await prisma.user.findUnique({ - where: { id: userId }, - select: { - id: true, - email: true, - username: true, - firstName: true, - lastName: true, - phoneNumber: true, - companyName: true, - billingEmail: true, - emailVerified: true, - roles: true, - createdAt: true, - lastLoginAt: true, - }, - }) - - if (!user) { - return NextResponse.json( - { success: false, error: "User not found" }, - { status: 404 } - ) - } - - return NextResponse.json({ - success: true, - data: { - ...user, - emailVerified: user.emailVerified?.toISOString() || null, - createdAt: user.createdAt.toISOString(), - lastLoginAt: user.lastLoginAt?.toISOString() || null, - }, - }) - } catch (error) { - console.error("[Dashboard] Failed to fetch account:", error) - return NextResponse.json( - { success: false, error: "Failed to fetch account" }, - { status: 500 } - ) - } -} - -export async function PATCH(request: Request) { - const authResult = await requireAuth() - - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - const userId = authResult.user!.id - - try { - const body = await request.json() - const { firstName, lastName, username, phoneNumber, companyName, billingEmail } = body - - // Validate username uniqueness if provided - if (username) { - const existingUser = await prisma.user.findFirst({ - where: { - username, - NOT: { id: userId }, - }, - }) - - if (existingUser) { - return NextResponse.json( - { success: false, error: "Username is already taken" }, - { status: 400 } - ) - } - } - - // Update user profile - const updatedUser = await prisma.user.update({ - where: { id: userId }, - data: { - firstName: firstName || null, - lastName: lastName || null, - username: username || null, - phoneNumber: phoneNumber || null, - companyName: companyName || null, - billingEmail: billingEmail || null, - }, - select: { - id: true, - email: true, - username: true, - firstName: true, - lastName: true, - phoneNumber: true, - companyName: true, - billingEmail: true, - emailVerified: true, - roles: true, - createdAt: true, - lastLoginAt: true, - }, - }) - - return NextResponse.json({ - success: true, - data: { - ...updatedUser, - emailVerified: updatedUser.emailVerified?.toISOString() || null, - createdAt: updatedUser.createdAt.toISOString(), - lastLoginAt: updatedUser.lastLoginAt?.toISOString() || null, - }, - }) - } catch (error) { - console.error("[Dashboard] Failed to update account:", error) - return NextResponse.json( - { success: false, error: "Failed to update account" }, - { status: 500 } - ) - } -} diff --git a/app/api/dashboard/servers/route.ts b/app/api/dashboard/servers/route.ts deleted file mode 100644 index 0d58da5..0000000 --- a/app/api/dashboard/servers/route.ts +++ /dev/null @@ -1,139 +0,0 @@ -/** - * Dashboard Servers API - Get user's servers with filtering and pagination - * - * GET /api/dashboard/servers - * Query params: page, per_page, search, status - */ - -import { NextResponse } from "next/server" -import { requireAuth } from "@/packages/auth" -import { prisma } from "@/packages/core/lib/prisma" -import { Prisma } from "@/prisma/generated/prisma" - -export async function GET(request: Request) { - const authResult = await requireAuth() - - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - const userId = authResult.user!.id - - try { - const { searchParams } = new URL(request.url) - const page = Math.max(1, parseInt(searchParams.get("page") || "1", 10)) - const perPage = Math.min(50, Math.max(1, parseInt(searchParams.get("per_page") || "12", 10))) - const search = searchParams.get("search") || "" - const statusFilter = searchParams.get("status") || "" - - // Build where clause - const where: Prisma.ServerWhereInput = { - ownerId: userId, - } - - // Add search filter - if (search) { - where.OR = [ - { name: { contains: search, mode: "insensitive" } }, - { description: { contains: search, mode: "insensitive" } }, - ] - } - - // Add status filter - if (statusFilter && statusFilter !== "all") { - const statusMap: Record = { - running: "RUNNING", - online: "RUNNING", - offline: "OFFLINE", - starting: "STARTING", - stopping: "STOPPING", - suspended: "SUSPENDED", - installing: "INSTALLING", - } - const mappedStatus = statusMap[statusFilter.toLowerCase()] - if (mappedStatus) { - where.status = mappedStatus as Prisma.EnumServerStatusFilter["equals"] - } - } - - // Get total count - const total = await prisma.server.count({ where }) - - // Get servers with pagination - const servers = await prisma.server.findMany({ - where, - skip: (page - 1) * perPage, - take: perPage, - orderBy: { updatedAt: "desc" }, - include: { - node: { select: { id: true, name: true } }, - egg: { select: { id: true, name: true } }, - allocations: { - where: { isAssigned: true }, - take: 1, - select: { ip: true, port: true }, - }, - properties: { - where: { - key: { in: ["memory", "disk", "cpu"] }, - }, - }, - }, - }) - - // Transform servers for the frontend - const transformedServers = servers.map((server) => { - const memoryProp = server.properties.find((p) => p.key === "memory") - const diskProp = server.properties.find((p) => p.key === "disk") - const cpuProp = server.properties.find((p) => p.key === "cpu") - const allocation = server.allocations[0] - - return { - id: server.id, - uuid: server.uuid, - name: server.name, - description: server.description, - status: server.status.toLowerCase(), - game: server.egg?.name || "Unknown", - node: server.node.name, - ip: allocation?.ip || "0.0.0.0", - port: allocation?.port || 0, - resources: { - memory: { - used: 0, // Would come from real-time API in production - limit: parseInt(memoryProp?.value || "0"), - }, - cpu: { - used: 0, - limit: parseInt(cpuProp?.value || "100"), - }, - disk: { - used: 0, - limit: parseInt(diskProp?.value || "0"), - }, - }, - createdAt: server.createdAt.toISOString(), - } - }) - - return NextResponse.json({ - success: true, - data: transformedServers, - meta: { - total, - page, - perPage, - totalPages: Math.ceil(total / perPage), - }, - }) - } catch (error) { - console.error("[Dashboard] Failed to fetch servers:", error) - return NextResponse.json( - { success: false, error: "Failed to fetch servers" }, - { status: 500 } - ) - } -} diff --git a/app/api/dashboard/stats/route.ts b/app/api/dashboard/stats/route.ts deleted file mode 100644 index 910044e..0000000 --- a/app/api/dashboard/stats/route.ts +++ /dev/null @@ -1,121 +0,0 @@ -/** - * Dashboard Stats API - Get user-specific statistics - * - * GET /api/dashboard/stats - * Returns server counts, recent servers, account balance, and open tickets for the current user - */ - -import { NextResponse } from "next/server" -import { requireAuth } from "@/packages/auth" -import { prisma } from "@/packages/core/lib/prisma" - -export async function GET() { - const authResult = await requireAuth() - - if (!authResult.authorized) { - return NextResponse.json( - { success: false, error: authResult.error }, - { status: authResult.status } - ) - } - - const userId = authResult.user!.id - - try { - // Get server counts - const [totalServers, onlineServers, offlineServers, suspendedServers] = await Promise.all([ - prisma.server.count({ where: { ownerId: userId } }), - prisma.server.count({ where: { ownerId: userId, status: "RUNNING" } }), - prisma.server.count({ where: { ownerId: userId, status: "OFFLINE" } }), - prisma.server.count({ where: { ownerId: userId, isSuspended: true } }), - ]) - - // Get recent servers with their data - const recentServers = await prisma.server.findMany({ - where: { ownerId: userId }, - take: 6, - orderBy: { updatedAt: "desc" }, - include: { - node: { select: { name: true } }, - egg: { select: { name: true } }, - allocations: { - where: { isAssigned: true }, - take: 1, - select: { ip: true, port: true }, - }, - properties: { - where: { - key: { in: ["memory", "disk", "cpu"] }, - }, - }, - }, - }) - - // Get user account data - const user = await prisma.user.findUnique({ - where: { id: userId }, - select: { accountBalance: true }, - }) - - // Get open ticket count - const openTickets = await prisma.supportTicket.count({ - where: { - userId, - status: { in: ["open", "pending", "in_progress"] }, - }, - }) - - // Transform recent servers for the frontend - const transformedServers = recentServers.map((server) => { - const memoryProp = server.properties.find((p) => p.key === "memory") - const diskProp = server.properties.find((p) => p.key === "disk") - const cpuProp = server.properties.find((p) => p.key === "cpu") - const allocation = server.allocations[0] - - return { - id: server.uuid, - name: server.name, - status: server.status.toLowerCase(), - game: server.egg?.name || "Unknown", - node: server.node.name, - ip: allocation?.ip || "0.0.0.0", - port: allocation?.port || 0, - resources: { - memory: { - used: 0, // Would come from real-time API in production - limit: parseInt(memoryProp?.value || "0"), - }, - cpu: { - used: 0, - limit: parseInt(cpuProp?.value || "100"), - }, - disk: { - used: 0, - limit: parseInt(diskProp?.value || "0"), - }, - }, - } - }) - - return NextResponse.json({ - success: true, - data: { - servers: { - total: totalServers, - online: onlineServers, - offline: offlineServers, - suspended: suspendedServers, - }, - recentServers: transformedServers, - accountBalance: user?.accountBalance ? Number(user.accountBalance) : 0, - openTickets, - }, - }) - } catch (error) { - console.error("[Dashboard] Failed to fetch stats:", error) - return NextResponse.json( - { success: false, error: "Failed to fetch dashboard stats" }, - { status: 500 } - ) - } -} diff --git a/app/api/github/releases/route.ts b/app/api/github/releases/route.ts index e791e7f..260e542 100644 --- a/app/api/github/releases/route.ts +++ b/app/api/github/releases/route.ts @@ -40,51 +40,14 @@ export interface ReleasesResponse { } async function getConfiguredRepositories(): Promise { - try { - const { getConfig } = await import("@/packages/core/lib/config") - const repos = await getConfig("github_repositories") - - if (repos) { - try { - let repoParsed: any = JSON.parse(repos) - // handle double-encoded strings like '"[\"A\"]"' - if (typeof repoParsed === "string") { - try { - const double = JSON.parse(repoParsed) - if (Array.isArray(double)) repoParsed = double - } catch { - // leave as string - } - } - - if (Array.isArray(repoParsed) && repoParsed.length > 0) { - return repoParsed - } - } catch (e) { - console.error("[GitHub] Failed to parse stored repositories:", e) - } - } - } catch (error) { - console.error("[GitHub] Failed to fetch repositories from database:", error) - } - - // Return defaults if no custom repos configured + // Configuration is now handled by Go backend + // Return default repositories only return DEFAULT_REPOSITORIES } async function getGithubToken(): Promise { - try { - const { getConfig } = await import("@/packages/core/lib/config") - - const token = await getConfig("github_token") - if (token) { - return token - } - } catch (error) { - console.error("[GitHub] Failed to fetch token from database:", error) - } - - // Fallback to environment variable + // Token is managed via environment variables + // Go backend handles secure token storage return process.env.GITHUB_TOKEN || null } diff --git a/app/api/panel/counts/route.ts b/app/api/panel/counts/route.ts index 1b22b4c..4bc45d2 100644 --- a/app/api/panel/counts/route.ts +++ b/app/api/panel/counts/route.ts @@ -1,7 +1,9 @@ import { NextResponse } from "next/server" -import { getServerCount, getUserCount, getNodeCount } from "@/packages/panels/pterodactyl" -import { requireAdmin } from "@/packages/auth" +import { requireAdmin } from "@/packages/auth/lib/auth-server" +const API_URL = process.env.NEXT_PUBLIC_GO_API_URL || "http://localhost:8080" + +export const dynamic = "force-dynamic" export const revalidate = 60 // Cache for 60 seconds export async function GET() { @@ -15,33 +17,27 @@ export async function GET() { } try { - const [servers, users, nodes] = await Promise.all([ - getServerCount(), - getUserCount(), - getNodeCount(), - ]) - - return NextResponse.json({ - success: true, - data: { - servers, - users, - nodes, + // Proxy to Go backend + const response = await fetch(`${API_URL}/api/v1/panel/counts`, { + headers: { + "Authorization": `Bearer ${authResult.token}`, }, }) + + if (!response.ok) { + return NextResponse.json( + { success: false, error: "Failed to fetch counts" }, + { status: response.status } + ) + } + + const data = await response.json() + return NextResponse.json(data) } catch (error) { console.error("Failed to fetch counts:", error) return NextResponse.json( - { - success: false, - error: "Failed to fetch counts", - data: { - servers: 0, - users: 0, - nodes: 0, - }, - }, + { success: false, error: "Failed to fetch counts" }, { status: 500 } ) } diff --git a/app/api/panel/nodes/route.ts b/app/api/panel/nodes/route.ts index a06525b..ecd16e7 100644 --- a/app/api/panel/nodes/route.ts +++ b/app/api/panel/nodes/route.ts @@ -1,11 +1,12 @@ import { NextResponse } from "next/server" -import { getNodes } from "@/packages/panels/pterodactyl" -import { requireAdmin } from "@/packages/auth" +import { requireAdmin } from "@/packages/auth/lib/auth-server" -export const revalidate = 60 // Cache for 60 seconds +const API_URL = process.env.NEXT_PUBLIC_GO_API_URL || "http://localhost:8080" + +export const dynamic = "force-dynamic" +export const revalidate = 60 export async function GET(request: Request) { - // Require admin authentication const authResult = await requireAdmin() if (!authResult.authorized) { return NextResponse.json( @@ -16,77 +17,25 @@ export async function GET(request: Request) { try { const { searchParams } = new URL(request.url) - const page = parseInt(searchParams.get("page") || "1", 10) - const perPage = Math.min(parseInt(searchParams.get("per_page") || "50", 10), 100) - - const response = await getNodes(page, perPage) - - // Format node data with resource calculations - const formattedNodes = response.data.map((node) => { - const memoryTotal = node.attributes.memory - const memoryOverAllocate = node.attributes.memory_overallocate - const memoryEffective = memoryTotal + (memoryTotal * (memoryOverAllocate / 100)) - const memoryAllocated = node.attributes.allocated_resources?.memory || 0 - - const diskTotal = node.attributes.disk - const diskOverAllocate = node.attributes.disk_overallocate - const diskEffective = diskTotal + (diskTotal * (diskOverAllocate / 100)) - const diskAllocated = node.attributes.allocated_resources?.disk || 0 + const queryString = searchParams.toString() ? "?" + searchParams.toString() : "" - return { - id: node.attributes.id, - uuid: node.attributes.uuid, - name: node.attributes.name, - description: node.attributes.description, - public: node.attributes.public, - fqdn: node.attributes.fqdn, - scheme: node.attributes.scheme, - behind_proxy: node.attributes.behind_proxy, - maintenance_mode: node.attributes.maintenance_mode, - resources: { - memory: { - total: memoryTotal, - effective: memoryEffective, - allocated: memoryAllocated, - available: memoryEffective - memoryAllocated, - usage_percent: Math.round((memoryAllocated / memoryEffective) * 100), - overallocate_percent: memoryOverAllocate, - }, - disk: { - total: diskTotal, - effective: diskEffective, - allocated: diskAllocated, - available: diskEffective - diskAllocated, - usage_percent: Math.round((diskAllocated / diskEffective) * 100), - overallocate_percent: diskOverAllocate, - }, - }, - location_id: node.attributes.location_id, - created_at: node.attributes.created_at, - } + const response = await fetch(`${API_URL}/api/v1/panel/nodes${queryString}`, { + headers: { "Authorization": `Bearer ${authResult.token}` }, }) - return NextResponse.json({ - success: true, - data: formattedNodes, - meta: { - total: response.meta.pagination.total, - count: response.meta.pagination.count, - per_page: response.meta.pagination.per_page, - current_page: response.meta.pagination.current_page, - total_pages: response.meta.pagination.total_pages, - }, - }) + if (!response.ok) { + return NextResponse.json( + { success: false, error: "Failed to fetch nodes" }, + { status: response.status } + ) + } + + const data = await response.json() + return NextResponse.json(data) } catch (error) { console.error("Failed to fetch nodes:", error) - return NextResponse.json( - { - success: false, - error: "Failed to fetch nodes", - data: [], - meta: null, - }, + { success: false, error: "Failed to fetch nodes" }, { status: 500 } ) } diff --git a/app/api/panel/servers/route.ts b/app/api/panel/servers/route.ts index 67c05cd..9e37523 100644 --- a/app/api/panel/servers/route.ts +++ b/app/api/panel/servers/route.ts @@ -1,7 +1,9 @@ import { NextResponse } from "next/server" -import { getServers } from "@/packages/panels/pterodactyl" -import { requireAdmin } from "@/packages/auth" +import { requireAdmin } from "@/packages/auth/lib/auth-server" +const API_URL = process.env.NEXT_PUBLIC_GO_API_URL || "http://localhost:8080" + +export const dynamic = "force-dynamic" export const revalidate = 60 // Cache for 60 seconds export async function GET(request: Request) { @@ -16,50 +18,29 @@ export async function GET(request: Request) { try { const { searchParams } = new URL(request.url) - const page = parseInt(searchParams.get("page") || "1", 10) - const perPage = Math.min(parseInt(searchParams.get("per_page") || "50", 10), 100) - - const response = await getServers(page, perPage) - - // Sanitize server data - remove sensitive information - const sanitizedServers = response.data.map((server) => ({ - id: server.attributes.id, - uuid: server.attributes.uuid, - identifier: server.attributes.identifier, - name: server.attributes.name, - description: server.attributes.description, - status: server.attributes.status, - suspended: server.attributes.suspended, - limits: { - memory: server.attributes.limits.memory, - disk: server.attributes.limits.disk, - cpu: server.attributes.limits.cpu, - }, - node: server.attributes.node, - created_at: server.attributes.created_at, - })) + const queryString = searchParams.toString() ? '?' + searchParams.toString() : '' - return NextResponse.json({ - success: true, - data: sanitizedServers, - meta: { - total: response.meta.pagination.total, - count: response.meta.pagination.count, - per_page: response.meta.pagination.per_page, - current_page: response.meta.pagination.current_page, - total_pages: response.meta.pagination.total_pages, + // Proxy to Go backend + const response = await fetch(`${API_URL}/api/v1/panel/servers${queryString}`, { + headers: { + "Authorization": `Bearer ${authResult.token}`, }, }) + + if (!response.ok) { + return NextResponse.json( + { success: false, error: "Failed to fetch servers" }, + { status: response.status } + ) + } + + const data = await response.json() + return NextResponse.json(data) } catch (error) { console.error("Failed to fetch servers:", error) return NextResponse.json( - { - success: false, - error: "Failed to fetch servers", - data: [], - meta: null, - }, + { success: false, error: "Failed to fetch servers" }, { status: 500 } ) } diff --git a/app/api/panel/stats/route.ts b/app/api/panel/stats/route.ts index fb62bbe..20e6b66 100644 --- a/app/api/panel/stats/route.ts +++ b/app/api/panel/stats/route.ts @@ -1,11 +1,12 @@ import { NextResponse } from "next/server" -import { getStats } from "@/packages/panels/pterodactyl" -import { requireAdmin } from "@/packages/auth" +import { requireAdmin } from "@/packages/auth/lib/auth-server" -export const revalidate = 60 // Cache for 60 seconds +const API_URL = process.env.NEXT_PUBLIC_GO_API_URL || "http://localhost:8080" + +export const dynamic = "force-dynamic" +export const revalidate = 60 export async function GET() { - // Require admin authentication const authResult = await requireAdmin() if (!authResult.authorized) { return NextResponse.json( @@ -15,43 +16,23 @@ export async function GET() { } try { - const stats = await getStats() - - return NextResponse.json({ - success: true, - data: { - servers: stats.servers, - users: stats.users, - nodes: stats.nodes, - resources: { - memory: { - total: stats.totalMemory, - allocated: stats.allocatedMemory, - available: stats.totalMemory - stats.allocatedMemory, - usagePercent: stats.totalMemory > 0 - ? Math.round((stats.allocatedMemory / stats.totalMemory) * 100) - : 0, - }, - disk: { - total: stats.totalDisk, - allocated: stats.allocatedDisk, - available: stats.totalDisk - stats.allocatedDisk, - usagePercent: stats.totalDisk > 0 - ? Math.round((stats.allocatedDisk / stats.totalDisk) * 100) - : 0, - }, - }, - }, + const response = await fetch(`${API_URL}/api/v1/panel/stats`, { + headers: { "Authorization": `Bearer ${authResult.token}` }, }) + + if (!response.ok) { + return NextResponse.json( + { success: false, error: "Failed to fetch panel stats" }, + { status: response.status } + ) + } + + const data = await response.json() + return NextResponse.json(data) } catch (error) { console.error("Failed to fetch panel stats:", error) - return NextResponse.json( - { - success: false, - error: "Failed to fetch panel statistics", - data: null, - }, + { success: false, error: "Failed to fetch panel stats" }, { status: 500 } ) } diff --git a/app/api/panel/users/route.ts b/app/api/panel/users/route.ts index 0026524..b4480cc 100644 --- a/app/api/panel/users/route.ts +++ b/app/api/panel/users/route.ts @@ -1,7 +1,9 @@ import { NextResponse } from "next/server" -import { getUsers } from "@/packages/panels/pterodactyl" -import { requireAdmin } from "@/packages/auth" +import { requireAdmin } from "@/packages/auth/lib/auth-server" +const API_URL = process.env.NEXT_PUBLIC_GO_API_URL || "http://localhost:8080" + +export const dynamic = "force-dynamic" export const revalidate = 60 // Cache for 60 seconds export async function GET(request: Request) { @@ -16,44 +18,29 @@ export async function GET(request: Request) { try { const { searchParams } = new URL(request.url) - const page = parseInt(searchParams.get("page") || "1", 10) - const perPage = Math.min(parseInt(searchParams.get("per_page") || "50", 10), 100) - - const response = await getUsers(page, perPage) - - // Sanitize user data - only expose non-sensitive information - const sanitizedUsers = response.data.map((user) => ({ - id: user.attributes.id, - uuid: user.attributes.uuid, - username: user.attributes.username, - first_name: user.attributes.first_name, - last_name: user.attributes.last_name, - root_admin: user.attributes.root_admin, - "2fa_enabled": user.attributes["2fa"], - created_at: user.attributes.created_at, - })) + const queryString = searchParams.toString() ? '?' + searchParams.toString() : '' - return NextResponse.json({ - success: true, - data: sanitizedUsers, - meta: { - total: response.meta.pagination.total, - count: response.meta.pagination.count, - per_page: response.meta.pagination.per_page, - current_page: response.meta.pagination.current_page, - total_pages: response.meta.pagination.total_pages, + // Proxy to Go backend + const response = await fetch(`${API_URL}/api/v1/panel/users${queryString}`, { + headers: { + "Authorization": `Bearer ${authResult.token}`, }, }) + + if (!response.ok) { + return NextResponse.json( + { success: false, error: "Failed to fetch users" }, + { status: response.status } + ) + } + + const data = await response.json() + return NextResponse.json(data) } catch (error) { console.error("Failed to fetch users:", error) return NextResponse.json( - { - success: false, - error: "Failed to fetch users", - data: [], - meta: null, - }, + { success: false, error: "Failed to fetch users" }, { status: 500 } ) } diff --git a/app/api/setup/route.ts b/app/api/setup/route.ts deleted file mode 100644 index 6e8c26d..0000000 --- a/app/api/setup/route.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { NextResponse } from "next/server" -import { getSetupStatus } from "@/packages/core/lib/setup" -import { testPanelConnection } from "@/packages/core/lib/db-test" -import { setConfig, clearConfigCache } from "@/packages/core/lib/config" - -export async function GET() { - try { - const status = await getSetupStatus() - return NextResponse.json({ success: true, ...status }) - } catch (error) { - console.error("[Setup API] Failed to get status:", error) - return NextResponse.json( - { success: false, error: "Failed to get setup status" }, - { status: 500 } - ) - } -} - -export async function POST(request: Request) { - try { - const body = await request.json() - - const { - siteName, - siteUrl, - faviconUrl, - pterodactylUrl, - pterodactylApiKey, - pterodactylApi, - virtfusionUrl, - virtfusionApiKey, - virtfusionApi, - // Optional settings that can be configured later - githubToken, - resendApiKey, - crowdinProjectId, - crowdinPersonalToken, - discordWebhooks, - testConnections = false, - } = body - - // Validate that at least one configuration is being set - const hasSiteInfo = !!(siteName || siteUrl) - const hasPterodactyl = !!(pterodactylUrl && pterodactylApiKey) - const hasVirtfusion = !!(virtfusionUrl && virtfusionApiKey) - - if (!hasSiteInfo && !hasPterodactyl && !hasVirtfusion) { - return NextResponse.json( - { success: false, error: "At least one configuration section must be provided" }, - { status: 400 } - ) - } - - // Test connections if requested - const testResults: Record = {} - - if (testConnections) { - // Test Pterodactyl connection - if (pterodactylUrl && pterodactylApiKey) { - testResults.pterodactyl = await testPanelConnection( - pterodactylUrl, - pterodactylApiKey, - "pterodactyl" - ) - } - - // Test Virtfusion connection - if (virtfusionUrl && virtfusionApiKey) { - testResults.virtfusion = await testPanelConnection( - virtfusionUrl, - virtfusionApiKey, - "virtfusion" - ) - } - - // Return test results without saving - return NextResponse.json({ - success: true, - message: "Connection tests completed", - testResults, - }) - } - - // Save configuration to Config store - Required settings - if (siteName) await setConfig("site_name", siteName) - if (siteUrl) await setConfig("site_url", siteUrl) - if (faviconUrl !== undefined) await setConfig("favicon_url", faviconUrl || "") - - if (pterodactylUrl) await setConfig("pterodactyl_url", pterodactylUrl) - if (pterodactylApiKey) await setConfig("pterodactyl_api_key", pterodactylApiKey) - if (pterodactylApi) await setConfig("pterodactyl_api", pterodactylApi) - - if (virtfusionUrl) await setConfig("virtfusion_url", virtfusionUrl) - if (virtfusionApiKey) await setConfig("virtfusion_api_key", virtfusionApiKey) - if (virtfusionApi) await setConfig("virtfusion_api", virtfusionApi) - - // Save optional settings if provided - if (githubToken) await setConfig("github_token", githubToken) - if (resendApiKey) await setConfig("resend_api_key", resendApiKey) - if (crowdinProjectId) await setConfig("crowdin_project_id", crowdinProjectId) - if (crowdinPersonalToken) await setConfig("crowdin_personal_token", crowdinPersonalToken) - if (discordWebhooks) await setConfig("discord_webhooks", JSON.stringify(discordWebhooks)) - - // Clear cache to ensure fresh values - clearConfigCache() - - // Get updated status to return - const updatedStatus = await getSetupStatus() - - return NextResponse.json({ - success: true, - message: "Setup configuration saved successfully", - ...updatedStatus, - }) - } catch (error) { - console.error("[Setup API] Failed to complete setup:", error) - return NextResponse.json( - { success: false, error: "Failed to complete setup" }, - { status: 500 } - ) - } -} - diff --git a/app/api/stats/route.ts b/app/api/stats/route.ts deleted file mode 100644 index 7ae70a0..0000000 --- a/app/api/stats/route.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { NextResponse } from "next/server" -import { prisma } from "@/packages/core/lib/prisma" - -export const revalidate = 300 // Cache for 5 minutes - public route - -/** - * Public stats endpoint - returns ONLY aggregate counts from database - * No sensitive information exposed - */ -export async function GET() { - try { - // Fetch all counts from database in parallel - const [totalServers, totalUsers, totalAllocations, activeUsers] = await Promise.all([ - // Count all servers - prisma.server.count(), - // Count all users - prisma.user.count(), - // Count all allocations - prisma.allocation.count(), - // Count users who have logged in (lastLoginAt is set) - prisma.user.count({ - where: { - lastLoginAt: { - not: null, - }, - }, - }), - ]) - - return NextResponse.json({ - success: true, - data: { - totalServers, - totalUsers, - activeUsers, - totalAllocations, - }, - // Note: This is public data, no sensitive info - public: true, - }) - } catch (error) { - console.error("Failed to fetch public stats:", error) - - // Return zeros on error - don't expose error details - return NextResponse.json({ - success: false, - data: { - totalServers: 0, - totalUsers: 0, - activeUsers: 0, - totalAllocations: 0, - }, - public: true, - }) - } -} diff --git a/app/auth/forgot-password/page.tsx b/app/auth/forgot-password/page.tsx index 88c0809..12873ed 100644 --- a/app/auth/forgot-password/page.tsx +++ b/app/auth/forgot-password/page.tsx @@ -1,11 +1,13 @@ import { getTranslations } from "next-intl/server" -import { auth } from "@/packages/auth" +import { auth } from "@/packages/auth/lib/auth-server" import { redirect } from "next/navigation" import { Suspense } from "react" import Link from "next/link" import { ForgotPasswordForm } from "@/packages/auth/components" import { ArrowLeft } from "lucide-react" +export const dynamic = "force-dynamic" + export default async function ForgotPasswordPage() { // Redirect if already logged in const session = await auth() diff --git a/app/auth/login/page.tsx b/app/auth/login/page.tsx index 7b3c6e1..ff9c2c9 100644 --- a/app/auth/login/page.tsx +++ b/app/auth/login/page.tsx @@ -1,9 +1,11 @@ import { getTranslations } from "next-intl/server" import { LoginFormMultiStep } from "@/packages/auth/components" -import { auth } from "@/packages/auth" +import { auth } from "@/packages/auth/lib/auth-server" import { redirect } from "next/navigation" import { Suspense } from "react" +export const dynamic = "force-dynamic" + export default async function LoginPage() { // Redirect if already logged in const session = await auth() diff --git a/app/auth/reset-password/page.tsx b/app/auth/reset-password/page.tsx index 6633346..659ecb9 100644 --- a/app/auth/reset-password/page.tsx +++ b/app/auth/reset-password/page.tsx @@ -1,11 +1,13 @@ import { getTranslations } from "next-intl/server" -import { auth } from "@/packages/auth" +import { auth } from "@/packages/auth/lib/auth-server" import { redirect } from "next/navigation" import { Suspense } from "react" import Link from "next/link" import { ResetPasswordForm } from "@/packages/auth/components" import { ArrowLeft } from "lucide-react" +export const dynamic = "force-dynamic" + interface ResetPasswordPageProps { searchParams: Promise<{ token?: string }> } diff --git a/app/auth/verify-email/page.tsx b/app/auth/verify-email/page.tsx index e2171a9..208450c 100644 --- a/app/auth/verify-email/page.tsx +++ b/app/auth/verify-email/page.tsx @@ -3,6 +3,7 @@ import { useEffect, useState } from "react" import { useRouter, useSearchParams } from "next/navigation" import { useTranslations } from "next-intl" +import { useApiMutation } from "@/packages/core" import { Button } from "@/packages/ui/components/ui/button" import { Alert, AlertDescription, AlertTitle } from "@/packages/ui/components/ui/alert" import { Loader2, CheckCircle2, AlertCircle, Mail } from "lucide-react" @@ -19,6 +20,30 @@ export default function VerifyEmailPage() { const [status, setStatus] = useState<"loading" | "success" | "error">("loading") const [message, setMessage] = useState("") + // Verify email mutation + const verifyMutation = useApiMutation< + { success: boolean }, + { token: string; userId: string } + >("POST", "/api/v1/auth/verify-email", { + onSuccess: () => { + setStatus("success") + setMessage(t("successDescription")) + // Redirect to login after 2 seconds + setTimeout(() => { + router.push("/auth/login") + }, 2000) + }, + onError: (error) => { + setStatus("error") + const errorMap: Record = { + token_expired: t("errors.tokenExpired"), + invalid_token: t("errors.invalidToken"), + already_verified: t("errors.alreadyVerified"), + } + setMessage(errorMap[error.message] || t("errors.generic")) + }, + }) + useEffect(() => { if (!token || !userId) { setStatus("error") @@ -26,42 +51,8 @@ export default function VerifyEmailPage() { return } - const verifyEmail = async () => { - try { - const response = await fetch("/api/auth/verify-email", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ token, userId }), - }) - - const data = await response.json() - - if (!response.ok) { - setStatus("error") - const errorMap: Record = { - token_expired: t("errors.tokenExpired"), - invalid_token: t("errors.invalidToken"), - already_verified: t("errors.alreadyVerified"), - } - setMessage(errorMap[data.error] || t("errors.generic")) - return - } - - setStatus("success") - setMessage(t("successDescription")) - - // Redirect to login after 2 seconds - setTimeout(() => { - router.push("/auth/login") - }, 2000) - } catch (error) { - setStatus("error") - setMessage(t("errors.networkError")) - } - } - - verifyEmail() - }, [token, userId, router, t]) + verifyMutation.mutate({ token, userId }) + }, [token, userId]) return (
diff --git a/app/dashboard/account/page.tsx b/app/dashboard/account/page.tsx index 2691f1a..2db9a93 100644 --- a/app/dashboard/account/page.tsx +++ b/app/dashboard/account/page.tsx @@ -1,8 +1,9 @@ "use client" import { useEffect, useState } from "react" -import { useSession } from "next-auth/react" +import { useAuth } from "@/packages/auth" import { useTranslations } from "next-intl" +import { useApiQuery, useApiMutation } from "@/packages/core" import { User, Mail, @@ -19,6 +20,7 @@ import { Eye, EyeOff, KeyRound, + RefreshCw, } from "lucide-react" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/packages/ui/components/ui/card" import { Button } from "@/packages/ui/components/ui/button" @@ -40,26 +42,28 @@ interface UserProfile { phoneNumber: string | null companyName: string | null billingEmail: string | null - emailVerified: string | null + emailVerified: boolean roles: string[] createdAt: string lastLoginAt: string | null } export default function AccountPage() { - const { data: session, update: updateSession } = useSession() + const { user, refreshAuth } = useAuth() const t = useTranslations("dashboard.account") const { toast } = useToast() - const [profile, setProfile] = useState(null) - const [loading, setLoading] = useState(true) - const [saving, setSaving] = useState(false) const [showCurrentPassword, setShowCurrentPassword] = useState(false) const [showNewPassword, setShowNewPassword] = useState(false) + const [showEmailPassword, setShowEmailPassword] = useState(false) const [passwordForm, setPasswordForm] = useState({ currentPassword: "", newPassword: "", confirmPassword: "", }) + const [emailChangeForm, setEmailChangeForm] = useState({ + newEmail: "", + currentPassword: "", + }) // Form state for profile const [formData, setFormData] = useState({ @@ -71,68 +75,117 @@ export default function AccountPage() { billingEmail: "", }) - useEffect(() => { - const fetchProfile = async () => { - try { - const response = await fetch("/api/dashboard/account") - const data = await response.json() - if (data.success) { - setProfile(data.data) - setFormData({ - firstName: data.data.firstName || "", - lastName: data.data.lastName || "", - username: data.data.username || "", - phoneNumber: data.data.phoneNumber || "", - companyName: data.data.companyName || "", - billingEmail: data.data.billingEmail || "", - }) - } - } catch (error) { - console.error("Failed to fetch profile:", error) - } finally { - setLoading(false) - } - } - - fetchProfile() - }, []) - - const handleProfileSubmit = async (e: React.FormEvent) => { - e.preventDefault() - setSaving(true) - - try { - const response = await fetch("/api/dashboard/account", { - method: "PATCH", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify(formData), - }) + // Fetch profile using React Query + const { data: response, isLoading: loading } = useApiQuery<{ + success: boolean + data: UserProfile + }>("/api/v1/dashboard/account", {}, { + enabled: !!user, + }) - const data = await response.json() + const profile = response?.data ?? null - if (data.success) { - setProfile(data.data) - await updateSession() + // Update profile mutation + const updateProfileMutation = useApiMutation< + { success: boolean; data: UserProfile }, + typeof formData + >("PUT", "/api/v1/dashboard/account", { + onSuccess: async (data) => { + if (data.data) { + await refreshAuth() toast({ title: t("profile.success"), description: t("profile.successDescription"), }) - } else { + } + }, + onError: (error) => { + toast({ + title: t("profile.error"), + description: error.message || t("profile.errorDescription"), + variant: "destructive", + }) + }, + }) + + // Change password mutation + const changePasswordMutation = useApiMutation< + { success: boolean }, + { currentPassword: string; newPassword: string } + >("PUT", "/api/v1/dashboard/account/password", { + onSuccess: () => { + setPasswordForm({ currentPassword: "", newPassword: "", confirmPassword: "" }) + toast({ + title: t("security.passwordChanged"), + description: t("security.passwordChangedDescription"), + }) + }, + onError: (error) => { + toast({ + title: t("security.error"), + description: error.message || t("security.errorDescription"), + variant: "destructive", + }) + }, + }) + + // Resend verification email mutation + const resendVerificationMutation = useApiMutation<{ success: boolean }, Record>( + "POST", + "/api/v1/dashboard/account/resend-verification", + { + onSuccess: () => { + toast({ title: "Verification email sent", description: "Check your inbox and spam folder." }) + }, + onError: (error) => { toast({ - title: t("profile.error"), - description: data.error || t("profile.errorDescription"), + title: "Failed to send", + description: error.message || "Could not resend verification email.", variant: "destructive", }) - } - } catch { + }, + } + ) + + // Email change mutation + const emailChangeMutation = useApiMutation< + { success: boolean }, + { newEmail: string; currentPassword: string } + >("POST", "/api/v1/dashboard/account/change-email", { + onSuccess: async () => { + setEmailChangeForm({ newEmail: "", currentPassword: "" }) + await refreshAuth() toast({ - title: t("profile.error"), - description: t("profile.errorDescription"), + title: "Email updated", + description: "Check your new email address for a verification link.", + }) + }, + onError: (error) => { + toast({ + title: "Failed to update email", + description: error.message || "Could not update email address.", variant: "destructive", }) - } finally { - setSaving(false) + }, + }) + + // Initialize form data when profile loads + useEffect(() => { + if (profile) { + setFormData({ + firstName: profile.firstName || "", + lastName: profile.lastName || "", + username: profile.username || "", + phoneNumber: profile.phoneNumber || "", + companyName: profile.companyName || "", + billingEmail: profile.billingEmail || "", + }) } + }, [profile]) + + const handleProfileSubmit = async (e: React.FormEvent) => { + e.preventDefault() + updateProfileMutation.mutate(formData) } const handlePasswordSubmit = async (e: React.FormEvent) => { @@ -156,44 +209,20 @@ export default function AccountPage() { return } - setSaving(true) - - try { - const response = await fetch("/api/dashboard/account/password", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - currentPassword: passwordForm.currentPassword, - newPassword: passwordForm.newPassword, - }), - }) - - const data = await response.json() + changePasswordMutation.mutate({ + currentPassword: passwordForm.currentPassword, + newPassword: passwordForm.newPassword, + }) + } - if (data.success) { - setPasswordForm({ currentPassword: "", newPassword: "", confirmPassword: "" }) - toast({ - title: t("security.passwordChanged"), - description: t("security.passwordChangedDescription"), - }) - } else { - toast({ - title: t("security.error"), - description: data.error || t("security.errorDescription"), - variant: "destructive", - }) - } - } catch { - toast({ - title: t("security.error"), - description: t("security.errorDescription"), - variant: "destructive", - }) - } finally { - setSaving(false) - } + const handleEmailChangeSubmit = async (e?: React.FormEvent | React.MouseEvent) => { + if (e && 'preventDefault' in e) e.preventDefault() + if (!emailChangeForm.newEmail || !emailChangeForm.currentPassword) return + emailChangeMutation.mutate(emailChangeForm) } + const isSaving = updateProfileMutation.isPending || changePasswordMutation.isPending + if (loading) { return (
@@ -319,10 +348,66 @@ export default function AccountPage() { id="email" value={profile?.email || ""} disabled - className="bg-muted" + className="bg-muted text-foreground opacity-100" />

{t("profile.emailNote")}

+ {/* Email Change */} +
+
+

Change Email Address

+

Your email will require re-verification after change.

+
+
+
+
+ +
+ + setEmailChangeForm({ ...emailChangeForm, newEmail: e.target.value })} + placeholder="new@example.com" + className="pl-9" + /> +
+
+
+ +
+ + setEmailChangeForm({ ...emailChangeForm, currentPassword: e.target.value })} + placeholder="••••••••" + className="pl-9 pr-10" + /> + +
+
+
+
+ +
+
+
@@ -369,8 +454,8 @@ export default function AccountPage() {
-
- diff --git a/app/dashboard/layout.tsx b/app/dashboard/layout.tsx index fbc3d41..428eb9f 100644 --- a/app/dashboard/layout.tsx +++ b/app/dashboard/layout.tsx @@ -1,7 +1,7 @@ "use client" import { useEffect, useState } from "react" -import { useSession } from "next-auth/react" +import { useAuth } from "@/packages/auth" import { useRouter, usePathname } from "next/navigation" import { useTranslations } from "next-intl" import Link from "next/link" @@ -43,7 +43,7 @@ export default function DashboardLayout({ }: { children: React.ReactNode }) { - const { data: session, status } = useSession() + const { user, isLoading } = useAuth() const router = useRouter() const pathname = usePathname() const t = useTranslations("dashboard") @@ -56,7 +56,8 @@ export default function DashboardLayout({ setMobileOpen(false) }, [pathname]) - if (status === "loading") { + // Show loading state + if (isLoading) { return (
@@ -65,7 +66,7 @@ export default function DashboardLayout({ } // Redirect if not authenticated - if (!session?.user) { + if (!user) { return (
@@ -258,7 +259,7 @@ export default function DashboardLayout({ }} /> - {session?.user?.firstName || session?.user?.username || session?.user?.email} + {user?.firstName || user?.username || user?.email}
diff --git a/app/dashboard/page.tsx b/app/dashboard/page.tsx index 1b42d08..661e556 100644 --- a/app/dashboard/page.tsx +++ b/app/dashboard/page.tsx @@ -1,10 +1,11 @@ "use client" import { useEffect, useState } from "react" -import { useSession } from "next-auth/react" import { useTranslations } from "next-intl" -import { useSearchParams } from "next/navigation" +import { useRouter, useSearchParams } from "next/navigation" import Link from "next/link" +import { useApiQuery } from "@/packages/core" +import { useAuth } from "@/packages/auth" import { Server, Activity, @@ -165,17 +166,17 @@ function ServerCard({ server, loading }: { server?: Server; loading?: boolean }) Memory - {Math.round((server.resources.memory.used / server.resources.memory.limit) * 100)}% + {server.resources.memory.limit > 0 ? Math.round((server.resources.memory.used / server.resources.memory.limit) * 100) : 0}%
- + 0 ? (server.resources.memory.used / server.resources.memory.limit) * 100 : 0} className="h-1.5" />
CPU - {Math.round((server.resources.cpu.used / server.resources.cpu.limit) * 100)}% + {server.resources.cpu.limit > 0 ? Math.round((server.resources.cpu.used / server.resources.cpu.limit) * 100) : 0}%
- + 0 ? (server.resources.cpu.used / server.resources.cpu.limit) * 100 : 0} className="h-1.5" />
+ )} +
-
{/* Filters */} @@ -337,7 +368,7 @@ export default function ServersPage() { {t("status.suspended")} - @@ -356,7 +387,7 @@ export default function ServersPage() { <>
{servers.map((server) => ( - + ))}
diff --git a/app/favicon.ico b/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..73b120989c49915697156afb5115efae27972e73 GIT binary patch literal 71612 zcmaI82UHVn*996tiii}EUILAR zD!unmLXtbt_xr#9{_Cy_YnYIg44G%n*=L`9_V7tpTkSeIGdTzZy8c-G!7~tu;26J= zkpR#1jL-iA>yxBlYxi{Zh(mJF9E(m1k51fKaWA6 zCj>12^Y|G7&%duB1c5?rL0A5L%`0G!|C$6g;NAc3iP8xEd&D%t|Gb*uIF0DPkMVDl z(a*C6c2}L$4P8MXPAU9G@Gwrq40w{&_JPg|U=RGkKVKKXPaa^y?}6>p&AW4nx*(7e z=^6lIE3G$>5PmQr5@EAf zaksZuy*{$zA3&|v3whGLu*Gi$n9O%we5aS z>w%P`UgTOJomDDPWKpWfC-~#J%c#)95)54Ei0bAPk(LJ*TflCKpp+}DEP;3K5*dCV zWtAKrSGW}xkUu{ji3+ML#nB{ZVqGs+E;Z0GD9LjoZS9VEZ<3cZ)cc}^L2qE8g+%pn z(jPe$B_1Rgl4*WTb4L?(g!C=7e%sK(pbO#)k`tNtsVH}Kjlqk z2>aCmxxfma#Z7af$}5EwAf=H#c$@mq^wBO(=c|ZX=n0wGmzJE5Yo8=Q&Oa)&I|s1O zamOmImtCw~f6r3duPc>prD#Ugb3xCBwmGm6cC&Tn#@%0c1kNir%LLqy{<%#>x_agJ zQG-^D-Of~N^Ir5DT;;-J%$C;(^rbPV^5At?Gb=0!Uiq>A&k-FDN$Uh7nvQrsIP)6I z+noLwJ9;!TB3$|`GN#hKhsCyU&x#`(!b0wsyXI7M0unO5{R`bb1=}?3AZK_7oZs$= zE8m*wbn08R5$s(U$t4}tEJetBV{)X~!6z<|8dLpyFEZuDpjt|3L3RYoS;0(;;E5fx z=wfu$w&DrABzlSJ=oavP@N{>1lMMZ5McH4b{`LhyC5*9~6?~oMHVN^A-P80rEw!1> zj>(`Z#Ly4T>5u39YF{ylBKpbri`Pyp{978=o8so0F~w4LM}Tcda~eFkTi)avtO)I4 z3&}XD6rpBa{!qxm461(D&;p@qQhszd#b2uH0$N&IK;G$_D08n2CT>*O{1~%#)^l!M z94X6?Q5W##F?y*|YG*HL1)k*M_=t%1JAobtf1uU03d{^l6tWPhgp!(P4waF=WZR!~ z0oPbNhJjGop=_nN(I$82a>FM&O?riC9u8(kD5 zdICl~{kV3PcP%*y<|Y9u!G9166lc1n~}MFieuVL_uJ86 zpd`6S&_^HoFnD#!MA4Yo$2zr}M;1oYB{E;5^5Zdy2ikuE8u74ciniXb8~S8AwY;e- z6?&*2=)h;Jow8|;VCc`uh6XyC1Qn6lG0k7BMp5!ToUI)0;#n9ca#2vGJDzIVV81wd z7~_-sR4B{0GZV`_PVC0O@X(z#tl#DGytK?&s(g})skAM1=3u2nFgSA$>DH8hQa>w+spbT=W{gf{SwHd9Yu+3}co8To* zM5^EmxBivOk@IL&_WQd#Lg(hLT<5O!Z2y$CSxurOayH|tld@JCezO1i{viKw>(^%) zId4dVi`cKRrJDmBt#28D;1tG(k_)y);s@qkgcfkY2^c~m_bbnla&83o^`$nM?)|v_ ztFo_Ipl|T%o-M&H<=N_|42#Z$`jDt-IiC%-$ub~=Bk95!m^`JinpCwA3)dXz>G|z} zb88Ro9i8dRwkRc6}}J!okY1+nW*@Bh3*qCyS>x z<(Ult(iNF7>3wH(6;*Hx=PX=`aH?UjPx&F>m_nX7m7s;c} z@6TgU6G;R8alP``asf|C_EiF!Lw3U2uj-p3(!~#*QR~c>w{kEFX}seRV(B|E(f;f5 z9^FC%Y$DfI&- z0zEYw-av>)ci2cH2u(=i8JV9Jj?gt7Dzy9w4fmE7pp<*FpBjWL8S;pNJiqBkl!WJ$NVAT|o;DN8OojFBbh#P_TQ= z3YUv(@#;R9pz!T)!b4q*BC^etSSFm?+&KZ(My*tYHVM)$a^j+kYqzS;8aFA;ObNezJ9an0JtU@9wPg9Nm`?q2Rsh+!H_L| zKl76ysIHPhYo&_BUQ2-49WT0>f7Z;28Er<3(hCanBn1zd)sSy{YksS+!GX(;V}(iM zhOs{|FB`uGc-J&lB4&sl5cHllK zwlHYCB>!$p!t%hc%VcW+svnZ9EIjQoO8__bo2rkzBT)}+(W@Fx_gcPI50REH1PL_o zT;IKzq}=Sj1%hsPb^*&JjkVXHac%J&alwA`w?PrtzPoPc!G+H{358WkfRM#B%WsnD zzmGkwc&fM6ytI0ou-QFtG!3d7C)HB8UsY>x+i9z~GIK>w620b;u+io==Jwn@?$4(j z=urBDfZ+4<(RJcHXOR5?K|XPFV90zb=m*{CtGmuum!i*^PhE)M%~zqI-!`UO2FL`V zjoNEbn6Suae^4b8Bf|0x#n3D4aT~Uq(B#2W7$iXuPOt(F7H)W?Vl+(d;5A#BX>L+8 z+7kBqhgKtX+wv=45A#d*Z=>SHN8i1f=kKAZ!Z?P)w%X{mKWk&cv|awt;OFL~EYT>> z{zGe%VBu6;K{hdgL4dG2MX{8vQI((7{yMz!Oi$hl#NIiXXIxO&P&YfBMoJ=Vg&X}u zBzv-VjUiGVvhHlZ0uY#Z6axAPk5Vo*Q|kUD6rg;w*j5R{87H#lrzB^UswAws!%;q; zOoV*Ko@KwET}lX{(2EiuXw*beHQ*VQvjYIYB~bvYc09DMJI{j`Z2aO3zmsoL#(N{p zmM>6`KAnPVba+fG{sJYH@Z~X!NE3m7F=Hoi_1sGk0H@Pg(~y*$_A9Fy9d=Gxxon$! z46uAphy845P1{G0If=XPS)RS0y)Hlxy1sqP0}6n1jZ#HuHfeRLQp$AJYl%OZYT7lL zB;*62L}(4nfR*6}5Dp!Ml5`5Cc#K{6;w#1+=)}T9XimUCLjRkCMX!!v=EWPb^Ktgk zjm5n{L>#(P-WPJESW$la3y{zLMk{A+Nq_qU;EY_b{dq;YSAHyVk{Ymtlg?Ez8Zhg3 z!rf2X3b+K+AZIzslwl#tGU&Bih?CfhDiJQ9&V$gJxFaE-wPJ1nlJwiNvM^d$iZi>S zfP#f!nmc|pAzq*e${#W%3s5wOr8xmwc;dTWwk3PKNn186b~ z5-FtsHQfWxZTwI2pwV^NIZh{Da_d>eB-Q8dH18`g+N^4=|MO~kNV1h+;noD@rn)@S z7gS6j{Qx#yZNhuAY2&?2Zbz5}m3d?n9w&R*>)3~}n=00VM{4qJ$W|ANd&Lz3g4*<1 z1lu;c--O^5-U^ii&OgUfv>Z!k;;K^3D*U$Eeow(h=;&p0Ve4E7FvEa*;qqmS^U&%) z8+U+wGhI_ZRHJMUzDh_{H<$XXNWGpzAvHz2LaO2%jDtd9z(**e+^zLhIBqT^Beh;Fm` zUJ~qa=x@tsJjEEQJ9v(TiF1mLmSH~qG;uesAYZdz-%xZTst~gO!X7wisB-^7w%Jct z4Tg3tp~|v$V+vAzd~x_HYYQU{tF37VpAOcHMUL^m+X*2&{k36bQQSP)-9YZo{-S%^ zy;yI6W0&u>cy|hTse+Q?#+DWCO}!QvQ}A&V7O9x}{4XwRVeNyO2;CqXEa7+h=}i0< zDf9xcwkAQo%M}z0?~+s#cGOcGta3zdIQ7JfFl}fkr(&L0`3U4xjl$SmwG=U5!z^fO zd;Y*Fu>KVczzYked_v&5C+{94RZW#oPkvhPJHulONS4 zXf_q&6A({)GBHEJZ)X-Y(GZ4!H@i!kG?sFAj?N#&W5ql~&gYYG&ifp$W8p3leC5c;tr8o| z)tvgK0n`zd<hi<_im4lS;q%S}9W;DAZ zLT3vtg;HfkoF5v{lUfQTV)7z^)`A_{yK+V=|M&DJs$(v{Md4#=Y^uS<0mtlxXl?mH z{)RMy*?`R`$~`K~PrSa?YQ1=k*8TjFDWHRvwc9QtWZPdgD;|`G zc5x@|a0XD2bu%yTh!?Ym)>GWDD_U`OZl;EQ^>o;=#*N-<8&yPDL@Fk7N#oK&@$r=y z@dC*a7QHL7F5M5FbwRx2VjetSyd&IMhW;%YZTWD9fN7uPtGGR%BC}c0F~_{TRt)F9 z6^jB|2jeQYa%LB1GxWG$(VjaC;IA6v4|ateo0--=&vlGKYW1vBrJKS2_7NsE1z!6I zS^JU#;ydb-a#xPnPoO3aA1WG^rj*#e^gu{eE9+LZ)7wmYYPHUrzYCp{3tG=+B zo5|!%t6$f-n(q<{Pex2vI%ihlUh5>Uf=aX~kI1J#C^J#~f$wPK-hR_OBAPtEW?T7CFpx5)Z}%Izd6-z4KO4c8mKjDEeOgeuohnP0i>sB5 z`TIfY?tH3QsLQp5MTm8Q*9yvRF1=QxvW_A;dlyjUt}$A;_b#91Asu7}@JMuEJXGGa&^@#CSNI~= zfBGK$s}vItSR)-Fencu$dJ?RU zAaF+=olz+U@R7B`GrQ2=wU1Rn7QstkV#%rxSDhd8RWFK6#npO*$Ve4)Ko5iOA9qZp zT-Rg|Kf-SQIJw{W9OVdP#1`X{S8=cfzF-#9*usVZy{dXLQJ=GS4aS!5k#^mr!grj~ zAnASqB!$ojGZg-gflbtOcz+ z)G3kczawNX?;(WIl3()_@bR#j)D5sc(n`*qy&R|}HY$}qL18*hHe7uTYC(Oj^jS37 zz`=&v(TplDq?o5T$mxYola_8(EP=P<^QIT5B3Y)skC|9$8`sMUZ-D3Q=vYhIs*Yf% zwS|w6N*(bkZp)sp1vEz?J5bK~n>2QtenO5(M%=^4wYV`;rv}mw`D!Li9+R zARrFTBlIH`dyA4_QlP93=B4)@HfBK`!&silVQjxVwl}ZHseL&xwD<9?^cJrLXQDXx_nHYC;uF+%c zWS%LX7lCstgZW3&L7qdoG_+HHgI#LXf`~ zEzOymBS~Tbd{11nK(l5~?@S%v?SXRoTlO(r84vBU#A)dpZ2!Qf!&zZQauYS5k90a7 zCh}#);}J2Lt1I<2WH;$HwwEs=*L!GHi)d8l-5D8ixW;|q8*3iUj)4j0dQN$s4&E;X z(UPjM7mjOUmYU0FF~(%y^aoY{cD}(t%WB>J>vAVhn`4XDpgF8~)jMIXJSDKmyV8A* zASEgik^umoUC3J=Q?$zLzt9BseEYM&x$Z--cAo}11NF@9hNm#UU~M|(2sYulOxXDd z_@9`o-fMu1x}*E6y)GJFTi&NRS(w$&-s)bPpk8WM>YOA|4`?5 zpMrAt%t&)GLJORq>&=RSy-<2p_ioZ&e_}|Iqyj( z15Ms9pX!t5B-*Ym$zF6}(_=;zm48$@<2%CV5Rv=8MD_8<(ZWh;_+llfjBoy;YxI#L zwWZr3cyP{4&WMSKVc2uf{dTYc9# zsqAMIqCCeMY;}2tmUlDdmutyW ztX(5&P!x2z6$21m{KYfhH8%mIQWVb)93D~LK*7NZI(U)8+gFE+k1aSjb@V?n-e-Jq;|Y6gD8VD@=h5SL zk*GiNm6fv+>W_SNvbQwUVHBx2^l$n^$abY(1p=(CqJv^Pcx6foOfd_ z#D=6bo%(HgkPu2=N|krjgr-&V1n#4K*z};$CV}PO?*S6c&@TaAYL#3|UB3+sfd=sM zYlrF4U>!oK*XuzWxg#@?8bR;loAT;xFZ!Mr?N7Y?QjtyaF^@NTkK!51aV~!AsXN;e ze&s~jU9iL-voX$J6a9nxgjtZoGYO7Xjd@QDrw_}U$~pjwPvA&Na&2}b&aZXK-Y zvSCnt1IhSORJ`)*oeDWYO2+TkkNOKR+o>{EUoY0YdJn8!Z?A!m|1|n#(QjESMTX@` zjmyyJ2^(tU!p2(>}Me??(`_%^gpwK*Wy}r06`26z` z9M!R-hF5XAqig!W2ZPtkNh}gsSLw>H28lA>Jei~Gzk%>)c$uau<1_!4fwfD@c_-eo zqgJb}$iSotb%oUt05uAzy!h0A%?Ci5#aBGZ_TbUxm`<^}622lPSF*eBK+V8|UU+SC zjle!|S{@o)uG}^4Q5<@>-L%2`hrgu?U2vC(6f^w)GO**qr4OaPs|v+#${e7gm}qv- zz&OEM59X@6OJTb&eqgtDHUD<-_L8)K>LoUUWwvHEO=H>K{&)B&-TJb@fw-)N@jnbq z)Mxt5mrTmTr>4kaKO;wgF+2T-g!lV2Y^-*lk`g_z z(H}7C-i~6e9BOCrJbNB#j&c;%_s2_QW76%xF8xhIHPNV0)JSU<+{StY`+B#R4X?a2 zM)xB_Zp}oge^Z&be*O3L?Pmi=C;KeF4OrJhgYxI^<{~!(<+g71VqeDpXXdDe{EW(; zn!=w|WTIt`u)cPUWCj75r1HCBP@L^GOfYevcuQZ0iqtCfySCyP>;E1&8vhwM;s=F) z29Evs6vPi434NP0YkE_?Pv{DDDdjAAAFBi%G}qAw4^^uK8M~s{dtOnE$XYod=N*ul+R+Sh#ZT6m4>z zbDa)`c04n)gBT_8YbIKo5p^~@xB!$(g$#t?av*f{dEUslP+6}~+95|(hHH6!4+sFA zwMYGm)68XJfOJOdsQq%OD>QgRI`%=4}cz z*)x#)hdXjKy>KvI=)K%0suep^VCJzEoF|i88-o2Gkr|S9&2*AY>f3?U)P8DrZZl6o>Gl|;Xu%978Cp&F{;kK z7k==Hl=kyUDJ=18796Yh007L?f!rim-I!7x}l-IS-!MGUrXGQ~1 zB;9tl#&Sh>=Xg~7rLe>u80)%6^)KyV!kpR&&g`q+ML$VPcxX&Kk`4BG{Y3%=l#Rs` zIG?F+Nu=LPDrOIvQaq0PAEgT@1;y7?)yOQkfN&?ZXzNg0c03v+9yD6avHlSyL5FhF4$7xgI8KX5gXg00j zpD1PXxoQgLUn>@hA%lUvFU9a&OTv-R{a>_79f>U!HCxb%i3O=vAvU{ zr@Z@8Sk}fZum*9x+D<;Yh)Ac3!vB^F4F|QPG{k(;|Kv|+GSL4MuZwXlxFEQ9gxC;S zw807M+~*dNkrA5r;itm9W zgWkY9J^prq+)92o@a&0-NKo~(oXBkZ4#}!vVm=d-9PN~R$la()RK3wOM-t$9+&|W+J8>&!Out}&&%X5#}MN_aF&$7HhKs7 zN+dv&K6}G2B#ML&wu@OCKI(!+Yvs+Z1#d=-#Hb;sBPXH(tz=#3KZ;UC*eb_{iW-#H zJ`l+SvJdq>pF8; zoy@o&R^}IQCHUFxy$|aDuY^s`_-19{mB7`=1`UtSSTt-N- z#g>e?mivl<$xTs@_GBn?YGWz)x85t&_sKABI7<*)1pZ{$bQ-|c{C!8-5RI7k~1p{$)$rC*==YZm2QI`-^oyBR$V4f*Kg}-{6Nr zdTCG0`JS1A0HapLx4&~i3Ylb@3cA0nY58=JIBx7(sOR+@v@-w9e5L8JNHO6s`CH=r zUw6Xc`D4}biHkG?v9wizvsP^+^0yVqZHow;o@fu;}kCMxD?F7{UIa*cjH=7&D3#nJ*gh@*P%C`U2UZcSw_V+`PVG>g^ z6~~!+2guFln7x+%heQmZDa8|Fj50zKdHV^*ao`N%wLIG`B6My<ppFc}cMW>r)HRqXbyUc5OlLc`8cB{_`YEI=|+u_+%xC z3Kt>rg5Z_2%nhb{dgIJacB7xU+_`%Ky$Xi!JhBVFY4DK?DB0=D*& zZ0SltD^lKeHb8A=Bv4L|=azoeWz_hk35iS8kR)1Ny?Vl@kq87#KpUMNV|32Xkk(y4 zOOF)>cv%#V>O=*b?K$WjryA^OZs4yr z0?9w3o;{m6T|NvlqP1pv2I(oNntPRUku6kW{Kjhfcr_K!hAoKmH2cYo^Xowt1lPMk z^LQs5ytekqi4UbepP25w$)QM?+chw|UtbS4J#4foJQ{F~i8`D@yysn7O#}MU?Wo5E z+(OHs$t>Y?y`N3f!Afw^Q2QOv~^rqsMAZ;lhS1C7xZkfBH=w(>`+$U9dz0J@Yu?Mj<@nu zX=aAyL;Ic`|7G50by`d9Yu<2U%gQ_ByyXTl^F!FGI2MQck{L7>{_W`{z~MkvYfz%^ zl+W(jrPQ@^9ZN@Tk<*0{VVpjnB5&547DeR-_5;$C0b|F*8SO|#LnU@8?8nlJBJ7B{ z!hU^Cfx;EH<4U^Ujj@yiGJ$^U?w-06#2|VC?14{-0@ajq7D1B$kNvxMjoFSk7NPn~ ze&0cjp2^SRK7FGkX8jflYnQ3CC@R@XwSs!z^F?^T4B0=7Jl#5`zwaUPuduVkKKrQi zO2%8h{KMPJ@XGCAdd=}RHqV)-3ITI#TazjGE@PhW_SsO%n;8keM*>zuMeP|fOE`Rt z$V2r^cHxiGI!Qr*E^DI)vNigGl)uvPa>sYlOZvBtqHaf1wW0Eia!hk3gI2X~z?XJ< z*%A5+f3N0*9jRijQJrInr`9TG8Cd>x*h(F)VY_Kpd5mVERbj1Z>P7DqHg0LV6c!d= zBm~1=cxne~w%s=GDkk?};-vZhWv5K8T{GlnVLDy$*TuBSnDo&Msgr<{iY5WR@nn&u zGfBYMNEHLE5mlhQ7N( z%=d$`?G~UZLhlOL#W^$#NEtonDwb(?16}l2qsCo+$+OAt7>?oME5Ed*9y@r4Lo)`B zl5no=SOJ6j@AgtF0V~sX0s7Ki>PpKz_r^-8qYc7xgCK`UgL zVOZ^<@%o=>= z5!vJqZ}gQ$tuTxipw^|i3Qfe6@)kUb_4f$}Kgg@ZX{Zm@dCq#zy;2;HL1h+wQYb6H zRe`CL=JNgOHRhR2A-Q3t!MR}tMHlNjP{er1W@sD4i=3l>n1fgx`m7p+}gUE%K zi$tAUEQ|NqsD3?`7wJdEw>*;+f za9c?ASx+vxImsKvm;X&d-8C~}aCx~zBA6QFP!v#MJ(75^Qdy6=lD7ge4zvD`JWeG@ zpG(zs9WLp4liGnyTC@zr1l&oBtyzrt(@e|7 zCoW8JHS_VA)(Svx^Tg1r>vwY9y|*`4F3zDfNjPZAfF;^<^lEl&k>8Fful%PGAI4;+ zFN|5=_RRH-XvIaN*tMRy=%W$J)k3Bh74O$JJv*?Pq}ZvrIvqI$*M7y0dYhxHt;AWN zMGUvQUyPUJ+45h_QIx%hG`RNUxlA<`kXZ#ghOvz3Y?|tIiiV_x)-l7pGkI7b z*Cj|r31*t}7d+Mz*5*Judov4y?qrT$(}Cq)=j2WbtsySmW&|A0gemE<1Mjd8x%se% zc~-bs>rJV`BbhZAX~>irj#A1J>OEa%Vj|HaHjO-mSGyM(eHO4TC+6F_Q!Dq(w|w)q zbb&xb7fc|#=ny%NOHcAB3Z1Z%pxtpKbt5#C=PUb!heGJL%sV9Ss9bKbIPZ$Y zRG%)sIR*Kl_Bw_b9=x2$njcm4_@K$~)hkRVz~1oa9WG_R(Y=mgE-kM(LW!QI3cW_S zzPTdFkwMwuEKjf}YQ)3XOd58jxp6KmwE+V+^|F&b9xB=cTZ{zz^uuJ-i#^4ruq~@e z#fv5@rKy)jkJT%0e356jcq{th5!0_Aqlod32%^HM-#K&$z?wDEsqh#?wELOi^ zFLWhP3qDwav{&kfP4)n59>-RZTff4#M&|kMrK;VP{2QL1aUsJADQPaf{~QdxDR4uI z7L4n@8Zlw=JQKprn|`s-pLOjx8jyE$IC(AJ_wshcy}7F0JbSMP!arSfdIR_$+|6S) z%(IS}w6X{Y?~#|t3nC@}3?>qbTHs2vCm5tx?bbmkx@xN*?H=eoDN1T2t7BBzFU}^n zNA4FSobDLLub=3=*#|du>EXr zIX(hMN5HQNF%fcEdiP#&MIVE$qVq86+ZR6lvlW zZUJfVIgYZHy)jX6DLss<)iE-RyBr$X5)c!MlEzurVq{&~ZC6~^U?NFIjyCrbB2z4@ z{6ce%Vvx(mh8iCpu{c>cho9b%oxmk0?(xrK`%im5w;jYZD`>aWowZgl{c3Wel7CNE z{Ajw_E_-t6Es_IJ8rXgx^A{9$nW%tvIM(u^|9Zxpu7n@f z=cIqb@HDMr$HT#Qi|Z}OH_+|mrz$&Ti%1iZcng&-sg0@x8lmz=LwYrqA@(6+=J|H$ z6sX@fL>ed3WF3itxb1HqMyV+@%(#v8MQ0N)B!gi(Pwuc7x%dSToip9Xl-DHg{xj%_axoH?_mmQgSE7GjML*fhO#BXxIq;wkf zi&%r`$d$i!c5XnmcR#gmgMBnHuAJ2kOM8JQRDyi-=S5bud&yLwywIT;F$pQEsty6I zqGaj`s9P=rK_8K8E%o~J&HbZgUsO?8+DR(LUwWCdhzH#%0qw_qbHq7O??P}F#>CaX zqdwezx#8h?&hsTay1sjs*>)^wUwu^c7^nNj-|JC4Yyvayvjtsg4a27Me+Ga3CV={n zap)T#U>pL;EZCce<%Lof9|g4s_Siz`_5aobp8N)!qKi zVz`j+hm`EW+Oe-MNw48FD`2E-mFaS)4~zJ!=AC_sg*jx%_2^0AwS<+ASob;m-nKbC zxcx>`3)ghE61%eOt1#KI&cB!nC^qRFaf;pb&P4o`(}032zki|DbH&Oi9XcnsDX}i; zL^OJ`B1X<18u!PWWWMd;b}0}yzhr`5OucA$>-&gx&UN;Qz7k9I35^)3g8+k}AfbKT z%%!7yhO>2+8~K1UUG1bZ{BxSgNkc1jwX zia94OpzqF*j!|p?cO2{LD2%PHU_}2<;TaMMa^(V$)9<-og zrqcXVw3zX^V0Z;RghsFwK4egg4#wwXIRR*%dyn+aFxt>r6oIkz-A z4<|{jPE!0)rYDL42Rke43;{p+$74h7;^7+J2xq7QoQMlc{RB% z+hByzp3-J{$2G1OU2+U}VjvrVoE* zH>S-vVXn(x56xB52@9d<6wT$tZc&w$R7>zN8PDA|@%>^wv*}&|u}Fx(RmPcK9!{(T zQ2BhfueetBh7;DSy2q|cWa(RMA)f0!rh1c!)c3fVZVu#)DQ^#q<%B}T2gCeOir)vS zi-Gd`bqaQwZZ&3#QPO$p$?mpKeRa}2C+(`)ZXm_J6U~As&G!E4P>LYPPek~O+Icbj zj4i~-Xc>lL!qIxC%k;3mtN; z-^_!LuIx+fQ&uh!*uD27+ug<$o(Sz-H8|Pbi^EKubE&w#b0raZ8=EydGB82eB#;oMr&#NX*IN!xqxN| zoQu0Ck)v~+o_eeEX6tN3z?0Q$=}H24*PU}^kL^O!QJ<-H}#{L>M6__+sMuDQ`S znf=I$g%=1JS2-=?$s|v`*CguGv^Mrm9*T3K6{W z1MZ+4g+UeuZ_*)mFr>BrT+Dm5XsvWw!>aiWDou7su1R9{0l;Bp^yfLo(wiqV?9TsW%0<$3O0Qw zyohUgbWpXQQx{7IbIw)FdNWt1K(tFO;&iO^w3+&t;$fqTAxGh0bSW9Tg1*U?1r6xi zX1X`_7|<*&EU zPovf2r(Z})Zm+5e$3aaIi7O%%j{aM|D`yqiiT&0GXS7tamCl>vahD}r*<;b6SIPDs zFY-GpPU4Va*541>Ig{83cKlfUntfK%fPo>F>G+I5HM7~7o|v-SHK z^EKO)fK%blvt{L(|?`Js{F4}vQ7p7K7QN;JXTIl^Yo|Qu?xRl@q^b1 zUU3sy81xK01@wE_Je)hs^`)T)N<(d1wIA0Yi_?#oue+R$Z+cc~ABz~>7rHUxQj6nm zb))6*Ve+{eLqYUiZ94Hg*0F8}<TVV9R6 z53CAx!xq_bZS3yJpaWkvf{vu1Gk0wlFJM0d;$F>KbJvsYAl$Y4(PctHV5~_QH2M_T zxOt~mQfp6+Fx8#wtN4JtR;6ti@sV7Gj<=guPbn^U2zSRbj&|;F;85WmdigT6Ac+L! zSdw%RuzSrEQdrl|{yeXqj?(eES;YDEIeM0RES40XUp+p$%k$B&ZW?E$i1C&_+U7p% zKipme?vI|T9NwXdbb1MgR82t)3!ckES-$2VVk?=fa#ewQn!V)n1#aXk9?fuX2Blyh zSWPL?oAfaXD22YUmmI9SMO)@lf1M34rSZ;&6g|M%Ks2zIxux;;hkrp(0N`wJXW#&k2Ym*q_Op;i z(J{myTyvnAWHunMC93cqtj=Zw>*P6yx|5nT-hQ-IO-jk5!Q4ctXLYjUc>N3&_I66q zQ!q;fcUFTO+rybln_*NhjGL2izJ6FC#nm5&Syc^9GcHF0?>-ZxFjw5iQr%$(_vPAK zKj3>LO>e;1;Izfr`F3>pO!13-8La#q0H3rZujwFr2Fu8OAn0303J3275*XunKGfXN z{HXD&1*+Kn%p5KwCCm*NT6yq>)~-Xdq|)K$xM2DdU_E3dPf5% zrVb|yuN3Ls_^JLo!43v7K_y7WVkqP0W%RYhePt5Q#dPEy0)qx{7r#n(*zM2HD&a&V z+_PJ8aG>*qGIfF;MCDTL$5=|>eT)EJR%0vqMkk+yOeR3(KN08$54zeFhH24rv_Z{aBuB&Ht z8_1sY(m^lz?4K7(#7d+I>}L;S*{d$tS7vmKg%2#=KIsj7{9q-OG%jc3G5Nha?HCUQ z$cC#{l9f8=?uLT!(5q>NIp?+H72M_0M9;z2vU{5ulJz&d(SQV2{@xh7Pi|~qrOG5a zq#Lqx?9r)p_%uX$Ee{;)z7F};#nB|lJV6Ax*aQnz8DMiJ;;*M-lD!8A zUnvopc*`w6a!ed7G?7(eSLiGne8du{&{9P0h}`G|+j67lp%>t$vr3oCEg=DPw=anc zc5mt&&X6y+@=fSoQ{(2_;EY>CH3qgD(T__*U&mzCU8sj!dg;Z_CnVmkyGrp|-{>Ik z@I$toDf@HT7FG?b*dv>`BQ@ZTLoa#bY%f$tPb7y8- zL4czXDw?Mt!zR117KJ^9xHpw<7UA*~va$kKFn}^eFitbW>?u^|P~j=e;5gG0dXf)c z9YQFS!uSKH1s{&~>B5bS9?DCee>!P0nG-6$G%un@EPPnidYLGC+R@|_x%zQD4XX$k=ZpJ zsg)~{%A?*$^E$Qeo3#pqAtsV7MtkT@Ub3iL%V?<2T#b(l>+St~qD~sev~_uxV2TDOpWi_ja+ajjXhsD}W~8jvB7==)RI%@UqXMO3_LzWl zJ*8khICkxxRLaDqoivn0xB_-mX;8uyBXajHF|XCU<_D2x8L7$e!ufP|K5jj&d#>$ zzV6Ta{d!&IyUK3ua{dt{GRq8ie83D2Vp?gV8*MeTgblyj2aAl5LUUhKjM->jNl3I@Iz9oSd~dfLleG4-S^bizn|Hx+cF(dVOVxoTOHG4d(NYXrXgb^{nS9B=PJhl8tEYm6`R4}To*x4C zmdiuy(}siSaq@1G??Pb)M6afaBf%pLvCU#G>bI0&7mRKzK*ZZwVy-5(ys}BS3ZymL>_maQZS4*3SQ~y0;ZaZhW0yI_D8ZtsJ zL7syP1N}b4Mqq8UKl;PAr$3}v;;J(<53H~?=Dsiv(bYEysiRY%uygh4qu+7J5ulRfCM zlCY|kl-bSRTnHHs^efWirwExV1ntjwGAMmJf%su*j0b8}L^JTRmfK|Z;@cp7S-#6U zS+;qtS6O6bJ9;dMx?Hzkb~i)fSf>9(FobaVu1b{O9Tfy=l*&dSAU^T-!~i{_?_n#A zD?X`WtDx~0KIILz5!vR{f3g;|kCU!$?WZz%YwR(leLelY{!>({&5eAup)CPRcfAR1 z2_^NNUrEH$1Er`hVr{?A>IeDeJWN8ayzI1UA~p!vGhNsXZcxcPCC?4wNI^r7UL-$Prp!tYs-2fiolp=&X7<^ z+LyWdjN0?wV^XoDb#Fi2|By=Y92UmoE572)o^yjh!Az@B=6M8a25OF*<_N9Pe&a8* z4b^Q5&&eS6RUAL^12vLVFTiCCO!)`)J;@O2g~Fo?Cqe~^tr{)Cv$wKBm9zIf{=Il2 zU?aec2%5K;3S5%%i`pLqYO@-JdPOx;`%d^>;Jfr*dj9Fo=Z>`PNK=VcJz%%J9&X zqpickH?cN`9D#qXQn90gVz+O#uHSU^Xz4!%hyo13&}6*=DsA_ww&4!*LW7lEB!RJE zjs-~dCdn45n8PYV6V118Onj;*o8Bo<8hc^9dSi{sOKrY?b{F(*sfobe;^LN``kwGdQlz_3E&BC# z4fszPW(wj=W^a*6P4!Hi!p}NX#R?bk3%~;qQ7H59 z{8ygIWZ+%suONN3t&76NyIzlG`(q<&bgkxMPk+D(HVez|6s8-YP@e%Ze;DFX$)@EF zh~YtrBBtMC=_%|PwleYzQ)X*$cat!50i=7b@2@k*T@`CIc;)!)lliIo&nHf|jYkzi zqhjCkgd0!%`gndDzdF^HM?6JWEXP-pX|)ytjcn2ezu8Yd=(1Hh`|A@_=Nr;vyETF2 zsyFW098Gx5X|s`&xhUUcOUS_YEJXdOH7y~A@}2*zSjO%C@X^mXoZCV}TyAty&0Se! zHvvZ96E^>X0MFdKCdK=|Pz>Hv;O6u8lp~%unUcc<*}x4S@OH|GIJQ(l2N@hLo3#%| zses`u2j*wyUUsIQ?I{iEQ8>JDA2s;%3Aw!3iNfax1}l+oEXIHU%hU8C#ufBpo>l2mK20Sgn&`LFg1!OV|-v%573zqNwKZL_gDceG~WBfcomox%?#F=d!) zP=&njlm;wiyG_8JLPG6Y7HRAe!I#nOq@{kp1Xe)07h;96fm+DjZ^q+St&x8vaGs`a z=U)VvW-V8tZDZBoJ`Mv3E)`5fGXY~zO>kFp*)|<{ime2g{4k|%^tuk*>|nad^sbX` zG*Ro3qPqwzg*U_>b+7u9bV^%Q*fI3k&D{9)YAf@oF`xNhEqQ}r!GpS2m{Y&0LubxL zPV-)#a1y-pI*e?A!DRaB3tV}Fp!lyDztS3$Pj_goyeT6?fO&JF$pNn%E9F7T`|5|! zlkr?-@=W&Cg!NODjX|(Ut)6Zvhw#je!H}9(1+tISQ`b95{3shIXjFNn$hP&puee9l zN?i4>{x4DAgI^NBd>34h4-NL+#1^eIvzVaCE-)?uTT5+$>ScSxY zZp;x#AV|G~=gDg+NrZUc>RD;@KILsbWjL52ri~JTFv4&OibA~EqCUE&#seqp{Ptqx${=)xeVDl5|a#QZ7Jw>znuURKhoX6f84O3i?pF9>_weth-n=c+C)?;%FDl%6# zsuLb%Er15+bpdc}({Ge9d&hGvw(b|qPLumyiSvsm;np4t-ylLR35rau` zs_)eY6AO`8{6}+|ljAcDzEz95gD=PMqfx!}qhHN%=lHNN@s}@6YGP+tpsK8fjT*%1 zAXCh-$XZjIsiVZ;c5FJVN;Pg4DHs8{bBJB4Uk~SUDTu$#$1(Mhv;6yOt5xYo%dy$d zbykUnV|mFVv0~Mu&))b&2T-)ZgD|T74)#h9ONqBvp}aLd^zCmx|Iwl!?T@%g9ZR#4 ztvj^&AJHVeYNrYoW_iA@d_83^vmqUSsk(JwAj&lYS66lpV`u`mvbuFeER{H5ig;LA z`d^xg(l!BaACeul?y|BD=jA3+rx~7^yB}6;a9@aBDC01d z@P$0$vBdm~n7~CpO1k!ITnT{6qk0A@X=<3^cgE6Bv^YEIe%5*YtNxQWh`2$pcX4mC zn{ny>%P*|IqkX47IoSD6Q+G^;q;N9m~!5SJshNNjjv$=yw_UL8KC1-r2-e5D^AmwvoFM zAvq6QRhIv+50Lu=};L)6aDOPM^y?TOb*E{p}Tdw^X;eX=Hg+c48C|$TV(2Pd3EX58=3k z3Ok&NR1fO1qeS;1foqiVN4n4R@sMJ2PCr_(F87^RkNN~Y{Uue`)v)_N>>h3?A+rAy zwudZ@*tYOe3Pr>B+9V`^+rUswJ!KIPxJ)xC(1QGv7&eBnk$$nOQ;ppK&>{YUcb!8^ zE)4H_K7TmyVU-bKlAs>}d|P{gDX{Bh!@l8>Yj`kw<_a9-8nj1>cl~Zo(*xgj0=G%w zIL&7>zw8~hcqFboHGn?9m`pJFmctU!{@3kSz)K-FW4efKGutZbhreiRKVR8@M>MhY zg7{6a5R3K#n1c1hN{NpVd}mrA4C`_hq-HKQHk4UbmBr!rl6k6V*~1iX?%!m)pyjO+ zSl44X!q`)yO+D3kyef$^CBz^~DJRv-_oPRxb5=eEDVXX);5)9s{SfvGp~2gh8%gR) zU12=JM)N5tURHj_E=luKzuqgN#~)n5W_n@lU%vg=6!&(#PCI@1u>KAeWF2OlPPo z-o7Wa5R7&pJd*6!Oz+0Bi>)b9&Y?*${_gc#N!aFI#nW{@(p*~Ww9#OoebnX zOK;0YO%%S5v^fBYk88S=S$@Q|tLKR|T_gtQw_t8>3jCHoz9m+^Bzi<+;x;Q}19@FP z<*W6k=vlIC)idM82O%e`NXfo{DU~mD~vaW zPdSO$-VyBs3DJhs+;361tfy$pXdp7A&1BW(MoK2PnnVWi3EV3u#+LDp1P_F?V z>cuOkgmSJmTSd$3cf0G!D>@cYKQ@cw2Kikuy`km1R`&gY|D;&cOsR_o z^y}W-5^dP?QS$loJD=Z@j*|9$Xs-YksF5ypvD9{gNy}z{2h+jrR4&JNav6|o&XE&s zP1B*P(7h$}dRY&=dFkSO;TUsbw&#Z*AgwpR=Zm)6I!~IiZ~4W{WRe4A#?9azoX5DH zEUcn_<+|pz-`5i$NB_d0g6cOMt5*w;v~NG_l%uTu3;#^q^=SbCDPAk!=tBK-bbVnA zUF)W?dKeY^X-Gr%&=P64VTib#r~T4RkLJ(e7vgF5>0|Me_J3zScl?i6gzrGYclhQ; zsnZG9=Ny577TafXDqrVf^3pX#&wwE#Q+U*ddCEtXDhD(~-Ef(*%qTp2?b>7i`!2#* zK4Loryv<=S9_m)7Kkk7WXqq)yEUUT1t2+88|Aa$bcll~vV}iCXz`BgudPaDY#@c{= zzKt1jUes+r5H{iVnoP&nm;ZvIqyG(xDhp}ooc@JJ&-|Z}M}nZM(d%Cfpz1TwnIC{2 z>Mv_anQYv#iIOLIFV6Z<~(VJ4cQF~em z-N|rEKE6znthT=JHAQC}4zSkoJtnulxTbADWkc5T5wT0M)u4Cawz2!>Z@$=7s=0&M zldiThF;Qmk2Iw}UDyLLUl`@^8We*V;VGWF7Rdh1MkJv5-sqk1dFnlQnMsTY?;+T9? zH)8Ro-V^z#gi^dt{mHN*r`pqJ5dv{JWMcO0T)zc4BwZ&88S|nXx2TsJ819UMy=l1j z8jpTL@AM2{wIA)WIX>lA>WtL=+=h(h2^J`)nQvv!=a4)cYaR8ijEnItW{QAGmutB^S*>-QeWmFu(nUGZy$i!(QP)C{=o z0FxpD8Vr|4wRoGB4Sza@g-ss2o(nH57nJtXH}Xs%b^k)~EgotvlZ`DbRvQ|rADL?C zVjiU$RsJQ2Ds6p24Q{qnSiIjq3fiX-(y$l&FJ>y^`m&Hc#VmkIzp7|mw~7aOp{v&k zjKOc(B)ZYg<-2LPlw|nH6_ZpF8IC_%V%C}e#A*e9#h$3mHhbN%XueMK>Z0N1=k-99 zX1)7UeFQ!GN-d(u>5YP2RX;E4`D+rUBt?D_ zc(jKsGhif;>!0m|%S4xq4|Umz9=>}a^o$9af12Ij9#?iiiHlRjETSIj`%kbv{N-Nk z4BM=rInzim_C0QPe1MT~(gTjf$()mSfq4Si@Au|;*5%?m!f)F z{L7E!`n=!f2I>G4RK*=Ue;1J2t{pbHFrR;wY0o25h@VuL9A~}rlpDR}F!xi9Bqoqu zMLO75Ia`cbG+M#t8q?)yaDDq!Lk+tcU$y=j(ztZ|G0_%SB!EzOa48atBy*-L3;_7= zo0f;J9ojj%14B6_*7?+`cM8`h#~&J4&YdaH7T!I8F4V*CVfzJ)yn+W~k89NyZ~9EU zSIw?fwW}bMGj(8K2>~e1@;-@y7n)rFA{w@~q|Tv*l_oPL=e2qmkQ< zzRy>~Y!$kj$0$slJHD!xXT)AY*_g5KMTq)z=G1cix~swwRNc{W#UJ8@e)?qi%aKWvW2qj^b(+A zS~o;sgde*78&xdno3OfGvRQ2%j+>AynUK{C|3IbUZc~#v7SpN^niOM-b8wtDmY*>w zZ;;;4!ZAM@n$i;))6fVM7bb^^_yBWa+!cxNuWyuZxFl5f_EQTkRwkH+vAgQ+X%l_s-2?m%B8foQGVQ;tiL%$a0JJPi z4(Hj-3&vUs{(Q6t-o8UZF}agvZMHRH5-0u75jTg~evXp-KtLkNnyG)%U7-#>E2Yaw zDI!YFmj>bU7z{s@h9qXq4FDFaUG=NW}X6~ zIHvC3p1R@wX4iS8Rq2o9wykQLmdl-b4uT>iNI3{^@3B&!9e6uL1Z~}F15pq-`O7}TG@hi+m;-N2>+*AxGQ+7hm!k-i{S4`w^b!#3`Ql)S zjxY^N?Y%d|Rg_d**RS(0I~+;`HgR*1G5k;!(xZWvdvIEcI1w))mX}_<@KJNAndRf| z4qUU%yi2_toRj;KwV`y-nj-tw1QJ|p)?rcD^Zx}^nw0UY@|O`xJHNqyU$m4eUl_S6 z%9$Vb6LurPB+QhJFCELg-3CY=aWtWPujnt6Z=IjzOwp;;dN`H-mu8iHG=6u@Vuq-T zAhtwgT1?@pl}>a^=QMncZp<a})ZkuN#JrNjTnz z+FG=ApXBN~ir`}cNDA-QdZGvON_f7<{o_>_g)J9W4lm1SQt+}8&6cV8uH#@GE#*TR zJdCHQg!^(@b{B6NQsYuBa9|zwi|0fnHqXN5YOi9NIZvWAqf%m*%){YJ-W{KrJODU} zMhOT<#$W|PAIr+5wqR-qJ_W?C!hUxYcaXBt{bDrS76F~a5^_XiGq)GUSD_K7ARdls zU958{zN>hMtr-`+u5e*_w2wzj&tQ86(5Xw>&zp(jQgh5)#q8^~3q)xIu4aB8#%s*l z%aLHWI!2hAo({$$Yvv{E6kHXZeY8_#xT&mPDp1>fs^~5hUUVHtK!Vg3=O$z-py_M- zw=TodhA)$Dto^)!`Hpb6nrnLBn!-ozxT*f$-14o0n&M~rBS4^>HcA8WLMy?^GJ*uI zda-ZvD+czIq^lFB9aV964=1~Jia3Z;J!j^AnH9$$Q%^Y|yNAfROXM=4OGkBW87l4? zYYxF!+o#~$Y#mkMIJQT9kdEiS=}`L5KoYUm9@pY^%^ISaOKXO97E37Z2@#u*i=nR= z5|h?K$RG3*G=uv-g5<*uRV_{rdCbDZ-dPEqB=?jhN5j~XxbZ&?Ox(zR2#1rqbcnfz-BZ(%_~AzFOC17$FCT2P zRpayxA8?ZdJ-cL+E5dHA?;I~*4*ofYhTzB+GlR37zh^>=BU88Yp*&iO!FZFF)j6On zP48&#HbfFJV-2-d9Jv_v`v*Ee(!9iJA5jyFLb|RN8YW$1=6^P$GGH|LR(qM#j5Lx1 z7#G!7<1jF&nK7gZ(_8(FP*vX8d}ePI6ee<$o>9JaR;a_;>$&jfkk@NHJNI7iJTsLJ z2I%`Cx=~&rUIR@Js^I}GaHK(?=Zx>N7?o#4RXdxzftJBQ)7pj~%k<7)4HdN?kspQ| z*)$C5a_}XC*wn8C+5Wz5Fk|4iR%`DVsA%U@Iz|L?IJmQJ|5ShK0s z*OLj=AP0G%j17D{y!up|eru1R$q+g+Abk(X zrt(0CNC%V4EAkyj@XUXDsPUnaeR`R?Y_bDF%aByOM4e^I$3Gx=`yG=)@9rD5-5&oO zJSxE109g2_DiU0=`OXWdkc6mlQ#k^o-_ZbVFjb9MQ+@bZt~#4) z6DTyB8I+V}*b=yn=;!h2#m;ik*}g0oAPdjA`9xoAQd^JGW`qCgF;m|CO3|U~8qd%+ zVw1g7CHEB89HJeH0N==bY0~hzPhz z=Fn6|g{sru&-ywMC-Lk5@;C)VS9DK`u!8ekc%4eqlK=yvufTj8qwj~biWc zJej4lrNYc>HcgFc>!ImCO>{C3g4yqBpO#$0OP;Vo0koCp-Zprj zTEd9w=u{z?ls;URz|0v{sq!b>Q03v25YT+VoO-XB#|%Z#bHq{9w~@*H9uf5 z^_`~j39bLD>gH|No|_xum<&W@KI@xi12^6UszbhAJP z5C70;jR#lqjd=$Al{H!i-^ow%%9@RrYh@Y4ApPoMNJom*`j^&KihdnhFtZR1!#u*ULm*5*dAJnl_2%{NCyog@*N%W{> zPG$Fx4dg`uBUDZi{vjp(&l=h-*5>fdwBJoNQ6F zgg~g>$!3)7MNWE#A2T?(boGRV^viG29GV?mY<%Dfbj)m=g{M)z#uNAwDI@wMe1@uz zB_gXjGI0kL$8@!`((_!GnDR>C2JK`TGz?7&LrHO1RLUA_k4l@C3 z;p-=Z*;V<%1>BWy0;?b*3pKihH}c>ZJYRyXF|ty0>mZd&@sxA8`a(7g_ntAmq=iSf zzp33RV>-q)MN)Uw_!LJypOph~C>eDE~`*>`lK;x$v5)tM_D?|6^rq^i}l z`>1lJg-iz2sCneK@RXLCc$wFo0&3n>54GVP3fECm1J`Dk6sN{OWZgiH*fB2+`u7eL zzezAmT*S;MwEQY0c$GJ$ZXn4nOsA#!E`N(poP`s1+jUDW&dy+S6gr0|y7hK}oTO)t z-qV=@NMd;~Qw;SinSxW*6Ha+)8B-Nn)9%qfXLko|za&t8;Vl04T74yMoh=Bw|1a$V z6GPY6RUL?$)G~Iz`U!NS9WoLtr~lHuDkD!_gMf!FOPim*$L?$MEXe%*2mWN5!{WrT zutttouH%M8xhp>HiiB#HI4yxFtwCU_&V&#Heuf_;$H;75#$`vT4SW8fKeXN_=eC)W zEg}FU1{6vO^u(7(jmtnmy3vc!caZ=_O^~rVc|$HK+1SjVZvuaJ>1xX#mD<=qsL1h{ z-zAnuiCL~b`R1DLDQrVE2izEn?t!q~wKaZB3>5q2PmdJM8y`LO{V}&DEz2P~QrA4!1^0Q)R5 zgPyVZIPwjewBW(Rj{0E(pKeDGS&EitM z2(1Z{GZKeTO-3f}kG8?JhF2B|FVS#e7}fc<)~=n?F(}&3dllF5U|wVqH-d7$ zO!o*nOC$KDi>Q4A*rjEi6&iL)5`V3b=b?Gq z{Zt3KRbufl(^4_wA4p{15&97Ti4aIPTYzQfeST(HG3FBlDM?w-!K&Uk1ATCbC@kBD zJevf)iW}dPQ4hZvjuB%i;AH*X5qIeIDvBn&#!v|5yIAs3(dsdPVvcq^oPt}x@re1- zBK*+^edhthL}ReyWt)gAcq2v2Ryk_iN%*lRm*wnNItt$8v9Q+bXE2{1e8+>Z_;Nuf zV4M|b8Hlo73z>KAfY6KgUM({!hDL?)G!tICaih~39BQvZbs%Q`r8stbWPsH# zl#^&GibH;V{FvFZu`zJs35R)#lJo!KMl}NX)yZm|HN*<1;uxXuB!51Q6N~)skcYY* z`u`-w@DVXF3yO%QcC)dNM)DTFmG35`jCGAsYm;%2*HFOvGD#%6aF`ItxX7+J{;rsc zxayi}9fsJ;c+gsyA*Xai>x-$mnUj@|5p?k1dGRE~$*Ne#H3KvDyaziyNm#c={$M1& z1PU`rF-UHrl9#G}Sep=@Q4&$>s~xW0nN+i_^ztsL2oKp6iUx6to5B~g z-laM2?Utykmqz2n@DcoCaJr7Z-{yIeX2YP?AQEqqVLBDO!sa1Hr5gUA>vHoJldW|? zDX}iC6GZ4KWtm$(oX!+Hv;VLay#Lfb0f{@qkXeS>YrczSYT(z%N$e(O=jupi@|!zm zCv>7XORqhPxEgK7NsRa|j{a_f2hTt`yxXGa9Wmns19{>`HK^)Z*-O}Lf_^M{ZxfS7 z%8!w_Lk5S02d{tolte7oNgW%$1r8AL_TPbi^L^CQe0I2gqx3Apfq}63f!x2-Q*ygC$h{O6`s^QiP77I&&u1tW;v<0q{-MWspj zj{EhCXWt2Iz|J=*?IP`8gJSTcg!jjX?<5ebS`wqT)9_%aUs1|>yZUx%HCIZ{|8b|U;+S^tm7|#IyKVOqB^Ue6qQK|sDG{n0 z9AN%o#aujJnfuNK0`M>zp1+}6T!sMV%17){{?CszNxWzTVIkcV0-tG6vs59&uqsIq z@4(8ZJ#Zy)`zH}^oc_wV1&h2;rVp0s&58GO5?rad+@w zkQqxp_a*cV@z5N}Pp(z3)c-Vz2VkKbhNhCQgemSzH$DlEzB(R98xxEMN^XqcFHP56 zM0un1vGBQbVKwSBo)W`{^l6`LccfEgt!(zf4fspks0(=3Zh_ih-nst^Nc|^+{FOss z>pukZU2e(l%yrz0x9MCc5V8ITN%?4xAL;nTg&t!=(8gFG~&wO@k(YDG2kO~Bijd- zog&QB#^B1SWg$vMbUfI61}gn>0=YP$YCKNu?4O%KLhZb) zXZ~)nnk-{f=pD^^tg*a-NSOu)X^9jGF01*<+3!7Q$7ZQWgzA0}xb20X(JR38T{@Qx zm1C+u18NJCyYOW?*(8As_ZZv{v$-0_>j#kc%zDD#C{OEX*#a!t z*F%fme=*u+Q7rA>n<|_MU9E~p?6-={mTNHxp?$b~+26lmt0Mj!N1pcka5A0*c@9y4 zqG|;cn6@GLQTjp`QVX_M-rO!$Hm6Vv2gPJ>gsI-dW?Ef>eAj-jZ*8XA!&^0PHk#0r z__!qost8yu7fIDzQR7`6G&~_|wQZ?Zo{rH9F!~GU-ZMv=sE&e+R*l%WGvx^o$>DlS zH2>zEn9E97f24&=QLXve8oI}35ZHx1ojH^PW(>gXj9SzjXjEh{CJmW~t41r3N(=YC z`05yZr|2)|?|~1A<7t@Z%mTvC8agRV&3;~F8~$|LlYryCdK5L4Hse26xA_ zCCx~@pL9=IJuKNk{!Fl^c_|UMyJn!^rhETt7P!-v*IcJ#6{(|K@H&n{HE=W{hPF zai6W~!h1I#v&er#JdFS#tiuObHsyU~{GqUfsXW08RMRtIT|jC>lN#X+pje>?h6hSD zv^!#0Qu#8q$nMus>9SwCQvaE-2~lX$s)Xe=*T3=al+3%;JCgYGcn8j z+r4=IF8!OQgAvxET>Gr9b=XZJX8)t?;v{6Pia6Z0Frxa;SbCafv-d>5P=Jvn98r=`E!}IrH`5_VoZIk--to=@no{te+@3Jux$~jp+Kv;~zu$iK zF`fiAE{4zSBS0mXO9T9q-~~n)>##T=+G#87&*3H71FacXPQjm>QPxIMZx#zoc%E@g zy8S%ayPjNyEs;q0ey@D$6F#yvT6W>(aB!UkaO(;Pg96@EA>DvP?)!-&N1X~bd;9>g zWd(F+No3R(ZkA>lkLEx^xHFCa6@T}{@P`t@aFb>&ULzxRMNgik`Dfq)*K4V{qAjgq zC=%bGS4AJKLO`I?kDBVI{pIY*4FF>1W-GrznfV8vn!f5PyphSi^{=~Z>a$piuIW2y zA#h35)pKLVPUwQK7u1TKE!h9Tw-tv9n4}rETofPD3Ul4k0&+EZQXj1~MUI+*QM#13 za$R_&Ur+kFQ6~N)?B*8;*P`Kv*}@4O#5HB`YM89-p+$%?Z|k$tltr(3Zxe}yWhHrGY0-5#=wMyn(>0EEPb`eU{k(R~mz{W?)NSqf0%uje zG%#|JD#p-;s63XZ5rp0l1*+a0&sl=faC=eqI^iKcS z#8_4KJU1RF{6+6NhuU^1Ebo?4qHhd1DWKC9ITbAF<^h|zSouSsw19sl1(^T{dl-ld zdw>~Cu~CZ15Z}Xr2;TbD5c;O}C5}^n8Qo)$!%JB6!Iu910!a}(fqqESd@XV4M9d^! z%*6I&#N5#|2Jo-jD?cC}Xd=xYuU|_|cj?00C3#kJ0Mo!6WL?kI4{Ca|CRaSs20l)h zYqw(rVm2WiOUl9s`f296HzcHbxeGbQhPz2|{>%R`Qvun+xL%a7GtGJ(Z+8=@|Bi9YY}sSxT(>$YlkC+)XwSm--)Y z?4b~1HZ*OKeEh5l-tg||-%$u4VeL8TA zMDMkJv^SY@i10J@CgW}9oH2nev%ijr0zoYigV^`0(XvVQN}D%Yiqp=Zt|(XFU@U#X z_9gk(`@sTDjzG(Z@O^(`eil4@$Y&2K|ObKVg zNm?if-6NJJ!Afy~lg&0eqVoA0QDtVtj;!caG0xiJQC0u{IVtR`QQjEMq(qiF=TfSy zd?)DoO&GkYzkzCfkMo#j_71hwK`)o^RWH1+cySN`V#L;KFD3DPecV@9uQjy@L~W+V zbsQWA1GcaJ4x>TYM&2lT3U`O^xCtOMu}2Xr6x!*1jR%3ta*B`lH- z*;^2EfjWO`T<*H>K#UtKW7oK}-`rkU4*iwJVbvok-J_lJ^V3>0_y{I2gb(ITo+NYv81qWtF+vHb8mEPuqjPgS|bxb-z>-Z>>jJFY6% zZ1&2oLDd#D&99U%xijt$MROvhTRC+4ZNZc1RgRv`+4fCU_e|SIn>S#bouo7G1b^j? zUqPJ`%-;t7Fqz-64>p_ot~xLf?IymsIoYR1zI)ibiY~)$Bf@JOn!SkQla(7$@TZ68 z+FLCIKgvtDIk>^B^O>paE@GnlJE2XodU#QAng2rQJl2{*Q8uYJ{oq!me0kK;-T*2u zIz#ZM1RaC+v(&A7=u%6JUEOl`;ecedxXq)D4~Ua$LeD*;_uYKab|b4zYYe@tQ#IxX z-yep#P`FR-Jf&2;b2sa|pq2ReFE9`Tb~KlOgmq-v91c!;_RSkJz4f;6**xkf+8L7F z#73Gk{vsDfdo=kl&fV|3MIeYF^<5Jn%JSw2iPbhqz*w!Oo^C48rdb&JpWlj0$+lq!%-i5PiWL?ZPo z(tuy(Avi)`-3nuLy9sdw^zYSx!dOE9TR?ObSMvQ$PC4;A`*9_yKKWY=l7O0v}Y174ulo!uy&W zrF#qatjjy~mws?b1Z4lrAHcm_bO|;0>XRnToKjehX?nrC8#-Sz0Xy{ZNprJlwNpLK z^FWzmRLMK_rP?~t;rPxb4sHG zq_U=n-4owNRTXnZEJz(*_cBc7Ulo~(e)xl4;UZ5nxaTe9`jbh|_%J@mTUm#KPrH{i zDd$aQN4TC5c|-9lroR!sLLp?sAw{7N6Uxm7NnCLJ^ZcM(O>HLyoMf8JRGw4?%JnTC z@1aYNJap+vs^1|Xz8@oG>JeLuO(lY z(8WKnJy>zWN7qJ{E1x1JnD1|A>-=O``O!Q2k=*Eyq<>h2DXor{Ms*3J^>*6z(%CT0AsARzyo zW!^kYfccL^v=0;_VncU?to{gxrCnWJQh=YlNPf<0_gOsenQY#_i%kDrEU`LyCU-GW z`P0T^m-x3+wfS-~QTr$J%eoi*V|lL*mZPd@J2k(x|3P59Uc@YF=h?vd^-+CmYNg-8 zR&GEoRWob@r}TmeEN3b&#LeqfkyAp}mRm{9JoANLrz3_8*3;XrzAl^;FIl`o9Wv0F zHO(aKB_vX!j>aIX^%pl6@AXWuBJhkXDXcN7x>@j@wAiGZO_lVT(-0zPbk=-rI zxPFh$jsIEGU9RN=!uFs0nrBoKm(bH=12Ip_Tfd~qTmNLjMLY6uk72zjrAZ`uX0JaY zk&6M2Wp)_qk*XIh)tX{wv$Q<(2&QZb-@UvjDpn3B;(GcdrRNcg*igjRJdZGuqz=;8 zXqKs~SV7Oqmb!WU*Q<0EcLtze=#~&Uj&9ZSQW9ekmT+D6vzE)g`|ihIyog-c$G>Xn zgIzSY%#Sx%Yl!BkXtaIq&?29h@)q+22l=IaQVivC&VVZ4;`xY~#w~{}lI> zHl7Isfah~z&R6?-NBQ3+1Li075>4kX@}q{T7+IJ*QHZ~7n;UNzDg1WRH}Q2Iu)Lt4lx zTjUs4(rSTI(TA6WJ#-0vqyT1;2u{>OjGc6<4di=?`+ZNFasWH);De;pQ!bVV$c02h z9xV`2$%Dq%yVFT4O;=q#aJ*`cCi{G$wW?{F2aT>yY>Onrz6_-Cd>(i^R({IQN75k$DNsQ2`n*pBgU} zk#u!veJ|+4HP2hdyTs>haI!55Df|9>Zh_dGNk}VO-d%ca9g8-YC$g12>vA=5V~BSb zPC{~}_vvHxm(_o-Nw~)r_ae}neTKqH*xDt!KErXZ~&Ea3rtjwYNV^^(Ee8&0#T*k)r8Y!P&0{ zVpn;$iLD+l6f%x&ck#IH(JCo(mOV|tkJ+6_KyU9&h(QuhAIn^MSki_E4LGBaFoG=P z?5Epto=F%zmyCj0Vu&ZrjnX)s#kJ?Ae7EMLhlO80TTp6mE)%)!H&p4c+I@5$XArT7 zFB)>ht14WWxO|OM&uxv#5^Ng4G**SY>*DeqO_3)*3%$-tCMqN{fYa8J6Km_aB#}%g z+%?g(ABlQqI)834NVf2G6CTNJr0D6l)v`R&cQ0IUFwc$gO?9lmJDS6I-qj(p2imEc zJT@S;d27Zcjf_Ou;@T&Z$oD5Z_aQU&9=gSq2hb2(3LDRX>Kc|M=-g^3-unFcjf-tP*f` zM#^pOVw7lc3%Bk^m3}P94-H!0doRvvIc#KLo(*-xBc%wMbm=<#HIgD?rjOK@(z!() z2T|FgBscs_T=?j&fwN=F1M?sMEP`QzNvt}ym`=uwY${ z;qM~J>Czb?PE10cUVS`Vv$vH^`+G&E9%Q?K!M+a+eo)+WO}lcx_&FL=iYs;gW9Fch zQC0dA4lKMqfB4=nBG-;NaT;S?Y~5GwU_b*$_>ss5zUCU zqS0>%G^3Dw@co$4aF0{A;oIP+I$U2XPr1&28y;(=US0FNYbpGX8?4<-aIu6d2Pl$Jd|PHWu;Y52IZPEKflZi~CdPh4gOHB{r?AC4-&CUyEm-&7MRaqk(= zr?Y{4!IO6m;}vW9Tpwxa=?lg+n@sT+FmYj4FMPB=fu$ia`~vk`M_GZYjx3%;B+DH4 zQp`JCBumKmIV(_^%LaqQxNLHN&t+Y@uQ^Qhl+sLdsp*s+KxHzX1mgNOYAk`EYODTO zaNpLMs8Vm|3#)WxTva&ZFk0oS%|nYSD9vLFsT1-kbp*q0-s6e9qwy7WQJZ@wV>=R+ zxoeIOJ2ox>2IAPTf93V=Y_(HIy6UBA^2FalwM{40^gDS^E6cNap#rLe>svMT^aG1j zUY5*B3wu*)ub2iT=tUGiSfboE1OB$&p>wz;L7wKuH(0!@rS%SXf^>H@NcNibBIOgg zyKLE>X8gdrLPI~PlX8l8biORVEM}@E;jUlZNi&(RWxmAQ0sjj{hz>s81h2BR3Sh8B zNV`H3eDMKPK%Ow`GbcN!a*{s^O$v;rk5k(gutWyl(zWp1Be5)Nh7tQ7_;;k(XYx&z zSZ>ld#EQzBK7}1cNqs8lZV24)A~rsxlpH#^#ha(y86sCWPRy)Sw0XO5YV5nSZQr3D z!Ru65WRXyeCKjxNYJig=(rkWr<@`Gt;stHeL(bPY0RU^;7Ec(xqn=&4B6iN0AV)VL)7ZL#S2 z`-XTC@B~_R^8%Jyet*wz5w@N@>t9`W5v-^ouOav0byk#Tm?REm6p~`2du1t!F92Ak zAnJ=RTlzVB`4I(|u@nZ6C;BM0epZ!iUUvOwc{UIhB1gc-vu zKluYPP0MH3-Y8in##`#xT!!m$b!fnpIQ?09fm`POXQ<+q-=pUgb_racA*@2d1b(aM z1^*9IXC2kl8bJV{{BeMWjTL9vvc`lN=!-&FBpn z-Q6&@``hPxe!p{m|L)w~vz^`hJa^CQ{eC~hWxe;IsLM!6=FLET5H&rVsf5n_i{7mP78PCaxaE8INN}7%Pdx70 zqMC*is`NtcoVNKY;nDoVH2rb%uif;q&Oh_jK1TI#Bn@!|Jly~8_3FJ?@Wh2`XH1OS zCcXXj^6G@`C9}0wh*!ypei@({0}c46_=rZNsfK8R6hd^@Q+SSykKqocrDT=EcF^n9 z%v}_%hHPwDa`pBVgF&!#X8?Y;h9*(;jUw0Nu?C5h(7P}{P|U42`Keh3g#~3I$0ZZ& zwxX-A?R~)3??4`f0t2bgKc|?M`vaFJu0&AItBE&TPY5icwDHB2q9p3f09^O`ZFzY#`&!%&0;Co#ZoaDRZ4eNI% z)h|D|@tQ`+3S)nJrHOORsQn)g}WYJJc5WY_hMWc?;f>)ubw8cq65?#u+m2li28AK+h% zKq8qp1(u`E6h;#{!#MoE?LLMnHs6Y!RKRocn>p=f1TjN^Ot7VmbiPdC-MSRq3$7OZ^iTZ$aRn2XZqw(CtD5&8q*+E z*Ng)44Ka@S>0s!5GCqM%>GT16I!*%Lt(*B{D0p3V^O~ad`&mYa2MnsX0PWUKP1Xz9 zMI-a#ar|A-ZM*jm(-J4gfct=y`d~AY3q!4!g)Ciu?R~7@{N?aTGgBsC=q;tOUxmYcmgt!nn%D&*g!Lw@MU zT0VHw!d|QFzxum&TYyt1&(CzguE@Qcb1*!FMot>H2A?Xx?n589oW<_zE&FB&BdUg! zoyZRv20sBFXF%IW=2-{C^~65=15zzk4<}Q-LrvRPmwa(Q>6=g0hbA&^zP(REqMfu# z56zs#S2GAAfzaI}N!#_y3E+I;nn#8F0GV%?T^~gkPC8mkQW@^A#_5&$?$@w#fcRI+ zfZ~#rZxf-KDCo&b0Js7ktSEf7R?W!u9z?xh0TKtztGw~yuH;E0_c$h2VIt8D=}niW z+(G}7{--3Y@gBPLSu(V}CSbI4xkSGk^U;zqKRyd;YgYeO7Q5*Ty(+1-K{(K>7_VFV zU1mKWV=SxzFg?h=pCx~WrLp=%f9!?%?z;7oRtr@z%a-Vj`D{-XYy-hYau;9LnZniC zp>tAr=@sDK2+=%Q_jjlK-L@Dc_+i+G+7;fu7zJ~-H@6j|hDfhVaC)^s zjO1Zka$x||eAhzL4O-c7Atkb*BymxY{|d!Jnfm48I9{@q>^iIRth@u4X!y1%|8Z%k zj?4r;*Ig;0kONyUS-GrWC3Mz*!K#}uUz6#l-FTUVXp#wiyIFlg@E|GZrpRSM1&0L& zhUI|94j?A;iG<>^EPnxFKG?aTBasFQc!>EJp<*RFElx;nUW>2n)Fcg8eU51gFiAG#_pAGESU<@X!hudZauwM$GYJl&~ff(dzYMLe0O zOE=n*y#;*mKG8s`bO>uNzz6P9p!Uuu@gUt!SS#^$Saa zv~U$7Gxs>_dPfF4nOkH6R7{h-*dZtZox;KzWBe<*4J*6q`Bd)7aopEBiSr_xx5!*w zAiX2QuGbFVfSqV%sdD;wll;~#FG8)?t2ep6!2VdqY|gmrP>2MMQ& zu>{)SeIOW?%;OnbZb%&s+IY;FEjlXS$NWX-GDD`-y`S9Dn%*TJN1CjV$j5&5Rr0ZI zVZ3mrqjbGL@}K|r!)exKcS&64nAQ2&$$rq@>*3!+N#CVPOp1n~o7>>Ny$IGRAVt{+ zU#yG@#3{dDDn0pbG^7RK&qF?cPS23bzq=?ol`E^4``{?&o_)HDQgWfwTix?{KWO0T z=KhH1E8ITcB}OC-N}oe9@>PP~!&SD7y66^2}syZM=kw)8FDTF7ymRPKfiR<^m4%cr(DV4y7ccjDI zlZdj9r68mZ&rZo^s~`88@3_F}&MK^ueU)+j;DJ5zlevp@F<|6mIqSOm%TR7m>oF(5 zec&G<@^0%IO;EEM;~myIc#v>J5S5>i^DFj+Q7yewF0-9kVr`0WhtjXTUz+t$)-~^4 z8+Xz%y3=APHlU^qg;*N?v0TCSm4|C)DA$Y3f*7?H<#W(UekGfXdRk39_@{P24x1x|o!i_tgS5F658wBRa{%d{bQ!zMLCRX`b z;J)(tGNgaZuH9PGPj{3qU}rygA3$1pZ%Efa-jCT^#bBb3p|dM9n*)B=h?9$DorYml zd#zs~iSJBN*^ZEVu_(81`E)U3NOD+Zpz!M)dtv*Q(@jFmi+&FWaHKFat?8ZtR2{x4 zoKpk>J+FW63i{7cLp5jO>Bw)6Oq%!8Ps1tNhNh5FH0w7BG9Ie}0gQ@#zwpukHRG!6 z?bjX^XRbwW$57DgW;^7yD9)&UmM5r!un-+@@g8XT9Bl7YUkU=9mBx zOP!*As*n@xpzP_;byfo5IM2-~1kPwLpUggFZHFu`!Cq>uj`kTNqwkrhQTIP^bZNWe zy9O?Q!K8{8>(I4+a0eky#Cz;oe@CbD(-y$%$WDFD`Wo^r7 z%3<)Y>hb)7TRiM|TZ_oVF79x7_UI3UuK()ouDy*0J{psi^HCo9ts1URsnCq zh8@HOzs)_5a*6|Ydb$2Q4>FUmG9nRO4hYN90}?F>gPI85G^Bq}+SsGyxT0Pbo5@X?sH8oYRLv+2<9I;ujOU?MbG?6ITg<9HIZ zxY}==uOGVBAsN~?D+he;1it+U9lBNV0zU6sxy-lj{v>HGpbp{+-&nnRXKTY%cosaG9S~gPWQ_`AQXLmTalCmF zo7wnqP;NgSd;(Y-W4gpG~09oU6;+ZQwGd0P>*m zf1uXOvm(M68$6r2i1JLw3`YtCxm@ecc|X6}qbb*Qo-7w;t9kc#@yOb@ZAKUqyp0(X zgCGKT0IO@<87>Hn-`9p0TSET*q#79vv3oUYuih=`h2kdT>F|zzDk4w+nqEM>jQ7op z=r8-B0IGJlx%0uoZ+!APll9~>s8;6CAu-~yUIEGDT08q_nuLaD>%L{|{8SZqU5YQ`OBwiPEaF)xRfaa#%Ohw@@#;SnM8{!KY`_&#Gl9?yDZ^6 zx$9r#x11zJPC+YD#8ZvDkA{8ogNv6jwh}v{`RH*zp#Y*-nwUsD3)G>R5M|XaOq1GVh1?G4bBhQriW<%%T+fX_z{K`^(q5kCk(p-Kyei_kRfBGhkI-R% zrgYbL!7aWTl$14}@$q{!FooFHEy}p!gE<^vCjhsvfc>0E2K3s7Iarp=mmskcqW@Ez zcVF#Qis%t~OFfKvwSg_7>E8oV3=`Ezgx;UkK}M1ZC6xU#3c6#Zuj7sIh;+$|d^i&> z8P=#i%(whwjqKXOxGg0-^@1bBoIRg}`Qq?f`h-LD=Oiz)P@~;_eA;l~=-3(W5CGky z{#y=Z61N;}i1-%}KhTgfV)GzRj$2u-(8;?>7@B=)n1Ys z^xEUR%y%i^Mx3L?Ds?vz#2#(Qy>FpGG+&P3K~9Me$~{4RI$IAp9IC~Y=55NXRXwoF zyT*z8R_jS{_N2~I%Qh311C1-6{S(axgnpW5qOLF<+tQMbK@fJ~8=+^>7$oCn&h4$1 zV{DKoK7P*AIB>sVy`VrRi>r2GDCeEp-1vsn(0iQksQ<$R1`?xx)M%jJ+WonvGWJ2M zZ(M^BZolvnQ-}bsMUDY0!hRqL>mRk$pXpv}I>D&f3wSpAX&$kvQ+K3}3BWf)%sII# ze7x8vTHzH!xn^i6p(&1isF>4l`;DI61u@e83E_53FLy1GAu=OM&2uF?bm7rh82r^l zIy)$hjI9G;b>J<}eeJxW5%bK)eEzgESAe}X>AO@wKa2{+ zG-NGkb}$|j<_W?V{v7vL^b>W~1`l#+&(PGt~|(FK_OS-Fa@TW0d=< z#5f%vudS98arfg{)Tb|2s_sVe=TN2R?nZg%+^+z%--TMyY|U8h%@KYgqEcDv=br3r zqk0}}YcHP4W&7k(X4Fiy3;Jx>_P4C2#XiaT6)havuOrv7tDpAsEC2%(v{6o0 zkoPU`>J`9AtwCk#+hltWF(7}JD)VO|#a59r+4YjsWMS@cI8)9mT^9KHeOsnT!es3P z_*i_5l&QG3x_n>W!5aC3Ymi2B^6GRONd;|{W%uaymhgxS;6F}Uvw%Tol@6HGm!W*S zjSoZiIx31@ml#WdOoBS)x?XMz>8snk)nR=*NCxK8g}(z2r6i?Q7jZwXD!2nA`UWJi zX}JrR;!V~JvKBE9p&tcRSZKXK&Z(5K6J;cl!Z);_*?&0nR(0bV4{Rgp7^z}|>naS# zHEMyCJUx91k$`7;-d{6sdDyMEa1Aa{v`LS+MXhT))&0p83)tzNeaWIBMA-_|>frlS zA$tFsUn&4QbjK}-`KtIea%H92NaKwY`#c}R&m0DG-j0BaMNQE&kSUUp;isCG{X9N;f96-2e&VLUf^scfL-z!O3p29c{vlglRb4E$PFnghY=0h*X9vLNzFE(VqQ^*ge z&KF?SIZCP-uk{MNWWeYI4J$sQmN5a+56j{YA~|u7%poiSNAX5-YKe-$y}{lY_recPK7S<&);~Ts#_i zG))XSY`eE{xC^FiynS?|ulXJ*-Vx0`yigkW%6R9^tIT6qb^I|%UMO2wC9qXi6Qp*H zw_<}jv@BhuNjy}b%j}O`e&s4St5>m1~J?*m7clJPnVyU=L8M<_pgf^n;afk(k1>m0b+VTg}tU^2KP@09cr( z`eoh%vlE<={X>nCC9s~3v>o<0>_}(km8-xr;R`tri$IX{J3AJ){8u#vxt!;XC4z}( z0;+xHV+aLiUVBpR-ie{;Cdm%-L6@FwG!r$U-M?GH^B0m@LsPgNh~I~m5DRCi@Ozxy zWUUQ<98ukS@0T!&FM#Nb3Kxva=yRGAd%2&FYcH9~hh>Hsv!p1PfTH+Q;(l=K13d8o z;Hw@>KPK}`HGedj{1Y#Jn9W>D(2lasSmZEPNY-ga!*!@g4j7-h;JxL&REA$aaL7o( z2aX9h3^(V%9Kp~|W6IwL4){-`>t27VV1#GDB#dOY8xt77CLSNk`|sw?dZF1j z7do?shZ={Jk7Uvpp?v#FDIzU9PK}yD_Oy!1rr10|>C$CbL7-`RafVM<@7G$vC-;$5 z+xd`P{m@j#y>rT2x#LVG02*H2*#I*Jqn8TYI$T8S2IeQ4BAO<~xzm z=5-2o!5{D?#lEReVVZ{-@bwnIAv_oRUb=r<^jO=2#?#xQPhul{5eTLp%)g3Y@4yA3 zz_asjo89}b)n(tIQ|DA%n`WPTtSQ;cX1kqH-J3R4Zo!fFf>#B4Is;6)n z1DQhXG3WN|sHDpTZlKztEv297+UqCV_gj>@9PciB{C9FA6bJlCV}(=}3<^~qRKA3r zpqEnOAzATIVhE&^=*eh(N36_jlSQ7#U^Ly3eV)--pjI;cC_qdlE}f=VeWcEpQ&!5vha_}*3jd%stqt!Tu1Yfez9#^iQK1e;%WO3VBLMZ7NHb!y5wHa@}AQI zC;Hg!kZ6y)6EfKacjr_(@ z?qKu5qCkogZ8_2Sebkw-H>pK*sZMtCt}ohm-F*C4T%n$4S;kg>e9~?yj?}t^KQ_x7 z(yFV=6uH__ecsJEFM!KDhbGdzW@yb&C|~7`h1SRqnRWE<$r>4^gUkF+x1=^rAPB4* zmaQ%NSPn>Q&2Irz30nu}IA72Zmdi^Oogxe2&>HK$G_S#`^>jJY5{WbSA_oRG@7eyb zX?BMuOc~yU$uA^EnR3G`ow;7op8G&r4)&fY%#B!#NGjKb-1m_kKSsE5>XXWR;Z#?c z{66Iw<(@@33a&nWVXBEdM(yW0&)!ue3EpjEA*s?p-)-QzntX`Pb&mgaU$7#f#}VTg zjiUOy+b-c5K0=E^{0SOzOObWpI*Uv zcPkh?z5@oD3?V;x6SkfK-XTuTQgel8;WRK&cO!J$KHPUB^0Eg}u%zEdD@RnTKFyXY zq1FHFTN#ANm-)u+BZW7QZBNv~U_72n0VLaBnFId{>W#7XnqZOmmEf~LEc|PkZ&cx~ zS-l01!#9~qjq&mX`7jekkS$gr!z+1vzY*lIkbFe8KzU;8IU<1d9zux4&i$wdiBXqg zgm)M5oH}rYkjs+ff>p?`-(jSFYkI#TXf8Kqc;<5NGT&AVuS?qVLu{_0k=MMM;Ah6` zn9tY47Xsd64u}h>fOIn#zdSYcZ9#D}H0CRn380CcvIM41#?`VkMGr^Os!|37sqO@D zCV{_`P2nhU=ZDcxS7tA=?3sVxXSqH68gGnfNI2?9##a;LmnzE^D-8}Jl~YI}Eq~{s zhIaw_Mt#VVDu0oBvZ4q)k5)^fm*tO{6-|rjgV4#sW8TcHS<~e154`1CLEv) zCgQ~NE|B9DWB?C0DH6~m%%#M^zH!{xd>}qxUSM+`yH|Ano=J@3a+;D@!!(V((vUmK zs|fbcN47`Y@C{)}1_V!PUFd2Yuw?~<-qor-R@R43>L4-u7vysS2KB`bQM8HPz_y0Q$<6Xkb5g2~B#eDA^ZZ2DAG1T8m><%1~{J)F+5Gy7-%t~>SUf$p!$ zV0w)H5EsP)BiGr+zc2;qS4KS`lzywAR!wHuPnXEBNv*k;$l^0sTFD42_C~J3tKR*i zc1g50f13}Nv`74?l;aW&gYEhkG`F{|p@yo$wt=OwAK{_E9{>u(nijY$?vaO#0P=f{ zk8u|$>%xhWgPr{Y(F=<;vYu@>Yafe=TV?!tx@2Dq<5C|ex!E;sXZaO%W?jC8_50xM zt&@7@#uXWh_Je^QaF^H4FMszNPg#BF(AGN7kvsfDtVUzvn_qC8*BksNl{rPu*{`q& zOF*9bG#rRR(D-Gp3j2||mqN1NB}f<5eqY`eO8ja;_I0+AZ0_cG!0VlE1CCSiUUT+J zyHzg1{#Z#YNv)#vX~4c#bj5d*JeDwTr)+218sc)IKbzg?i5J}qF01B@BxDC~?l?+T z_?W|Bm57a_o-t}2E0t)O8RA;8Ng5pRdkUersJOZmJ7~*P4wDc9(~@g|;@_Yog<{3? zYFrfOfY$F;B3`;_AIYPp-!=^)I)IF4a4*8Pc#`qphSjIP+y?uK!EelNO8u};b=s=R zS7*D&z5xX72XV1Omr9Ul5ZU{~Vn=0lKs0{Xbqsp(g9s*P$p#9S3Y$6xnUmTc+)Et2 z)40T&DRl=lAC|KH)hET<&;}Fd7F|QCS}aezYcwwBTM>br9ma@^iiIVsJkji93DM*r z5e@eM1%&+}sv>Hbvb9fmiHm@ko6((E!U;{}$+FBrarPxk@jxN!!~Kk0s^e5#Dgq`4k0 z+TfbK?K{5I%epsPow1}Jkka>eZ!^m9;PV$$ZtLhvJ^WJU76!lgxfUB!G&8Flw zkk7o?vYwI55pv?`R-aqeeqW;A;uK0wZAz<@VH&; ze6*VVOco{*&OSwLq4uCTHbB8oSXs2b+O2S&c0km`4>XEps zGJxjEO2B58AEuLhaW>rjk?n>p_@Q<6Q;~0~EuSp3BlG41&LXelK7=|0g@`aj0_GvU z1P06i;9(v3Y+z6aJJIzp3W*%~$}6}+%seg=U)v}|RhL-$jUvCeBDaSUv5w<>Zq$h$ zN8v&-uj}f?t(CqLo&`$cLzPM7+Q#@I@>#&kJzJU_+&lzODU{b;Iad2Uxl3h*`HA^$ zMfuaAlbiL*fkmId6@Hczpw({QC!m?I=37I5;X!}dGfXuZi53V)_BDeR5=7fDL|BYz z@_XpDK6s!Uds(iJI04Rntmj9IwuqNm>7wg*Y$B3i=J?Ddh;9g2oo4UmmSiHR;~~va zKMV7jk!g+8@8>R8I&5i}{+&O#jIe#EX|i*bX9m6LzCVX+?Acf4+VZx;--iYS}HzvV|o z*M>w3*Tl>0wd{<;^KUf`h_0oD1?E{^y~D4DCU@z~1}u2$U5LMgDr4%6%l%2F-?Fkr zgdy2-bWS)psXJC(vE9`DM76H0Fe6G4XUFd|+IM|4!`1^Kv|(O2rz{kBz>PfLloMxp ztC=lI@PPX(*-fJ~9!ON?B?pAmo@kG9jT*)H$z1!Y{?0;#Cn#im@buT9-gFVXQ&$-q zbn@&;h?EoODX?P6RFDNM!3njeZY@DZz$aPnr{|$S#3u8w zZ0g#4FAUnW(_-DY)`QS`v*5o?yLe*k1o*ZrOUu6lw)U-l6b=WNfsR2-3i|^z@w0d) zHWp??7B}QFr@s21p)A!6GPCDI8*DAxTnWjgUt&zuJWt6DH1aDJgbag!#Y0H{wzH<5 zX^t)H`zbB9fDe94sgJvWw%eSubyfODYd+K{mNP62j{3*667`K3dALn}QtvQ`4iknW zGKWYMQheV82V0*3o9?paRyCWMGhsQOa){fUj;#gPpG*DH5@I0HT_i6~NL;FJJKyjr z_aFH(yiO|(Sb29hZH)ej|HM~McDs~pCRa747d?HZS^P$Cpw^3J&Ah+13Q98<=yy`1 zuf4o+cSPkB5fB`2bDf~($tK%V=J_9+JO%CD1=Br5->$sh=^N70g*f?^`w%n&f%WyQ1f-UH53E!uPpg^y`i+wd&hR zWR>d=EiV~inr-lE+KbdFRc!R;`GVDzCzh=nhtkI>2O;tCm4X*F)O+qz3dy8% zmG^zz(g=f95q+a9z?zZ;Hx7_M0`G}7wUL;Ag^nIKs-)oIu%U0G)<&{xJZ0UeN=mtB z&!Ddz7+hNr`?K+56!MO7ao;ZeMizStn)VvgeP10#K>w_M&cTKFhfP1l3YwH^JG30n z)-Kno2ZWO;o8$Js^kf;T(+`31rDXi+Z$23mY|WaamD8Z~8G*R7 z7YxxGup^^75j|enY6P4p^WZlF#IC`H!$slwjX2HthEn^TtFB&=T6=Gp3%?ZQyx)Vn)|gpGU= z+V$hSkJM^Ke5Ofkg;?PKp+@rM@k~(`$@u+ohyRru{xQ}bMl1YB_biED#2%*x>FyCd z8%;zV9696*zLh<>VMG~i)~o80<SABrAp!UaiSAm#w zvJ8LZ_87H1p_ohn-x0+ZbccS45tVb$y&_(*_T3-+PxKn2dG55WCfC17+A9w}*7uXGD6q z!`_>Dll*Y@Q)#I<#y|w%N#!=Ri7m1Q&f@pV(nF>H*iL~D zJMzax>fOBxENVe!$M#En9~D22)M~k$aYCESs-;rItIwMmn-mSWWk!pVA=h)hXl=D?+ z!L8^_6Ad2}qGcBF=bkm6_oQb3C_yeH;%5Xf79@aeAC@dQ2&z@qbo?-=x(>V&R>uFU z7)zWZ-yFHKW(yru7V4PyUke(mw(oCwy|f>HPvAE9D&kWvlW3D*jZE63-|B^*syuN3 zK_R3Q$@YBM8BR``v;P~g7qXrGeZfvU&2p32)iU{m|}b;xR|6k*Vwh zP4VA6M-tiTRO3YEI0vZBk_({Zn;qTGsh5BvludgC>5LVv0CzpHAk6d z0lMwOSA?G5b}pV@!+XXws`|%LUoq=S¬-QVedk9~Zw}iNMWe^`d{17v>*yu`VKO zLYedG=m)hxR(A?Wr9zb5P#2ChP>@i?iW@+0Grv?ncZ z&F|k|jh6~+&~=a8xwlfMSDvT8yBx3<)Vi5VIS|;A2Jhfe5nQ<4_IcNr#B$=30*Q~+ zy(e0Bo;Fzq-K(%_=xLhdx`a%D=NJtw|Cj>~flHL#{E>Ajz6dUXyRP0)rpyT;mj7Xv zcDJCq_hG$kK4in|Vf@>(s;jS%kj6`QIBzrlCnw0>yRv5;^QQ6BcC&t{>X5v`zy0+! zF7{t_IQUO=maE%`kdvt$bfbt z6K}Hnbw!LhFJv$17phi=&>`c@A#PB~78akSaQ?%wF*XA=Nw>(wH_c-*BIjmC}3zhtN`Qd+AE7uQ&<)0=$I49MYU#ZsDm&g%zMWhNcCiBw5*`-jXB6PB|7{|O{hDZ@!GY77(Xn^t+Oa8$HHSmi5B z@+C}>&ErvF%(H9e)p(CCuJ+rCl#E2n8W7!BhXra}_)_4XCq7AeBEf&EI&*Up_WiJS z=b>h4o9m`@3TkRTdBx9;-^^Cm2?B{#@ zuqZO6I9h^hBQ%__&kv7TcpKsJJ%ChN4 zV6O-9*sXKLi-zjc`Q>A1#}EaQ0fQ$x9Wx_8n)Tgz^SunzdzAvmj^8R};;6 z1u`Dx_Q>tAE9^LaLx2LAXgB}e12&WE5GKs&X18E$4lzK50q9Y>MQLj_k@^PewB{(Fmk z3~xZcsgs%g)=NGGro@;?NJ!w0a(vNx^8y2yO;~6qYpX+WKlluLZRApXQDcZ3jt~7Q z{F3D!$coIQU|AIo>LVT>xfM2S&zsg`qo#QM>{0IJnIyUEBTZQ6dDB}oY@@X{9zFh^ z6Sfw-B}$3x3YR3dkI#*&7e1mKVh&q=+P0A)t&$PO9!(mD66hka%kGC4iETKym^(s8 z8T!XE9YT1hMvV5~2~BsDDq}f|+T-O9C%~I@{nhafOl&asgMZp<&ik<>rmqIHZ!b1X zYL}MR-xYKK7uSlNncTfe{J5LN=49a-6EMuX84qn1D|629nNGnd&+Z~rvEyY-mR`Jy zv~IS4=!wHRi>@$VmCG*rX&YS@H&lq)j>5$3`zf^gZSGo*=AlvarBxwuMuT4N`IF=- zQ?3C4q|QQu5M>l+P5%->M!jC38u;^9%ax>Cyk=VaTrL=-Fh(|+#Q!)hd*DBXa5QOi zIF(PAOqEzRopqQckzyh#^vBL}z^?V52>spod_4JrrQSKH!r7Z5y}fubs(`wpa3SXV z!~a0zE4LpKx;4(lC21cdw3i$p!)JtfIv2d^bo!c8(bHIN+j9L#zymv%bX5`j9b^54 zKr>Aw=xx*9PraOyA$3T6cK>YP3bNmFUZhU0AQ(H^MEhX+cIfNymMiP7gs;k8=(Gq) zb?(rR&t%chM!ysPnh8e>yMR378$Z?W26~?G4O5Vmr{{SuHgM3q*f@_0`D(#0Bpbdr z+$!jv&g$`KLz;*&08}3)7~T*LKf2g;8mTg$=8|C-c8p<&!Ia|E-~)ZUZpwndKzq`@82^xNe1>xU@9WWL3jtL^-U zE9vIO{mdVtJI{LdJZ(_hWy$N?^P$4cw62;edzO@kV$V@2hN)IRjpCt)HzDu@`yMHg1pNjj%##iUo)hA9ieT$J1$ve`}RkD zty%Qr$4`0ncuh!->WU1>O3PS*dpXP0-enK zH+gRN66Z1oux4|+n;+7CG1U*BY(ua1CCfcHN(#L7=lL3hXbnafVf@vVy`t*kW!^Ml zW_@uU04&!Yxf?HXmsa=W2ie#NErW^D|(47x(g>wOlkJLPs0Z=d0y+n{PJX<62lF@uEG!_Tby}D3IgJ^Dsus zDsGollHgl5Rf=&BQE()cBZ&b?u&$fFH;HI4_kkvh`7y_6PvDpNw^+y>xA{+g1yR_n z6qAoUe*l7jM+UcKg3$N>=!AEOvz8rI>x^=quLs*Tyr5fM&3O1%%*YASjb|{ybLn>W zEBn(@N1BB;+TxePmY!Gm+bzEeatH-H-~gRYGC|mXxg;6*om75q3NOvK^ad2C6}oZ- zxLx2DSpshue>`GTHPY<5DgOe35uegRa|a2elXHhYRGE88dDHaN0p?{p8gxd!@nGwt zdQX9D7T%fGl_Z9!`O7a^QUmxLhlvfpqJZ5cnL(r@8opB(qkhIa;@*J!L~tDLdUgYa zL~@2~>^QAGz%EXnSMmBF&y}Y4r%Jk**~Q_0cbhlKug@Y&--WBt{Ok~%%jQ- z=Oh7g#}an_BfyKGAF#zGQ&jOHFu(iCG6jAFpd|A@@S%^scO$ImXx~K|2U%Zj$skkM z9bW%ebZXW(NgCNi+Unt9a_)I!VBaQVBVw`e$N!I8Dn6RJ$#x2U=T_3_3s#=ylyH5H z+O4HPE|pAu`jVz%%5!|rUIrYE^8C&&K7Y5!i#B_=jV*$ZSnu-i!W>co8YbVmJtvNW z?^mf}>0!fof*|BNBTv?B`L*LN)NFP@%esX?Fk8k9=M>;r@Y~u0i;a)!yQGkh{}*0* zky;hq$$zsU{Woo}OPyIXKUL`*4B^sQ^OP9`4vp3e&YJTwMEFe@Ti_bKFo+}^Npd9vcyqIhLYoE>XlawE2Vi2-V`NQgOrkku$BCA6>^elK> zh~7zc*yxgh_HG}@-i@@q+DKlamm|>2ni`9~^U{#UwI`bkM#$@m*+Dd#F#&tlU@58z z8B{3)?X>9xe`gMp7$NgW`jXD=GsQ$0XO4q8g~%#Thl;1~ju;1}+d|uUBf@%60sw`u#GnX)Wd1l@6-Y0Mvt0Xi`+!p6> zijZ7;gm>8@_?eP5?6~;aeop)W3Du)k2%9?^NNR$TT*+FwLQ|3xT7}Q_NM=FFY6yVeU+>&Qe93{ z$zC0EgUM}&IpJD;f=K)7zBI?Ix0GI3 z(#{;t?PB})`(*Qk1`+6o3C|kF^b#90>{1^txEH5+YnVDo-S3j$awk}jBn`7}_9!Kx z2)yX4a{5<9-bJVenQ7^5(l0Xs5e{^zj^tZ~)XAU9VZoa0#>qmAf0UFcizrB3y1a4Y zw)g&6ME<;m$symN86koR3-zt_)c)mF2%)Ve`ObS|$~T}ECQ4h=$%U)^CW#2N*V&kKicG;# zBr80;8(oU?+@6cp4^TTr#5TM>>^VR_zWaprV6-y1>eYdadxM}qsva)up-0sCtJh?M zc-(87B_`E2|EakmSP#u z_Rg>+lZy1W_3=I+`sl^NfFP&wwwVY%fM=dl7!;XhTTVU zYAQ0p%SCY=b%SV~GAYF+;3%_r;xMDE6N>QVKXfu6=*XLLO$E%<*JpTIL2` z_-8FBd}88}<7$eVmP|YTe8XzL<^AXnA~8(l16P(H4-f zNs;{NTtJ3*$7)@18~qP|+SG>k27;i9Z#vQYAfLp2Lqhr0pWRmn?~y|79y4*h{wBR3 z#kJPUwopQjenMlA?1*9{p**3UyfN+@sCeL#(8g7MnjOr)E7}+gM&Ty13i|I$6hoZ= z_kj!LB~wwo^O1hZuh6wQ*{-ak$3LT5D8+8i-!Zfsmoe*ODDbu)=+4rGBhnZJ_z_3C zVDi8rd3dLECU7qzhyYp|SCi1YMQf7R76c=v*?&e%Y23Mko$JFAj4mnJxNyG!KJm;m zdZ9@99I-w$#c9{`Ib#F;Mg2j($fM`}ig<^px&4B|#`Iq&Iy+%L! zizz48jzwm9bE&NXEg$wDpXbf#tOTMBtodPZ^ zz(WfO_n-1}R>iIXaVHN^G@&bFm+4)iNe$_mrj|*c&9sesNyUG;%RP^-gW|R`YkNu~ z9H)%@ls^Cj4dw^+nZdb~Oa6O5`nzoMF$WI6E_=e_+U;WR7i*ww!~Ur~dtfHPPUg%K z)8*>eNbqd3W+Vl!JK_`_IQiY;{dLoTi6Ca1T@Ft&XVTf;8dnb;LLR^Yk98QLiank* zjHp4FtX2r5gc5IyS17?Csb;MG4JidNX(5rGYc2@#7W}7dx*Ooqc+MJcJ~y(zUWIJGjA!cF2^y){BvOi} z#C^Kd{A9hBPse_VvwB`rBRz&kuJ(_my7%m6R|}fqDnM0(!p<}tMiYQbEkKZ6SRBB~ zX5-rWSQB7O^<(y=rXcZuE|0HHA*;;R4s%WD{GfIGp_geL&gA7^`!eJ+UV;JjI1RY{0&zwAAP#-3j`QKaN)N*)uQ5NVJ1hfdCS0KeGAiK2|IQ~8v-P0-T8-Skye=C<@{c_vmJ(qN= zdmee4p8?+;hY@~LA_76}XOvIw;ReYKL{de~|A$ad^=7ipyW}@@JuCWt(BX`+&>!8v ztH#0Y_$gefo@mc{vxCh39_(h3Y3cv7XEw~o7BoxJ>UrA^dfw$t1%6go>5;EcFD1ic z3edd=cbV{a6hAu#A7q?X$q(hztm;M@Ev3g5=EjSUzywwed-79HI1U0fWkvn%&8nOV zt|b9&J(nGQk(2*U>b|n?9-NRnA3NB#mKTrbX9sdk&hvpE$Hpr)gYe_rtn0rw4}m#6 zR^Ta9w*BL&p@d(Q3mM8FNZfoK&nmAVH_uJA`!o-i$Zw#$Dp2hZys-9?@XE zwA0c5L)dqCHPwCF214(M^s1-`NKuOPfPx@ZMQUhLr1z$@fQTR+>Aea{M<5h|&_R&i zn>3N$Ap}B_ckugu_uc!(c<=oIIpgH)z1Et0%{AvHPfXb>c#iNTOk{yS|Mu< z8xO^Q1roCycmVQ{Qw;UF;T>2P(v~!1>M>DVvz~59s0aIx7l5E@{wDiaEsoXO-ps_| zH!3t=`tY~NsQ(F*mI8$=iO!qLYpP^%uMI`RXy2AS_m5@yVY|K~WZJ;Dpjr`)={Lna zIs3Kv$?1|`PEq?JIUW1NPgUc|kYNwzJj1#FfF$x67)`eKL57ouO{7IzV*R9z#jeP^G*k(*;ORUEDCVA>1U zM20p~-TR;|iX)Iq^ihKog{9xOCdQpr@!ADVSqP;`Z5k+9-k@!Q+YRi1K*$8&lb_|B z*fPslL$Y~)1Uzw{4Rf|XDcT*9!wuPnDm3~NVP2qN5#10I2e(sioKTt3*OAY;pKiSS zjF)F<_V8v>BDHNqK&;h<`{SFnrJvJZaSGA2DgPqYqPP8p`ZW63OTQ-Cv(18_kSDKA z6rq~cZzZ|4`mLZ1H}#agYlw{bE3YuwHQj@u7eC%k&S+L@Onf3(d<({jPhp$SASp>~ zZydBP5F4w?dAR+MMMxi9^|w!GV5#!>?<>8ile0?oh7`V(@+QS75s53b`(_r!k_{WY z-1onfcG^wy#0_3wNmr)8yze2Bo6 ztcxD$r>u)!#A!#lJ3@^+hc(;%a(n=hqNKYE`w3?5Nteb_$?Tv!rXc%XDmKK_Kkd20 z?h!pMyM5HWl50u1_9RK|enk}5w_?mZOR60_pno(sB0OLQcn{jZ5;9%!C@nE5H7;B|{!GKgfLgvY@97!SC?^Dik z0gwM2QO#r@E+TT~#;J<1KOE;BcR3MrE+@Fc*&fneEx(KQD;@9L8(eNq?vI#r75hX- z{SUWp<{@@HK19l;_uc2*w9AI(XvFIWM}%RE2c_(ep-$hqcki!$WxI8nhMOBdTy(}F z^a5~qDeeI#u|{}sqI!Z~AdTNoKWMH*n+N_!@X6RyGBt{~@+G^Ur2cphwDx@wD`#6| zF{pkl)M#4n$j`Kz=G7$o(>9T@m7GSIV93f6&+KhXyJS1@v~_E;qYrO{(z|=t3;cL? zgiy21wtZFBBYFMhn-kdmaa6V>PPk<->gMc|F8*hZOg46a(A84ERg6 z;#EEwq-sAuNCQ1wW3FGzJ)lAk_XJ=2qUp;ORrcieR=g6PX>gDreD?c1w%$Owka_*` zeT6;vJ^L51i}W;p0GV^}DJo9frt z!g93gVRzS*m=47tqZcrD7!H&<8L(=wuSP9%;&QO}ZX{%TJ<=uP-u3VmN0Db|H9NKxQYF-TR!P5e_~Op(oFLhth0L$41vO#TwwAgRzBpz(L-V^$pS>B>Xx4EIT39t zJ}qk>Wu&n$h=UoVj%@Ubp=}HOn^d5{-0j`5ZEj%HIJf5DL4$@y-U{0*_f7}sYLtM> zqOP?IHP4(FzOtgw+E+QSKcN?%dtehtR_GcC6-5G5+ZjU7JKCZ-XChVsO?g~#W?%5>%$l-`pn0ao;LUmgs*Wgxw?T_nfJN~a zKPJ(L==^+p!r28q0b~ui*sSxWcw0tw#;)eyxF?Oc{i?+w>ZB?i?!YO9sq(}zE`kkw zzttNOA16tAB~_=~?ic4jpxRM&=a33p%H)Z_BSH$+AUamoiwv^sgX$(%Z&WkM1|z>P z(|V%<_j4$lnfyhCxSgj8_M4kx$I9Pn=Y%~3AXeX*L-0mM%b$u(;%sPZ8H~gr#M)+b%&g9HzHGD`jUcHk^`BhBS zReU@7zFUNot^@7)Db5ZSKg%f)AT3Mw<{;3*XB2mcPat8oo*mv0hiOI~WyA!SP(3{> z#O-%2X4lP+xGL39a_MsMFiZPy+|3L!el!1dd^zhKQl)9Wu@_sGkpHdS%l5OPpr`KP zUC>>eOiR~CPp8X$T+RA$#|tN&%9kheH1ZF^sH46;R_i5rkF*W3rdNGnDLWD1R3z>w zVfkG_Zw@=6%&E1HZhd=s(zF5b?fRRnBM{jD+ga2#)yQr}`kvH`vi^3L0#zv--{pJD z5eQ|-(`Uv7W#{MuZ>*l)D#@?HXVU~2Knda9XVv!sQgU0+ssYiAPB=%W0;5Sjl&N=aGuI#@Ke5c*BjT3tXHBQ}-Iz}C$!HX%9JVh+G6+>fZt1kC2c%Gq;lZ^&POIYO-E*YP3&iDe~K z#D^y>th=iRedDWG{^bD+(CE#^!loem*6-c_gSmWNs=>$im>;g1mXYDzN1`@2EtUi@p(H>2&mgfTUbE?RS;{or z&4rNCW39R^eyj%pY;B~13h1d)`o$4Rfn>oAVCg(ZkoU0Fu(+_0cJyrS(5Y>zU^N1h zVGYb0Vku=6Uza(ga)*oO=q!mmZA=_+kE2xPMZESb zDf-0M3)Z1G3iPqWYXzNfJ16ZaTfv8+$+1maC*B3Vdkv=fCtf*bS4v4s(t86LyetTH z-&I5=q4tI{ZHrm3`w^oao*E#)(djal`aJa~dC4*Np8QH5xDvtq}XR;ZC&xhj>ZVWH8&2OK z^3eS6naI@lJ-OmR5`RLXm-uNV;Xfqv3a?W~25~HAG03wn?L3zmQCorgjvt5p@*+%& zc&||nIeUiynB1oK7q4GW!4dbU(B79C`Fih6JWs`JC+wP|qFh^BTXXWn94lTKsr9>^ z2i=bXyB6%-PB}0#Q0T3l5-$Io3yR~Oz(TNx6&{_{ChFMd@)^!Ur#YX$V@wf45Xqc{ zW>od(-62{j=eX@9@bm*NX?>`P{45dg3xK~2_oy^SlN7P6{qkV`Sz0uAJHWpRng<_sTvyJ?vEe5>?cJ_FbN!{jiUa@2*%GJrTcetn*ZP~{ISddrzN;} z0dKIooA}E7?W3f-hPonH%ZJ}X@VNF$G;zhiO=4F` zOOv(9{A~*`(Zb55F}FyO<3-NgDvK{OLR6U)E&~<;Uuh}FnZHahIM+fK`sQAsMIa~J zHJEwp7vo$JR28pxm2^PXRausOTS{xSy!8eN=4M5Ja73~z&| z*FnC*KuYVFVc?KdW&MZv3%moO(I&@=;53kle8x#SIsPcXK}u5~i`dQ^MREMz{ik+O z#TY5^yni*5dhFmW{3Xf0B$e6ioNt8F_QnjJ>)Y!u%Y%`O0hrvHu_|W`aQwQLCz{$D z=d6ZCk2pHOP-EF0aM5QsKwslEg&jIGUhyC2wSv0GD9MaVW~q077tm?VVyWd$p823* z81Hs=%Dn>LUYuk9;bIgP!5IL1dpBA>0T0UU40dkWTjJLQTjAMGl;wDalz0u8^5uj3peBxqOifMOx%rG*j^G{ozDg)(n@5H#1Fi3#D%G$D=o&F4~ocz z8EF^|0xtQFF2^M{h|H{I2fRDwjHObrgZyLD%~?+zr<-@3BUCtexXmu37Hv&@&Sp4O zso`%2zu#~mz1>~=vVe8+zH#tY>A=guMsrK0S^5l`%@3YN2FZN?hv>2XNVg90fnygv zmW{i!E5>?!Pcc(!y>S5-RdXJS-MDkP`4Vma-U+&kpRuMZkyS?}hbPg>GMH5Uv7cX; zlxzB&Z%GRE$?3N;3pnFgpGLpo6&&(PclKOq{YuZOPhDkT88x0&R}NhVLBq3dkKPHS zGINOYsP|tL5m&2-V7~4dSi}RBCop_Q|G_z&XSc$P^3+rG7Jc_UE zkf;Mrs%xBf8=2CrubcN#)evsDjebmeK>4KCkXcRX<)3#_{vvUNlsuVXgkc=v)M5bX zsMMcvpnmgP&T;`=6=>w~Veab(YM*UV>9U?GGKgk)+{7Gb<1~c=W;Sgpn$bc2Rwr-c z_MYG#K3X@OTGAq(%LWeCYpsmJgd%nofMSjE zE@pKXp*>indv@Y$*bz~K#sIu=^@lr=F5WpwQ{3yNs3oVueNo)d=T~7TmQHr3_|+W0?IV z)`e15{2u&!9OF`=_701N2njg|okX}jquZ1y7CX7?N$B@o^Tu=7BrhX_ZqH;LB(0o( zKWM$y^jDL{z|DTw#DbLZsXTlBB9aiH$PwI2C9GjBIxu@ zK*;uTTgi~GUsr^_HWePudPNtGd^>a-`4nIFns1v=hr!h~-tq0zRa2oy?`=tipaU<* zUmHfudmJy0Ee}b=d2w_p&*loT&WZ2eBSb(iv;BLPj}Q|rugt6ulJSh4L^|L_FZ-Y? z9%;t#U+MDlrXax4N;GOPiOq_)8arGGDZR|@JQMV|-8aM~_%>oz+7>qQFu5?(^njy5qby=BJ9ADL ziF26)=1!hSUCi(lrDMHV6;wfq3@?~2ANDeZ-P;jF1+oE5qoEmZlke?+xkB;LUC70> z#U}T$}uCo|9FQ_XZ78QRQN3o*#6m?quq5e)T&YtIcN6(d+l^hU~YA*X6&{^+VbNs-pmpGqjGuGl<&R})Z*-hJd zC%G}ku^ccz+b47QqVyTY#lwqv+&+U&x34c5FNwiv1o+~f@8*k5Rv2dooTozyl!%8N z?NXq!e{hXfm&a#0$hk=%QNkd2je+9e`(nio@QLs!Voq^`;V3ohtoUVKr)Tl81*D7@Qh_TmV|dP`{#_1|QS z?Ld@oatvD##VX&#Iz%BkyUyZ8dT;V2>l9WPIq=Kkd;V_$D})Eq8&gNpaG4j}==YnqIMhZqj~9mnxU`c%RLU^)sG-LxIet z0;2}tu+zqxb%W%>DqptW5ucqLVCR}O8?1%ceQ~t3dS>=7k4f|xhFZq*i^4`iTqiHj zHx_M;fVrmoVgm7ZSai{>HaH!?Os}NnIKSr1s9B?|=hCz;3P!b)Ha*&ds;-@dI5*g@ z&cH*JW;5D1^Qw618$h*yJW)PcUZ7^8!*o6a?xmk(AX)4Soh^E7KDKfH3pwKO3x`bq zlH=SS(NV_DcA|}&d=C#kkK2rO>B=}Gh?&9FiOvQTOs#;*y@`BZoel}R-@I+~t8g+A zsA2M)59jJ}-^Z~OKCE+f<(C1#z;{``C-_|^C+V22((lqPDTC*PLA0&>$$er(19x9b z^*@++Y5p`qLfGdgcGr78(F8R*bvQTfGl=utM1@v7aM-ZFoC)8}#>6>m- zTbEE$vJ+W>?#pMsAbz{CWR^bh`0Et&n^av}fY;T7&^!eOf{GlQH zhg|U9hE(f=J7$76ZRULRVna2FybVD0Es091t#T@LpJ(2+$}f82T^7bP@*?gd8G+`k zhV)vK=xfG#xv}P5$UJ7T4B4|IA)Wc=XmfK=8fUQbs+E&k2eKV9saRML$==lL4y$V^;aTK++r? zm)9oKZr+tTIb!~+YLbMuU<%YxKW7lg2viB9lqjsV3$1@qls!%m7OLYi~Ly=z6ezmjnFEl4Sz=Yisrc zl83{?Ee(e_qX``Is>A0m!ZX7AMypS&Awn&sTbN5N8SJJ{!=zsq&m34ywdF8g_Z7)# z+#;&skA!ZDi#7UxnAMYed;gBV$mOmOd42tG{(d9n)$6aCyl(P2zF>7GW4dN09;@)` zSf!+Y^qJZZvIcpg(*f=>LAA#M|A&w;!xy#OGm0L>)Xx|GIlgxxk?yOqeJNu45)%_e z+&0R#aSaiSjlpAIax}YlMW40yJ+`zAOr!E<@K0S47sa>zs?{Rl;oxej(j6&9z3k95s42B;FMTx>-oGnK{b;B5+!nv-Kjjp8PS@Qx>3>J7tSTXSh4EJjBp6 zWVB&s{QqtzexxhwobRu*xRYrZ#}G~Y{oBX#_aP*i9(fewwH`@H6Hm*dYA7Q-Q#s!Q z!*CCgQvkM{GD1gOdAri+Z(nZRz)kV5ayr@r7OVJFSRYmxTnT-gBu&+10Cr;Jc!Zy2 z#8~v<7D%uq_FePA@G!GHMdupJ+a>z~p-fA^*$;~h$W8SANk;W(yV`HS?x}^K)K5z? z_?v^jat>krm76K82VSp{c)y#!VNB9mnb(BzJkqtih7xe{Vl+CDPkVFFKiV4YmTssA zhjjP5AYm~8H_}=?8dHI}4TdY^e+IqC7og{II(ulRIO}1{Dpv`%C3AF4&H7wE|41=P zCEa{~8h0jp_E|3*8!ehND3v0#!;G7D)EhtDGtcU&Ov*3hajCOhGy-oll#oihTxSDr;BC43+Z8Dn{!3n_9Q_b$Yx&r z_4BvUm12$E;u3%(YJpIWz=-r>aJjs|ng+*fEHS}38+oR%;(Wol8XaIyn)4t2E8SAcke7k) zg<1`rqoSN>zPhSYpQ(@rpeGCh^n}-P^(u@K1zUa>*PQJH6WaW&I}O8a*BmAeEI%ban% z9^_Ny6(|DP3JfXX^rV1iL?z`C`y0v{yjF?>{841RZbE#B!Y}hP`=ch3Fs&4k!2Jx& zThk`)sBD0V)o?7t_c{BE3o2%_<<4R~MsDjBiq%I&xqJ>xjivn-l1n(7$wS@vIOkOa z(fykhV#U-ixFvU~(RIIklzj$Ci$KEn%wfxO1iSf0 zOZ6KlD?C)3D&*(VJi1}|HeEJY#(A;BiFjA2#m*`XIf{Fl@6B=VqHu0Do2NjtZ+Qb} zQVU69$QzPf9``_Jde^o(NvHf&CCqaQbo2pjtGfq-922lY?v|c*(PnZ4YnH;kT^HYZuNe7tcaa08{PcR1qjN;UV?~Xq24j$y@8ej9 zIPKKoY5fqU#SE`2?H_aNh-8!7^4);#8P1dkklj;C z>=A$v(Enc|e)mIzv8~nvz4V(v?GgNQnHq~+)z#p>z36F(O1@~)A2X@Ko zb#e#mu#My-G&|Lyapu8upmZS(#GCbzV&)opAj8jD4^o}rhf+D{-Xp|@`DTW-4dj< z9dt+d5)1o&_nt3imKoqkWdaMBcA4!SWlUm$ORvk$oL(P zy%NxAqsQL+n*!#o1AjuE>%p&9C3_~j4)x`v!#*HwvJ9%1m-~mTQs6<^mVo(RwcdQ* zu%U9iHem3npT?et z_9;y7LG;WL!H!|YV&8NFyPkR*yj58{aznl#rle-~wJHw!o;=15@~bMdg3bR51q^F& zg2c-tW)ap!b7eNyH>E12QFgb6%%}{H$que1T303?ebzK0(SQHzKKkVHTvik3#?stx z&at#Gi|tszVP5|omm)Vgn)TSnP(Qglo}%CSOe7>jp;ThB*pn38cHQC7_l8K`<{(JN1Qsy$1PO!rDGmK-4M=S} zXagS;9Ylr7D~1NjI8|)tFs7E>sc|Yxt~;P@`_67a;W3JB?VPba(=(OVdJk=z>R_)S zEjSNwi)dl)Bm|-hF!U73QS+d>a`c4K)j<1f-yQ(ROyE$evih3+>2CC#bz?QgeQ~RO z5S@0!#0_o00sNFnHMJ^Z!1<>dp8=NOz9?0CCnd&Ih7aG!0?K_zyma4OE4~|}PM(k6 z!R;o^jfrIWUt27kw8vJM_P{EZhFsu4$?WEGGE?UbF2NIi@sC&z+~od?+ntZUEVSwJ*DF0l0rh+-}{xkJDRUoJ@t?7Po@U zX<&hYL$E}I4QpJr;t;A`(#<)l@i+1F^UAwsv)ol~>77)P!o3~k{y@4h>uVClEa;6X zNch~$P+B4AQzD2G@FvL%&mfgLlNxbYa z)j2mXTR}dXji75GhB*v7f5!sSEbTM>M`rFE3*GQM_5d>KFZS7RL$dyayA#D-q0=7{ zsEnz^a#Q>b?R9f+JvL+#L|dLsA({mRBoC&uPGCSc_z?X@dd|;8y#%M`(I*@1=QQHf!n?~}+yWDsr|@wS?Kcg=W$ zEPc>N0mm>g)&fPj%MFXo8o*g5DqG6A`f^Bx2{wVVp|K074+`q|2+O~u{eW@{i``Xw z!N;Hb#6!vSS1bD!{j(h-D!J7j3UkmG6+OzVfqb9}AGkoB+74%ttV0(iN0Y)N*C{I{ z^F9QCY@rm_N5q2QLDKLI^3+)iNt=Nl6RAhix$=h8HN=<0d^K|T9}^XV}HDR1ZkOeVG|Q5S|J z2sWW^3<@=oY(BQlJxcw+(XZ6g-=J9z_N)@j%uvoWs@Q)1Hay2*&`Zi5wrB06xr!|C zeN~0pTtW7{VH(78enfg_w!kia7a=nCe3uk1WE3k5KU3Q@>R|%>Qiu&LmlTK=&<0xl zOq^B+%NGfS-(FC8=4TYV?r{7j(CagX_4K%d2WXhfkQBOYdK2e*1oR8Pamp)~&QsWL zYvo+z!w1`RF2jwP(bwe%=%)qPnC4vr=^W=y&3k{pebwse?ja~MwH=80q1+;og%f6O_crQq|^z&8BIAm*sFN9q>&+esedgJ-Y#fU8A3pLxUYCpvmg zVu8V86|Gd!@7r^xf?&~$#GW4bCN9nfcGAggyDv#xq^;?z=5t;$q+0Q2A~hi^)kHz` z1y)$=s3;IuTs_JgOPhUqSEy0tDZ^2zR^w9cPkye){%Ov$8&+t*U+7U<&30baDU93o z(wh$Jp@s%*>H;GtsC0`}GK=0u6rK|_9^dsLV8{CIzc#7m>C{-B`24 z54r=0s6>AhP_TUiEFim<$B`AQ6@!Q^STT=c{kLgPN-z>{c3&tv;v@tu0YA=_ln4)YSPIG$tAo?V z2%*Pl!y$kiXj2};Jg$GElO)~NwX(%3pUa8go);?hDo~0o+L$L-yvRTkGEx$I?I8}m_rZjmic=FOLAgcMF#s2Il^^yNzB@OafZdYClF zF{D54esE2xpB2B>og~mV%?H37u^Gsl5XJV4bHdBYDAV1EL_%C z{bJsPfvBt?Rv+v^>PF4iXgdTPlHtV;`(1f|y&|5A zakIjXlD9i*&h(Cp zBaGSG^Ad<<4E0TM6yf1_w{2m3{NsF;5**2@d-(&!PwV5#nkEsm0kqyMmV`lbx58;}Q5Um) zl|~)&scu;iTbA&R3bDPY6&gu~bJuwm*rTTol~;2I5ulX`+})H2SjZ3!XZkT*EZeHF z#IEsAe+h1v71tj~bpUVU0=i|L4_%T%_08l{$^&KgNbfm4&R4j3`ZeRk5onif#cmjF zRUpeW1j=@uSF55Ssob8}T=rtzSL{Qy3X+l@Ms^8|bhAl3AZ}#;^}S4<3g}$%aFm6S z%j>c)=c*IABrwK09f*x4Txb9T-6fb=ta#QIs^nO!=g}$T>JPSgU39Ms{p}XfKGbbj zwSbaejYiYl@=0JUwK)kSwV8YP3YtlMDBnG20rCd>j93pVFUSOy_?v9FNKYcy;a~m} z<7KGo5tJHjBdAPq0Kfbj-?d6FIXp_`eTqTF)kbn~)jJQseMvQ}=6Z&?rBJk#6YshY zSAWTo-QsNW+-Eop2ybmq>{GL67_C#loWm`)6vZF9^5xZ0b0o;(LR72NewDdb9`a@IgTb<&fu+ zV$;2A4%@@qcGHzAh}j~zV@*_@fg^0u>$j`!RTgjL*T+z2_yb0Bl&~jw_hiU;D%TWp zh@ZRo8~?K5Hj94RP8Wjr!AAA!Y+Yg$7S1E7Xf~?dnhms#0 zRf_i@Z20L=onM@Fz*n&B2CBp2`g}8+LuGvQRKyR3=gd(3m*`2P)!!U4wEp~`ay9qv zIX5#5)%Jj59Hh;{He>K*^%jVDgPSibl!nRgt*?4uR{!DBr>0)|>F0F;Z^&=YyP1;{ znE;Oh7NT_gu*V&6PQR)mzz&N;_1Bfro2ln)J(s4w1@e!+R;|vxwG>EMBm00SmF-gp zTuN!RNh!N+;RLwStqQK@h?BzlX>Q_wAB2#Sgf~0~_J!6{cV9)o+DNF<{`ZpBFSk&- z=dJXCwF0JiEPuY{;{l^{K_uTms_MSCOq}8`;8OA?+rJeIcB@y5cVnu6Pqb_D%4z&O z8KZs`LJak@ZM`6b|KLc?xNZMb+s0R{o-n0czR~3=1RHszTyOq~>k(DF5=%a< zu{L+A`&zIgM@YX}JILbde#+3*erHu(K*V|I}cckc(|t{?#elm%Ea?>#xLRU#d>y) z@+oAVY65rk$otkRwekj`KG=+vpZ!O?h*jkeO&!#K&}*Wbv(NCD#N2|5_+I^|PDBYFmb(gp*+A{NVG38n=MIBwxW@*KGq2Z7g=06b2}`!b5Q;0(?PGK*r7X~P90jy zN7wulS8K*e;lNSY0R$r*_LL59OR+FoEk>CJ(sFrbf4I2uTj~wGk zvgc6kyr}bL+0j8?OALVv-TX9*^}M9F0Joa1XA_f7;OcQpYN-?-04HB*?0fqS+G)JW zUh;!J-bWuf9HkSud9y`tR`;s*v8Ze#rIcC1S~{ak8>=-ND!=?)SG{%9QwZDLE_Thr zF6WEeY73jdZ56XtzzzX0T6r5Fl@@UR2uP)wxxO6@$*V_wxI0J8a5c_A*qSfctHODf z&N%X3wCS+ezXkx1SE+JU9+ERns5`gVW5y1X10rJVEs*A7NV9nk+9q(S2S46ews`zr z1~Q%AIxlTtP-I~kgK(ULd28pV51*h@IdnmWHYMx0I&ZIS&s8ak0lJgl7*j7QJeuok zHDiNT7DhWm5NOi151luyW^%`teWWtq9r>+qFU6jDG6*|~1nh9))Gn1^qWmlvs~2?G zu#R*D@do|9K9tn=REt)4k+(}U^Mj>`K|5)M590dMYXNrO(bMZCF`TFRX*jMA0o|dy z=CF%tWF{*6z04sa<|8&-dU;6e94b$o!CDU5#oy;Cd2NOFZa3(p0d|Aru+eVln8AX) zDzlQS+-pnwY~t@LSh%I5BCv|E2xT)>`mklKnPtSG9{t5BQ(9z0TeKYu(Valjb+8v} zHY{*0QVJHpq*1-9?{7@1(2aYLPK)lRUh_VL%;Y+JLgh1H9FSTp?w7A4UY!toeZ&TM zV`(-5LxUCO%4-;NPOpLSW*tc!1-oOHw)Azd0ipvgM_!#@(L<;z!1k2O&0&TklDCsb zAqy2O>%hH9Y4VsIQ`_f>eD^|k4Ip5u|;GFRms3VH8Xy3^6>Ip1bb9f zE4@nig%w`UNJTP*d`Z%0azd?3;At{MhTlWJ(vmzVFevR?>NR+4RHvmlE0smddO3<~*wK5?PC~xCM?8r{T~nqeFq3mgJ^93CUjdp(yvJO-U^; zwY<#KZ)3A&uK~eFrQDt^bh#E`1u}bA+v*!R5v`rm<{h|i@;=8dm!K$jV4LKO=%ulU z*}gwV{(#T#PQ3KPSINM#ucMw`jxgpyMivj&W6t|~CIy)oUl!UG-oQ)K{+zu(c>T*# zK=l3;*~;ui`Nj0QXH+NuD*2z9r$GLgBNax{!P08$%~v-xPKc#^cB(veBM9;l&dWoo zZlNwl6UekZk!h$6XbJ2kp$+3(qPV?443A$JQ#ASgh#PI_AR@P0M8JbQ+oALe7q>P2 zh`Wu=gQ$6z<&G>)9T({~c%M=hy|HXfG521wnG?D<9c^K4I5)IMH#NU97ub`4PWJ6) zh9Du>?k>5jJ+rNPLJW$*n&YuWD4{|mYo%=V3w>qW~(uBed!T; zXgfe6qa2}ZiW;8gw|&EA?Z+eOSTPOzwu9m{=RG8b#75h&VuILJwXfDW7~yle9mq)Y z(67oEO)lzjE0~p;uENxj6Awl4M6eu?w`+8BwuNKrILk1oY(E08z*rt^V`UhS*`(WU zc$YG(V#R$chYTzZ{-hs;Rs>93f2$Y%-hO{Sgu#?6N?hE;*`9^{QAcFsMH{(=nW9`) zcfhOPjpdPFVWeL$k<`+)0~WwtNpl6@L#jcP>59-reo7d2lxlehQaUUaGQq6TrmJm4 z#lSgr2DYlz`R-F%He_+ZR>F7c;B!Wtb5;|GCH&o@i)O}6ll{=#q4w>>WwiEk_TBl2 zIEtX-AK{$7dBKXkd#BY@qd{8bB2_EmYq5>a7)T7<8#63#1aBR0DT;8$lWJFYsg{~* zuuVR^{jv(CmEQ+hfr*hncO{g*1+3f1qPZq&tP~{)6Ut%j{rQf(X?n0h&P!~7{=i*R zd!2EK(pEEFe4Nz(gg@5@o?YeQ*d2peg?)q!jYm$_2;LY;bsyo}vYN3RGP6NASg<~U z=_CYLVCN%N_~c1;yeK-*EeKyNQY}`3Y5YUidsdTnQwCnO9f#^|bF@G)q2>(7Jx}3* zr(Ea!Zu7donn_^gBVt4A#G9_EIJge`x5xr;LJ$u2MA)_8P7Pi#cW=)gU>cQbb8CZ z_(ORwTIOQr*-=8nH3Dgipmg%zvkIgavYOqT-**|Ykx|a+`v|4Kl{T}$W#x-`Xx)*1 zq#`U2VK#KOHq;o}(njX8q>rfAr8P&0yeImpo(kdfHTLDfBjF>7-jC-)a8^jB2WQmbe&d;FK1TuJ)`tEZj#^G zp$~iSVclJR0D}*pDxrVhLxD37GCaLeF%>=^Vum_)zLcf+!JB2K;s-x6OpPf#lKD)E z68-J3#qQ$Vnyt$AK^a=R&fvI}QF21Q2ZUNtMXPDw{tE2dY?X^xq z4OuasczlyhQ4m58h4koW3b_tnB7-m&8&;@dHkUzzu^qbEzB{hFq>W%FBN1wx^GG@N zLBLK-P6RHI=EfhJ2q5G00GsgA8yj%&*6k644lU@rT$XBuJ9x{QwJtkxpVAgiS31qZ z*x_kDtc@<6gm%76EUOxE?#@Oi?<}^^;#jlmEhe8 z^#;F($}>JPg!=Cnzkn{H6WT81auj09au>{Z?neieXml4nn-i~sw2ptYycGHiXMh!7 z+sE@^R+}+WXbfJr^rm#Hxsib9*xCfQu+*StQf%_N@K|gvlM5KPFz`ug9@3bL)m1<3phl zy7isHkvUZlGya7S<#MCMA50tkO8B_?`{m<6nx%ke-fK^|4NNRRJ zSe{shz{vUgsL8VtH3|Zo+Qi;1vC8HcB%$A__aL+8uV@KR9P^^rnK-fz5?%cuE)v(q z@ey*JeT1|73H{?Ki`J1vz2i{rJ^h2%c$nw7c6Y^ul_0m4L7gWacyHU@0M~Cw8VRZ7 zSAdZ?;|h_}^Z!CY0K_m2ytAyU_|H-^!_KE?GY>0v7{^!wT^zMS%D0~55(pionav18 zRta6TB3vSliTrEb?|f`wZXK*2QQlu|1io>H@`mY=0GX^mS<5w?#pNyR208GR_q(Vo zLkth8urEW(O|Q4xxW3daUHumVO{ii2g+PKfYH^z(E(?(V0zs}jLJ~bVpSb>T=3AnF zGe%u%$NE+Wr?ADbUc}0qQSGHbSN|;j$>jPk@$Zg`KZz&A-f*2L=ihBi(z(Jvr=cn8 ze5+HOw~?Gc3c9Lbd_DoWRl^Y*6_Q8uEy)nh4<#Uqj?(bPjLjahd$>?hy{WlekD(?? zH3h-27?H*m{o$LPCH@_82IONfi2;roO_}Xs33@DVH@R;&O&U#+mVhP9BM%OOHsQ(Or2`%%wKH&_M zxL6mf?P_*MW*%C=)Z^NC4*n_7s{6~|d_f?}&rcNh$w*o=wsio zN6iJklQ?eNo9nTu=8$x0eeE}W8ySO>47dh62>}WQfX^+i@Hu%mVdB>`)?RlU`l7tB ziDh&)YxV2TZC`;;9il!utL4)b+brfF*+Eka)OQiEO8{KN1UM8$%fd4)U?|PMS!AZM zvR3*+XwQ!ro5AbdS`$bodgsR!Masx}{~{tsW^}TU z3#}E8+ZyX3g3cP)l0%=z)v{ys^c6A-@fm|Bi|}`LLn-s+Vol6eS~!_gEqUT+@-wFMhH$ zg(t*k*TFbfi;(Y-e^BoV`!rPnj{*4+aWhU;AzJRN4gq1Y7*K;;g&hG61unHq&sVen zT)nvrH9R!O9!ylE(1XjVfgn8H@ue5M^vm+^Pi~QBZsH0xK*O`6Whw+6XhKC-0wjy z%@;aDM22s+FR~a$5Ut~HjY}}VStZ1h2N^260*kKwm>6A+_5+Iim=p`9tP>Hg{L{P) z|3u?*B;h;kJmAlmc`={igeZm5D}xG`iI-Ze6`kE@46zrH!?{?*SBdTD{h)gvFxZ7XN#0#Lgb)U-RP4}TatoDVzQ|+r(Ygs>d(Kq} zWun|iWA|il%Q%8k2vIM+gz8sTCk2ogApdF%opBf)os=Fl^{lcAe^^4Cp` zi@4eYY8TeeAb)QXX(_i|7-$020&`~y-1>(T^w*K57UkLIHO1uh-T@Ak*ShDZiXx=DG5{)U#bTVNqkr_N@&NJTky{_{< z|3CM2Klk&yzrWA-dtcXWMm4sQ4=W;EXPk4EjKVghe;i$SS9fVAKnDG#^nJd|bS~H( zDBQ%6{q{J@xF^z|*dZ zfVQ72{03V+cg8w2d-G2ku(S+iG(bsE;1oee~tN_{f_kHW$m|`2x5JzKlKV9kyIhZlE@1m}C18Kfmn-^o**!F6p=rewZz%>!T=PVs*urrq6^_Q0<7t zP|5J-LaJTif($A3R!`K)fdhV}1MF%CaHi2@J05(0*@f>J5WZbyXWY_tiOBJu=lE!o zTpVUDo~T)L<%u8BJq0k4AdlI>UoMd_F#z-$RzY(WNzOJ*MZykH6i3V2U*? ztB<5&&>CV87eBkUy=Ji+HN|5@)hhf__VWcQY1X;Ntej78%xIrx#*90)PqtJMxM&^u z4dn47yLlPUtXt2BOl2bYjM zaz`qh&Ol5iXe6?Iem?zgxFjiHj$KqLqrNDmD1Pz`9=Tlm>}NBhDz<;J^AR@h7A0O+ z^xv7k#HI2^V^_tq`h`v_D*`LT5}Mb1;H$J_*quWz^JAYJ72{r%|t7Xf5ipSX1}~+9*G5wyl=pKW8HzTU&S} zd&eh6@%*kmFd>{iCE;#U2X{zm%qS$w1@WZ%|Dq))?LTB3bN)E_-2g(EFHba8-*lF~ zOmE#vYAQmQy@VYXqkh5EA0pq(TMhC~3ti+!xbYAFhl#*^!6H#(inNl`=_cVEA6bCj zLs(ez&}hQbn0InIiqDW5Jb#!FSC2798sms>pSN`W;FUhOeC-IY-=zNTz_>EP}URjf(lSj+dyDflE;S+3;N#Z8>ewT6Z0dbq;H z-p#c(`>F=v;p2Lv*~;VEV@U$FzrC__$|_o2Hvt0oJDtdf_yFZPUi1mn0j3YJgCCg& zibjiSCg-SmNoO#9XkVAUQ$+VeyJ69q5Ul&CBfnbwUA%GEr??=NynOA{l&C?D6CaS{ zCrumQ1h-ME2=9GJF~fdJEfe&deS=pDHZ>}&A&7BZeCUHw;SVlCtVTq%HSIC==Wh`ncU*)0_gj(6(RylUO z+21|Zrmtg*o3-D=`^+?Wg~zJ_9WXybaFVADIo0%&tI6<6kl0wVJjucZVj%nm{CsjL zeU*9joyE&K4#lvDCS(r#yzTto5orJV<)-mw6REdF(hDSxB)d$Er1bdW+7YcJwns$rKO6vw}!6Z8LLeb3SfOQ z9afQDs;iW~`y++fO{Q3M8ai2bZO;43%)O%*65Haov?hOlzC`7)1{9q7LbZ$b3p@doHGfDsaEUt3uj6csqm z;fKol@r#aypPLZ)bWW%})9c%;{>JzY2DsTjf!*`~s&-1iAUqr4mHZ)1YmFDlCn0^c zQ9BhX_bMfX$G=XA1_=d74a(Jho=r1y(C*%in*xT95cNfG&$ozJ8wRKQv8Y3!`c4{b zARDS}`;#4WKC`OR!I~^VexNs)tUpTq`gF5b1iaA=@^Co3nl07!HGY2Wmy3HLWnJ&` z*!<`9(NCksF+P9(&Yxba1LjTlgzXklT^U@x$O0EDAP1G_a^I6zMc*yiYnd-;vL|w8 zge%1zoJJ~M^7#uA<&GsZ1>(zN?O{{=VRxUz{v&Pzf)zqjJ986NJn^!;5mrhcZ%cEo z80iw9?1e?t&Q7L^d5MxKH4j`Xss=SlvKbhWuNjX) z(Pdu*GJEpaT1Ai-bXe}^G)|WyU7j~3pja);zFsY4seGkHX-QQYu0d{Ca$*#sC5lu! zWJ84X8+jo0aw(F4TfYrQ;o;jR&u6hI@>sBa$}x<8pn0fqj+@xIHw@h(P7FVs@-}Yf zUCKbe&;rdT8934-aM0hfcXLbM?!_ovl=iEaHVo$Yqk9nG(Lg3wW}9XR ) -} +} \ No newline at end of file diff --git a/app/globals.css b/app/globals.css index d307703..4eeb9a6 100644 --- a/app/globals.css +++ b/app/globals.css @@ -507,6 +507,413 @@ --sidebar-ring: oklch(0.46 0.02 280); } +/* ─── Catppuccin Mocha ─── */ +.catppuccin-mocha { + --background: #1e1e2e; + --foreground: #cdd6f4; + --card: #181825; + --card-foreground: #cdd6f4; + --popover: #181825; + --popover-foreground: #cdd6f4; + --primary: #89b4fa; + --primary-foreground: #1e1e2e; + --secondary: #313244; + --secondary-foreground: #cdd6f4; + --muted: #313244; + --muted-foreground: #a6adc8; + --accent: #cba6f7; + --accent-foreground: #1e1e2e; + --destructive: #f38ba8; + --destructive-foreground: #1e1e2e; + --border: #45475a; + --input: #313244; + --ring: #89b4fa; + --chart-1: #89b4fa; + --chart-2: #cba6f7; + --chart-3: #f38ba8; + --chart-4: #a6e3a1; + --chart-5: #fab387; + --radius: 0.75rem; + --sidebar: #11111b; + --sidebar-foreground: #cdd6f4; + --sidebar-primary: #313244; + --sidebar-primary-foreground: #cdd6f4; + --sidebar-accent: #181825; + --sidebar-accent-foreground: #cdd6f4; + --sidebar-border: #45475a; + --sidebar-ring: #89b4fa; +} + +/* ─── Catppuccin Macchiato ─── */ +.catppuccin-macchiato { + --background: #24273a; + --foreground: #cad3f5; + --card: #1e2030; + --card-foreground: #cad3f5; + --popover: #1e2030; + --popover-foreground: #cad3f5; + --primary: #8aadf4; + --primary-foreground: #24273a; + --secondary: #363a4f; + --secondary-foreground: #cad3f5; + --muted: #363a4f; + --muted-foreground: #a5adcb; + --accent: #c6a0f6; + --accent-foreground: #24273a; + --destructive: #ed8796; + --destructive-foreground: #24273a; + --border: #494d64; + --input: #363a4f; + --ring: #8aadf4; + --chart-1: #8aadf4; + --chart-2: #c6a0f6; + --chart-3: #ed8796; + --chart-4: #a6da95; + --chart-5: #f5a97f; + --radius: 0.75rem; + --sidebar: #181926; + --sidebar-foreground: #cad3f5; + --sidebar-primary: #363a4f; + --sidebar-primary-foreground: #cad3f5; + --sidebar-accent: #1e2030; + --sidebar-accent-foreground: #cad3f5; + --sidebar-border: #494d64; + --sidebar-ring: #8aadf4; +} + +/* ─── Catppuccin Frappe ─── */ +.catppuccin-frappe { + --background: #303446; + --foreground: #c6d0f5; + --card: #292c3c; + --card-foreground: #c6d0f5; + --popover: #292c3c; + --popover-foreground: #c6d0f5; + --primary: #8caaee; + --primary-foreground: #303446; + --secondary: #414559; + --secondary-foreground: #c6d0f5; + --muted: #414559; + --muted-foreground: #a5adce; + --accent: #ca9ee6; + --accent-foreground: #303446; + --destructive: #e78284; + --destructive-foreground: #303446; + --border: #51576d; + --input: #414559; + --ring: #8caaee; + --chart-1: #8caaee; + --chart-2: #ca9ee6; + --chart-3: #e78284; + --chart-4: #a6d189; + --chart-5: #ef9f76; + --radius: 0.75rem; + --sidebar: #232634; + --sidebar-foreground: #c6d0f5; + --sidebar-primary: #414559; + --sidebar-primary-foreground: #c6d0f5; + --sidebar-accent: #292c3c; + --sidebar-accent-foreground: #c6d0f5; + --sidebar-border: #51576d; + --sidebar-ring: #8caaee; +} + +/* ─── Catppuccin Latte (Light) ─── */ +.catppuccin-latte { + --background: #eff1f5; + --foreground: #4c4f69; + --card: #e6e9ef; + --card-foreground: #4c4f69; + --popover: #e6e9ef; + --popover-foreground: #4c4f69; + --primary: #1e66f5; + --primary-foreground: #eff1f5; + --secondary: #ccd0da; + --secondary-foreground: #4c4f69; + --muted: #ccd0da; + --muted-foreground: #6c6f85; + --accent: #8839ef; + --accent-foreground: #eff1f5; + --destructive: #d20f39; + --destructive-foreground: #eff1f5; + --border: #bcc0cc; + --input: #ccd0da; + --ring: #1e66f5; + --chart-1: #1e66f5; + --chart-2: #8839ef; + --chart-3: #d20f39; + --chart-4: #40a02b; + --chart-5: #fe640b; + --radius: 0.75rem; + --sidebar: #dce0e8; + --sidebar-foreground: #4c4f69; + --sidebar-primary: #ccd0da; + --sidebar-primary-foreground: #4c4f69; + --sidebar-accent: #e6e9ef; + --sidebar-accent-foreground: #4c4f69; + --sidebar-border: #bcc0cc; + --sidebar-ring: #1e66f5; +} + +/* ─── Dracula ─── */ +.dracula { + --background: #282a36; + --foreground: #f8f8f2; + --card: #21222c; + --card-foreground: #f8f8f2; + --popover: #21222c; + --popover-foreground: #f8f8f2; + --primary: #bd93f9; + --primary-foreground: #282a36; + --secondary: #44475a; + --secondary-foreground: #f8f8f2; + --muted: #44475a; + --muted-foreground: #6272a4; + --accent: #ff79c6; + --accent-foreground: #282a36; + --destructive: #ff5555; + --destructive-foreground: #f8f8f2; + --border: #44475a; + --input: #44475a; + --ring: #bd93f9; + --chart-1: #bd93f9; + --chart-2: #ff79c6; + --chart-3: #8be9fd; + --chart-4: #50fa7b; + --chart-5: #ffb86c; + --radius: 0.75rem; + --sidebar: #1e1f29; + --sidebar-foreground: #f8f8f2; + --sidebar-primary: #44475a; + --sidebar-primary-foreground: #f8f8f2; + --sidebar-accent: #21222c; + --sidebar-accent-foreground: #f8f8f2; + --sidebar-border: #44475a; + --sidebar-ring: #bd93f9; +} + +/* ─── Nord ─── */ +.nord { + --background: #2e3440; + --foreground: #eceff4; + --card: #3b4252; + --card-foreground: #eceff4; + --popover: #3b4252; + --popover-foreground: #eceff4; + --primary: #88c0d0; + --primary-foreground: #2e3440; + --secondary: #434c5e; + --secondary-foreground: #eceff4; + --muted: #434c5e; + --muted-foreground: #d8dee9; + --accent: #81a1c1; + --accent-foreground: #2e3440; + --destructive: #bf616a; + --destructive-foreground: #eceff4; + --border: #4c566a; + --input: #434c5e; + --ring: #88c0d0; + --chart-1: #88c0d0; + --chart-2: #81a1c1; + --chart-3: #bf616a; + --chart-4: #a3be8c; + --chart-5: #ebcb8b; + --radius: 0.75rem; + --sidebar: #2e3440; + --sidebar-foreground: #eceff4; + --sidebar-primary: #434c5e; + --sidebar-primary-foreground: #eceff4; + --sidebar-accent: #3b4252; + --sidebar-accent-foreground: #eceff4; + --sidebar-border: #4c566a; + --sidebar-ring: #88c0d0; +} + +/* ─── Gruvbox Dark ─── */ +.gruvbox { + --background: #282828; + --foreground: #ebdbb2; + --card: #1d2021; + --card-foreground: #ebdbb2; + --popover: #1d2021; + --popover-foreground: #ebdbb2; + --primary: #fabd2f; + --primary-foreground: #282828; + --secondary: #3c3836; + --secondary-foreground: #ebdbb2; + --muted: #3c3836; + --muted-foreground: #a89984; + --accent: #d65d0e; + --accent-foreground: #ebdbb2; + --destructive: #cc241d; + --destructive-foreground: #ebdbb2; + --border: #504945; + --input: #3c3836; + --ring: #fabd2f; + --chart-1: #fabd2f; + --chart-2: #d65d0e; + --chart-3: #cc241d; + --chart-4: #98971a; + --chart-5: #689d6a; + --radius: 0.75rem; + --sidebar: #1d2021; + --sidebar-foreground: #ebdbb2; + --sidebar-primary: #3c3836; + --sidebar-primary-foreground: #ebdbb2; + --sidebar-accent: #282828; + --sidebar-accent-foreground: #ebdbb2; + --sidebar-border: #504945; + --sidebar-ring: #fabd2f; +} + +/* ─── Solarized Dark ─── */ +.solarized { + --background: #002b36; + --foreground: #839496; + --card: #073642; + --card-foreground: #93a1a1; + --popover: #073642; + --popover-foreground: #93a1a1; + --primary: #268bd2; + --primary-foreground: #fdf6e3; + --secondary: #073642; + --secondary-foreground: #839496; + --muted: #073642; + --muted-foreground: #586e75; + --accent: #2aa198; + --accent-foreground: #fdf6e3; + --destructive: #dc322f; + --destructive-foreground: #fdf6e3; + --border: #094050; + --input: #073642; + --ring: #268bd2; + --chart-1: #268bd2; + --chart-2: #2aa198; + --chart-3: #dc322f; + --chart-4: #859900; + --chart-5: #b58900; + --radius: 0.75rem; + --sidebar: #001e27; + --sidebar-foreground: #839496; + --sidebar-primary: #073642; + --sidebar-primary-foreground: #93a1a1; + --sidebar-accent: #002b36; + --sidebar-accent-foreground: #839496; + --sidebar-border: #094050; + --sidebar-ring: #268bd2; +} + +/* ─── Tokyo Night ─── */ +.tokyo-night { + --background: #1a1b26; + --foreground: #c0caf5; + --card: #16161e; + --card-foreground: #c0caf5; + --popover: #16161e; + --popover-foreground: #c0caf5; + --primary: #7aa2f7; + --primary-foreground: #1a1b26; + --secondary: #292e42; + --secondary-foreground: #c0caf5; + --muted: #292e42; + --muted-foreground: #565f89; + --accent: #bb9af7; + --accent-foreground: #1a1b26; + --destructive: #f7768e; + --destructive-foreground: #1a1b26; + --border: #3b4261; + --input: #292e42; + --ring: #7aa2f7; + --chart-1: #7aa2f7; + --chart-2: #bb9af7; + --chart-3: #f7768e; + --chart-4: #9ece6a; + --chart-5: #ff9e64; + --radius: 0.75rem; + --sidebar: #16161e; + --sidebar-foreground: #c0caf5; + --sidebar-primary: #292e42; + --sidebar-primary-foreground: #c0caf5; + --sidebar-accent: #1a1b26; + --sidebar-accent-foreground: #c0caf5; + --sidebar-border: #3b4261; + --sidebar-ring: #7aa2f7; +} + +/* ─── One Dark ─── */ +.one-dark { + --background: #282c34; + --foreground: #abb2bf; + --card: #21252b; + --card-foreground: #abb2bf; + --popover: #21252b; + --popover-foreground: #abb2bf; + --primary: #61afef; + --primary-foreground: #282c34; + --secondary: #3e4451; + --secondary-foreground: #abb2bf; + --muted: #3e4451; + --muted-foreground: #5c6370; + --accent: #c678dd; + --accent-foreground: #282c34; + --destructive: #e06c75; + --destructive-foreground: #282c34; + --border: #4b5263; + --input: #3e4451; + --ring: #61afef; + --chart-1: #61afef; + --chart-2: #c678dd; + --chart-3: #e06c75; + --chart-4: #98c379; + --chart-5: #e5c07b; + --radius: 0.75rem; + --sidebar: #21252b; + --sidebar-foreground: #abb2bf; + --sidebar-primary: #3e4451; + --sidebar-primary-foreground: #abb2bf; + --sidebar-accent: #282c34; + --sidebar-accent-foreground: #abb2bf; + --sidebar-border: #4b5263; + --sidebar-ring: #61afef; +} + +/* ─── Rosé Pine ─── */ +.rose-pine { + --background: #191724; + --foreground: #e0def4; + --card: #1f1d2e; + --card-foreground: #e0def4; + --popover: #1f1d2e; + --popover-foreground: #e0def4; + --primary: #c4a7e7; + --primary-foreground: #191724; + --secondary: #26233a; + --secondary-foreground: #e0def4; + --muted: #26233a; + --muted-foreground: #6e6a86; + --accent: #ebbcba; + --accent-foreground: #191724; + --destructive: #eb6f92; + --destructive-foreground: #191724; + --border: #393552; + --input: #26233a; + --ring: #c4a7e7; + --chart-1: #c4a7e7; + --chart-2: #ebbcba; + --chart-3: #eb6f92; + --chart-4: #9ccfd8; + --chart-5: #f6c177; + --radius: 0.75rem; + --sidebar: #191724; + --sidebar-foreground: #e0def4; + --sidebar-primary: #26233a; + --sidebar-primary-foreground: #e0def4; + --sidebar-accent: #1f1d2e; + --sidebar-accent-foreground: #e0def4; + --sidebar-border: #393552; + --sidebar-ring: #c4a7e7; +} + @theme inline { /* optional: --font-sans, --font-serif, --font-mono if they are applied in the layout.tsx */ --color-background: var(--background); diff --git a/app/layout.tsx b/app/layout.tsx index debc5ad..d08abed 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -12,7 +12,7 @@ import { CurrencyProvider } from "@/packages/core/hooks/use-currency" import { LocaleProvider } from "@/packages/core/hooks/use-locale" import { LayoutChrome } from "@/packages/ui/components/layout-chrome" import { AuthProvider } from "@/packages/auth/components" -import { startScheduler } from "@/packages/core/lib/scheduler" +import { QueryClientProvider } from "@/packages/core/lib/query-client" const geist = Geist({ subsets: ["latin"], @@ -81,17 +81,10 @@ export default async function RootLayout({ }: Readonly<{ children: React.ReactNode }>) { - // Ensure background scheduler is started (idempotent) - try { - // don't await to avoid delaying SSR - startScheduler() - } catch (e) { - console.error("Failed to start scheduler:", e) - } // Read theme preference from cookie on the server so SSR can render the correct class const cookieStore = await cookies() const themeCookie = cookieStore.get("theme")?.value - const knownThemes = ["light", "dark", "midnight", "rose", "forest", "desert", "ocean"] + const knownThemes = ["light", "dark", "midnight", "rose", "forest", "desert", "ocean", "slate", "crimson", "emerald", "amber", "teal", "lavender", "violet", "stranger", "christmas", "newyear", "catppuccin-mocha", "catppuccin-macchiato", "catppuccin-frappe", "catppuccin-latte", "dracula", "nord", "gruvbox", "solarized", "tokyo-night", "one-dark", "rose-pine"] const themeClass = themeCookie && knownThemes.includes(themeCookie) ? themeCookie : undefined // Get locale and messages for next-intl @@ -113,19 +106,21 @@ export default async function RootLayout({ - - - - - - - {children} - - - - - - + + + + + + + + {children} + + + + + + + diff --git a/app/setup/page.tsx b/app/setup/page.tsx index 3e1efc4..e6948f1 100644 --- a/app/setup/page.tsx +++ b/app/setup/page.tsx @@ -2,6 +2,7 @@ import { useState, useEffect } from "react" import { useRouter } from "next/navigation" +import { useApiQuery, useApiMutation } from "@/packages/core" import { Server, Database, @@ -46,8 +47,6 @@ type Step = "welcome" | "site" | "panels" | "pterodactyl" | "virtfusion" | "opti export default function SetupPage() { const router = useRouter() const { toast } = useToast() - const [loading, setLoading] = useState(false) - const [setupStatus, setSetupStatus] = useState(null) const [testingConnections, setTestingConnections] = useState>({}) const [testResults, setTestResults] = useState>({}) const [currentStep, setCurrentStep] = useState("welcome") @@ -78,160 +77,152 @@ export default function SetupPage() { crowdinPersonalToken: "", }) - // Load current setup status on mount + // Fetch setup status using React Query + const { data: setupStatus } = useApiQuery("/api/v1/setup") + + // Test connection mutation + const testConnectionMutation = useApiMutation< + { testResults: Record }, + Record + >("POST", "/api/v1/setup/test", { + onSuccess: (data) => { + setTestResults((prev) => ({ ...prev, ...data.testResults })) + }, + }) + + // Save configuration mutation + const saveConfigMutation = useApiMutation< + { success: boolean; configured?: Record }, + Record + >("POST", "/api/v1/setup", { + onSuccess: (data) => { + if (data.success) { + toast({ + title: "Configuration saved", + description: "Your settings have been saved successfully", + }) + } + }, + }) + + // Initialize from setup status useEffect(() => { - const loadStatus = async () => { - try { - const response = await fetch("/api/setup") - const data = await response.json() - setSetupStatus(data) - - // Pre-fill form with existing values - if (data.configured) { - setFormData((prev) => ({ - ...prev, - siteName: data.configured.siteName || prev.siteName, - siteUrl: data.configured.siteUrl || prev.siteUrl, - faviconUrl: data.configured.faviconUrl || prev.faviconUrl, - pterodactylUrl: data.configured.pterodactylUrl || prev.pterodactylUrl, - virtfusionUrl: data.configured.virtfusionUrl || prev.virtfusionUrl, - })) - - // Auto-select panels if already configured - if (data.configured.pterodactylUrl) { - setSelectedPanels((prev) => ({ ...prev, pterodactyl: true })) - } - if (data.configured.virtfusionUrl) { - setSelectedPanels((prev) => ({ ...prev, virtfusion: true })) - } + if (setupStatus) { + // Pre-fill form with existing values + if (setupStatus.configured) { + setFormData((prev) => ({ + ...prev, + siteName: setupStatus.configured.siteName || prev.siteName, + siteUrl: setupStatus.configured.siteUrl || prev.siteUrl, + faviconUrl: setupStatus.configured.faviconUrl || prev.faviconUrl, + pterodactylUrl: setupStatus.configured.pterodactylUrl || prev.pterodactylUrl, + virtfusionUrl: setupStatus.configured.virtfusionUrl || prev.virtfusionUrl, + })) + + // Auto-select panels if already configured + if (setupStatus.configured.pterodactylUrl) { + setSelectedPanels((prev) => ({ ...prev, pterodactyl: true })) } - - // Skip to appropriate step if already partially configured - if (data.components?.siteInfo && !data.isComplete) { - setCurrentStep("panels") + if (setupStatus.configured.virtfusionUrl) { + setSelectedPanels((prev) => ({ ...prev, virtfusion: true })) } - } catch (error) { - console.error("Failed to load setup status:", error) } - } - loadStatus() - }, []) + // Skip to appropriate step if already partially configured + if (setupStatus.components?.siteInfo && !setupStatus.isComplete) { + setCurrentStep("panels") + } + } + }, [setupStatus]) const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target setFormData((prev) => ({ ...prev, [name]: value })) } - const handleTestConnection = async (type: "pterodactyl" | "virtfusion") => { + const handleTestConnection = (type: "pterodactyl" | "virtfusion") => { setTestingConnections((prev) => ({ ...prev, [type]: true })) - try { - const body: Record = { testConnections: true } - - if (type === "pterodactyl") { - body.pterodactylUrl = formData.pterodactylUrl - body.pterodactylApiKey = formData.pterodactylApiKey - } else if (type === "virtfusion") { - body.virtfusionUrl = formData.virtfusionUrl - body.virtfusionApiKey = formData.virtfusionApiKey - } - - const response = await fetch("/api/setup", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify(body), - }) + const body: Record = { testConnections: true } - const data = await response.json() - - if (data.testResults?.[type]) { - setTestResults((prev) => ({ ...prev, [type]: data.testResults[type] })) - const result = data.testResults[type] - - if (result.success) { - toast({ - title: "Connection Successful", - description: result.database - ? `Connected to database: ${result.database}` - : `Connected to ${type} panel (${result.latency}ms)`, - }) - } else { - toast({ - variant: "destructive", - title: "Connection Failed", - description: result.error || "Unable to establish connection", - }) - } - } - } catch (error) { - console.error(`Failed to test ${type} connection:`, error) - toast({ - variant: "destructive", - title: "Error", - description: `Failed to test ${type} connection`, - }) - } finally { - setTestingConnections((prev) => ({ ...prev, [type]: false })) + if (type === "pterodactyl") { + body.pterodactylUrl = formData.pterodactylUrl + body.pterodactylApiKey = formData.pterodactylApiKey + } else if (type === "virtfusion") { + body.virtfusionUrl = formData.virtfusionUrl + body.virtfusionApiKey = formData.virtfusionApiKey } - } - - const saveConfiguration = async (configType: "site" | "pterodactyl" | "virtfusion" | "optional") => { - setLoading(true) - - try { - const body: Record = {} - - if (configType === "site") { - body.siteName = formData.siteName - body.siteUrl = formData.siteUrl - body.faviconUrl = formData.faviconUrl || null - } else if (configType === "pterodactyl") { - body.pterodactylUrl = formData.pterodactylUrl - body.pterodactylApiKey = formData.pterodactylApiKey - body.pterodactylApi = formData.pterodactylApi - } else if (configType === "virtfusion") { - body.virtfusionUrl = formData.virtfusionUrl - body.virtfusionApiKey = formData.virtfusionApiKey - body.virtfusionApi = formData.virtfusionApi - } else if (configType === "optional") { - // Only add optional fields if they have values - if (formData.githubToken) body.githubToken = formData.githubToken - if (formData.resendApiKey) body.resendApiKey = formData.resendApiKey - if (formData.crowdinProjectId) body.crowdinProjectId = formData.crowdinProjectId - if (formData.crowdinPersonalToken) body.crowdinPersonalToken = formData.crowdinPersonalToken - } - - const response = await fetch("/api/setup", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify(body), - }) - - const data = await response.json() - if (!response.ok) { + testConnectionMutation.mutate(body, { + onSuccess: (data) => { + setTestingConnections((prev) => ({ ...prev, [type]: false })) + if (data.testResults?.[type]) { + const result = data.testResults[type] + + if (result.success) { + toast({ + title: "Connection Successful", + description: result.database + ? `Connected to database: ${result.database}` + : `Connected to ${type} panel (${result.latency}ms)`, + }) + } else { + toast({ + variant: "destructive", + title: "Connection Failed", + description: result.error || "Unable to establish connection", + }) + } + } + }, + onError: () => { + setTestingConnections((prev) => ({ ...prev, [type]: false })) toast({ variant: "destructive", - title: "Save Failed", - description: data.error || "Failed to save configuration", + title: "Error", + description: `Failed to test ${type} connection`, }) - return false - } + }, + }) + } - setSetupStatus(data) - return true - } catch (error) { - console.error("Save error:", error) - toast({ - variant: "destructive", - title: "Error", - description: "An unexpected error occurred", - }) - return false - } finally { - setLoading(false) + const saveConfiguration = async (configType: "site" | "pterodactyl" | "virtfusion" | "optional") => { + const body: Record = {} + + if (configType === "site") { + body.siteName = formData.siteName + body.siteUrl = formData.siteUrl + body.faviconUrl = formData.faviconUrl || null + } else if (configType === "pterodactyl") { + body.pterodactylUrl = formData.pterodactylUrl + body.pterodactylApiKey = formData.pterodactylApiKey + body.pterodactylApi = formData.pterodactylApi + } else if (configType === "virtfusion") { + body.virtfusionUrl = formData.virtfusionUrl + body.virtfusionApiKey = formData.virtfusionApiKey + body.virtfusionApi = formData.virtfusionApi + } else if (configType === "optional") { + // Only add optional fields if they have values + if (formData.githubToken) body.githubToken = formData.githubToken + if (formData.resendApiKey) body.resendApiKey = formData.resendApiKey + if (formData.crowdinProjectId) body.crowdinProjectId = formData.crowdinProjectId + if (formData.crowdinPersonalToken) body.crowdinPersonalToken = formData.crowdinPersonalToken } + + return new Promise((resolve) => { + saveConfigMutation.mutate(body, { + onSuccess: (data) => { + if (data.success) { + resolve(true) + } else { + resolve(false) + } + }, + onError: () => { + resolve(false) + }, + }) + }) } const handleCompleteSetup = async () => { diff --git a/bun.lock b/bun.lock index 0cb400b..00c9467 100644 --- a/bun.lock +++ b/bun.lock @@ -5,8 +5,6 @@ "name": "defyx", "dependencies": { "@hookform/resolvers": "^3.10.0", - "@prisma/adapter-pg": "^7.2.0", - "@prisma/client": "^7.2.0", "@radix-ui/react-accordion": "1.2.2", "@radix-ui/react-alert-dialog": "1.1.4", "@radix-ui/react-aspect-ratio": "1.1.1", @@ -36,6 +34,8 @@ "@radix-ui/react-tooltip": "1.1.6", "@react-three/drei": "10.7.6", "@react-three/fiber": "9.4.0", + "@tanstack/react-query": "^5.90.16", + "@tanstack/react-query-devtools": "^5.91.2", "@vercel/analytics": "latest", "autoprefixer": "^10.4.20", "bcryptjs": "^3.0.3", @@ -51,10 +51,8 @@ "jsonwebtoken": "^9.0.3", "lucide-react": "^0.454.0", "next": "^16.1.0", - "next-auth": "^5.0.0-beta.30", "next-intl": "^4.6.1", "next-themes": "^0.4.6", - "prisma": "^7.2.0", "react": "^19.2.3", "react-day-picker": "9.8.0", "react-dom": "^19.2.3", @@ -102,8 +100,6 @@ "packages": { "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], - "@auth/core": ["@auth/core@0.41.0", "", { "dependencies": { "@panva/hkdf": "^1.2.1", "jose": "^6.0.6", "oauth4webapi": "^3.3.0", "preact": "10.24.3", "preact-render-to-string": "6.5.11" }, "peerDependencies": { "@simplewebauthn/browser": "^9.0.1", "@simplewebauthn/server": "^9.0.2", "nodemailer": "^6.8.0" }, "optionalPeers": ["@simplewebauthn/browser", "@simplewebauthn/server", "nodemailer"] }, "sha512-Wd7mHPQ/8zy6Qj7f4T46vg3aoor8fskJm6g2Zyj064oQ3+p0xNZXAV60ww0hY+MbTesfu29kK14Zk5d5JTazXQ=="], - "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], "@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], @@ -138,14 +134,6 @@ "@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], - "@chevrotain/cst-dts-gen": ["@chevrotain/cst-dts-gen@10.5.0", "", { "dependencies": { "@chevrotain/gast": "10.5.0", "@chevrotain/types": "10.5.0", "lodash": "4.17.21" } }, "sha512-lhmC/FyqQ2o7pGK4Om+hzuDrm9rhFYIJ/AXoQBeongmn870Xeb0L6oGEiuR8nohFNL5sMaQEJWCxr1oIVIVXrw=="], - - "@chevrotain/gast": ["@chevrotain/gast@10.5.0", "", { "dependencies": { "@chevrotain/types": "10.5.0", "lodash": "4.17.21" } }, "sha512-pXdMJ9XeDAbgOWKuD1Fldz4ieCs6+nLNmyVhe2gZVqoO7v8HXuHYs5OV2EzUtbuai37TlOAQHrTDvxMnvMJz3A=="], - - "@chevrotain/types": ["@chevrotain/types@10.5.0", "", {}, "sha512-f1MAia0x/pAVPWH/T73BJVyO2XU5tI4/iE7cnxb7tqdNTNhQI3Uq3XkqcoteTmD4t1aM0LbHCJOhgIDn07kl2A=="], - - "@chevrotain/utils": ["@chevrotain/utils@10.5.0", "", {}, "sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ=="], - "@commitlint/cli": ["@commitlint/cli@20.2.0", "", { "dependencies": { "@commitlint/format": "^20.2.0", "@commitlint/lint": "^20.2.0", "@commitlint/load": "^20.2.0", "@commitlint/read": "^20.2.0", "@commitlint/types": "^20.2.0", "tinyexec": "^1.0.0", "yargs": "^17.0.0" }, "bin": { "commitlint": "./cli.js" } }, "sha512-l37HkrPZ2DZy26rKiTUvdq/LZtlMcxz+PeLv9dzK9NzoFGuJdOQyYU7IEkEQj0pO++uYue89wzOpZ0hcTtoqUA=="], "@commitlint/config-conventional": ["@commitlint/config-conventional@20.2.0", "", { "dependencies": { "@commitlint/types": "^20.2.0", "conventional-changelog-conventionalcommits": "^7.0.2" } }, "sha512-MsRac+yNIbTB4Q/psstKK4/ciVzACHicSwz+04Sxve+4DW+PiJeTjU0JnS4m/oOnulrXYN+yBPlKaBSGemRfgQ=="], @@ -184,12 +172,6 @@ "@dimforge/rapier3d-compat": ["@dimforge/rapier3d-compat@0.12.0", "", {}, "sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow=="], - "@electric-sql/pglite": ["@electric-sql/pglite@0.3.2", "", {}, "sha512-zfWWa+V2ViDCY/cmUfRqeWY1yLto+EpxjXnZzenB1TyxsTiXaTWeZFIZw6mac52BsuQm0RjCnisjBtdBaXOI6w=="], - - "@electric-sql/pglite-socket": ["@electric-sql/pglite-socket@0.0.6", "", { "peerDependencies": { "@electric-sql/pglite": "0.3.2" }, "bin": { "pglite-server": "dist/scripts/server.js" } }, "sha512-6RjmgzphIHIBA4NrMGJsjNWK4pu+bCWJlEWlwcxFTVY3WT86dFpKwbZaGWZV6C5Rd7sCk1Z0CI76QEfukLAUXw=="], - - "@electric-sql/pglite-tools": ["@electric-sql/pglite-tools@0.2.7", "", { "peerDependencies": { "@electric-sql/pglite": "0.3.2" } }, "sha512-9dAccClqxx4cZB+Ar9B+FZ5WgxDc/Xvl9DPrTWv+dYTf0YNubLzi4wHHRGRGhrJv15XwnyKcGOZAP1VXSneSUg=="], - "@emnapi/core": ["@emnapi/core@1.7.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg=="], "@emnapi/runtime": ["@emnapi/runtime@1.7.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA=="], @@ -230,8 +212,6 @@ "@formatjs/intl-localematcher": ["@formatjs/intl-localematcher@0.5.10", "", { "dependencies": { "tslib": "2" } }, "sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q=="], - "@hono/node-server": ["@hono/node-server@1.19.6", "", { "peerDependencies": { "hono": "^4" } }, "sha512-Shz/KjlIeAhfiuE93NDKVdZ7HdBVLQAfdbaXEaoAVO3ic9ibRSLGIQGkcBbFyuLr+7/1D5ZCINM8B+6IvXeMtw=="], - "@hookform/resolvers": ["@hookform/resolvers@3.10.0", "", { "peerDependencies": { "react-hook-form": "^7.0.0" } }, "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag=="], "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], @@ -306,8 +286,6 @@ "@monogrid/gainmap-js": ["@monogrid/gainmap-js@3.4.0", "", { "dependencies": { "promise-worker-transferable": "^1.0.4" }, "peerDependencies": { "three": ">= 0.159.0" } }, "sha512-2Z0FATFHaoYJ8b+Y4y4Hgfn3FRFwuU5zRrk+9dFWp4uGAdHGqVEdP7HP+gLA3X469KXHmfupJaUbKo1b/aDKIg=="], - "@mrleebo/prisma-ast": ["@mrleebo/prisma-ast@0.12.1", "", { "dependencies": { "chevrotain": "^10.5.0", "lilconfig": "^2.1.0" } }, "sha512-JwqeCQ1U3fvccttHZq7Tk0m/TMC6WcFAQZdukypW3AzlJYKYTGNVd1ANU2GuhKnv4UQuOFj3oAl0LLG/gxFN1w=="], - "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" } }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="], "@next/env": ["@next/env@16.1.0", "", {}, "sha512-Dd23XQeFHmhf3KBW76leYVkejHlCdB7erakC2At2apL1N08Bm+dLYNP+nNHh0tzUXfPQcNcXiQyacw0PG4Fcpw=="], @@ -338,8 +316,6 @@ "@nolyfill/is-core-module": ["@nolyfill/is-core-module@1.0.39", "", {}, "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA=="], - "@panva/hkdf": ["@panva/hkdf@1.2.1", "", {}, "sha512-6oclG6Y3PiDFcoyk8srjLfVKyMfVCKJ27JwNPViuXziFpmdz+MZnZN/aKY0JGXgYuO/VghU0jcOAZgWXZ1Dmrw=="], - "@parcel/watcher": ["@parcel/watcher@2.5.1", "", { "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", "micromatch": "^4.0.5", "node-addon-api": "^7.0.0" }, "optionalDependencies": { "@parcel/watcher-android-arm64": "2.5.1", "@parcel/watcher-darwin-arm64": "2.5.1", "@parcel/watcher-darwin-x64": "2.5.1", "@parcel/watcher-freebsd-x64": "2.5.1", "@parcel/watcher-linux-arm-glibc": "2.5.1", "@parcel/watcher-linux-arm-musl": "2.5.1", "@parcel/watcher-linux-arm64-glibc": "2.5.1", "@parcel/watcher-linux-arm64-musl": "2.5.1", "@parcel/watcher-linux-x64-glibc": "2.5.1", "@parcel/watcher-linux-x64-musl": "2.5.1", "@parcel/watcher-win32-arm64": "2.5.1", "@parcel/watcher-win32-ia32": "2.5.1", "@parcel/watcher-win32-x64": "2.5.1" } }, "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg=="], "@parcel/watcher-android-arm64": ["@parcel/watcher-android-arm64@2.5.1", "", { "os": "android", "cpu": "arm64" }, "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA=="], @@ -368,32 +344,6 @@ "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.1", "", { "os": "win32", "cpu": "x64" }, "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA=="], - "@prisma/adapter-pg": ["@prisma/adapter-pg@7.2.0", "", { "dependencies": { "@prisma/driver-adapter-utils": "7.2.0", "pg": "^8.16.3", "postgres-array": "3.0.4" } }, "sha512-euIdQ13cRB2wZ3jPsnDnFhINquo1PYFPCg6yVL8b2rp3EdinQHsX9EDdCtRr489D5uhphcRk463OdQAFlsCr0w=="], - - "@prisma/client": ["@prisma/client@7.2.0", "", { "dependencies": { "@prisma/client-runtime-utils": "7.2.0" }, "peerDependencies": { "prisma": "*", "typescript": ">=5.4.0" }, "optionalPeers": ["prisma", "typescript"] }, "sha512-JdLF8lWZ+LjKGKpBqyAlenxd/kXjd1Abf/xK+6vUA7R7L2Suo6AFTHFRpPSdAKCan9wzdFApsUpSa/F6+t1AtA=="], - - "@prisma/client-runtime-utils": ["@prisma/client-runtime-utils@7.2.0", "", {}, "sha512-dn7oB53v0tqkB0wBdMuTNFNPdEbfICEUe82Tn9FoKAhJCUkDH+fmyEp0ClciGh+9Hp2Tuu2K52kth2MTLstvmA=="], - - "@prisma/config": ["@prisma/config@7.2.0", "", { "dependencies": { "c12": "3.1.0", "deepmerge-ts": "7.1.5", "effect": "3.18.4", "empathic": "2.0.0" } }, "sha512-qmvSnfQ6l/srBW1S7RZGfjTQhc44Yl3ldvU6y3pgmuLM+83SBDs6UQVgMtQuMRe9J3gGqB0RF8wER6RlXEr6jQ=="], - - "@prisma/debug": ["@prisma/debug@7.2.0", "", {}, "sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw=="], - - "@prisma/dev": ["@prisma/dev@0.17.0", "", { "dependencies": { "@electric-sql/pglite": "0.3.2", "@electric-sql/pglite-socket": "0.0.6", "@electric-sql/pglite-tools": "0.2.7", "@hono/node-server": "1.19.6", "@mrleebo/prisma-ast": "0.12.1", "@prisma/get-platform": "6.8.2", "@prisma/query-plan-executor": "6.18.0", "foreground-child": "3.3.1", "get-port-please": "3.1.2", "hono": "4.10.6", "http-status-codes": "2.3.0", "pathe": "2.0.3", "proper-lockfile": "4.1.2", "remeda": "2.21.3", "std-env": "3.9.0", "valibot": "1.2.0", "zeptomatch": "2.0.2" } }, "sha512-6sGebe5jxX+FEsQTpjHLzvOGPn6ypFQprcs3jcuIWv1Xp/5v6P/rjfdvAwTkP2iF6pDx2tCd8vGLNWcsWzImTA=="], - - "@prisma/driver-adapter-utils": ["@prisma/driver-adapter-utils@7.2.0", "", { "dependencies": { "@prisma/debug": "7.2.0" } }, "sha512-gzrUcbI9VmHS24Uf+0+7DNzdIw7keglJsD5m/MHxQOU68OhGVzlphQRobLiDMn8CHNA2XN8uugwKjudVtnfMVQ=="], - - "@prisma/engines": ["@prisma/engines@7.2.0", "", { "dependencies": { "@prisma/debug": "7.2.0", "@prisma/engines-version": "7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", "@prisma/fetch-engine": "7.2.0", "@prisma/get-platform": "7.2.0" } }, "sha512-HUeOI/SvCDsHrR9QZn24cxxZcujOjcS3w1oW/XVhnSATAli5SRMOfp/WkG3TtT5rCxDA4xOnlJkW7xkho4nURA=="], - - "@prisma/engines-version": ["@prisma/engines-version@7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", "", {}, "sha512-KezsjCZDsbjNR7SzIiVlUsn9PnLePI7r5uxABlwL+xoerurZTfgQVbIjvjF2sVr3Uc0ZcsnREw3F84HvbggGdA=="], - - "@prisma/fetch-engine": ["@prisma/fetch-engine@7.2.0", "", { "dependencies": { "@prisma/debug": "7.2.0", "@prisma/engines-version": "7.2.0-4.0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", "@prisma/get-platform": "7.2.0" } }, "sha512-Z5XZztJ8Ap+wovpjPD2lQKnB8nWFGNouCrglaNFjxIWAGWz0oeHXwUJRiclIoSSXN/ptcs9/behptSk8d0Yy6w=="], - - "@prisma/get-platform": ["@prisma/get-platform@6.8.2", "", { "dependencies": { "@prisma/debug": "6.8.2" } }, "sha512-vXSxyUgX3vm1Q70QwzwkjeYfRryIvKno1SXbIqwSptKwqKzskINnDUcx85oX+ys6ooN2ATGSD0xN2UTfg6Zcow=="], - - "@prisma/query-plan-executor": ["@prisma/query-plan-executor@6.18.0", "", {}, "sha512-jZ8cfzFgL0jReE1R10gT8JLHtQxjWYLiQ//wHmVYZ2rVkFHoh0DT8IXsxcKcFlfKN7ak7k6j0XMNn2xVNyr5cA=="], - - "@prisma/studio-core": ["@prisma/studio-core@0.9.0", "", { "peerDependencies": { "@types/react": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-xA2zoR/ADu/NCSQuriBKTh6Ps4XjU0bErkEcgMfnSGh346K1VI7iWKnoq1l2DoxUqiddPHIEWwtxJ6xCHG6W7g=="], - "@radix-ui/number": ["@radix-ui/number@1.1.0", "", {}, "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ=="], "@radix-ui/primitive": ["@radix-ui/primitive@1.1.1", "", {}, "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA=="], @@ -508,8 +458,6 @@ "@schummar/icu-type-parser": ["@schummar/icu-type-parser@1.21.5", "", {}, "sha512-bXHSaW5jRTmke9Vd0h5P7BtWZG9Znqb8gSDxZnxaGSJnGwPLDPfS+3g0BKzeWqzgZPsIVZkM7m2tbo18cm5HBw=="], - "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], - "@swc/core": ["@swc/core@1.15.7", "", { "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.25" }, "optionalDependencies": { "@swc/core-darwin-arm64": "1.15.7", "@swc/core-darwin-x64": "1.15.7", "@swc/core-linux-arm-gnueabihf": "1.15.7", "@swc/core-linux-arm64-gnu": "1.15.7", "@swc/core-linux-arm64-musl": "1.15.7", "@swc/core-linux-x64-gnu": "1.15.7", "@swc/core-linux-x64-musl": "1.15.7", "@swc/core-win32-arm64-msvc": "1.15.7", "@swc/core-win32-ia32-msvc": "1.15.7", "@swc/core-win32-x64-msvc": "1.15.7" }, "peerDependencies": { "@swc/helpers": ">=0.5.17" }, "optionalPeers": ["@swc/helpers"] }, "sha512-kTGB8XI7P+pTKW83tnUEDVP4zduF951u3UAOn5eTi0vyW6MvL56A3+ggMdfuVFtDI0/DsbSzf5z34HVBbuScWw=="], "@swc/core-darwin-arm64": ["@swc/core-darwin-arm64@1.15.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-+hNVUfezUid7LeSHqnhoC6Gh3BROABxjlDNInuZ/fie1RUxaEX4qzDwdTgozJELgHhvYxyPIg1ro8ibnKtgO4g=="], @@ -570,6 +518,14 @@ "@tailwindcss/typography": ["@tailwindcss/typography@0.5.19", "", { "dependencies": { "postcss-selector-parser": "6.0.10" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg=="], + "@tanstack/query-core": ["@tanstack/query-core@5.90.16", "", {}, "sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww=="], + + "@tanstack/query-devtools": ["@tanstack/query-devtools@5.92.0", "", {}, "sha512-N8D27KH1vEpVacvZgJL27xC6yPFUy0Zkezn5gnB3L3gRCxlDeSuiya7fKge8Y91uMTnC8aSxBQhcK6ocY7alpQ=="], + + "@tanstack/react-query": ["@tanstack/react-query@5.90.16", "", { "dependencies": { "@tanstack/query-core": "5.90.16" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-bpMGOmV4OPmif7TNMteU/Ehf/hoC0Kf98PDc0F4BZkFrEapRMEqI/V6YS0lyzwSV6PQpY1y4xxArUIfBW5LVxQ=="], + + "@tanstack/react-query-devtools": ["@tanstack/react-query-devtools@5.91.2", "", { "dependencies": { "@tanstack/query-devtools": "5.92.0" }, "peerDependencies": { "@tanstack/react-query": "^5.90.14", "react": "^18 || ^19" } }, "sha512-ZJ1503ay5fFeEYFUdo7LMNFzZryi6B0Cacrgr2h1JRkvikK1khgIq6Nq2EcblqEdIlgB/r7XDW8f8DQ89RuUgg=="], + "@tweenjs/tween.js": ["@tweenjs/tween.js@23.1.3", "", {}, "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA=="], "@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], @@ -746,8 +702,6 @@ "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], - "aws-ssl-profiles": ["aws-ssl-profiles@1.1.2", "", {}, "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g=="], - "axe-core": ["axe-core@4.11.0", "", {}, "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ=="], "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], @@ -778,8 +732,6 @@ "buffer-equal-constant-time": ["buffer-equal-constant-time@1.0.1", "", {}, "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA=="], - "c12": ["c12@3.1.0", "", { "dependencies": { "chokidar": "^4.0.3", "confbox": "^0.2.2", "defu": "^6.1.4", "dotenv": "^16.6.1", "exsolve": "^1.0.7", "giget": "^2.0.0", "jiti": "^2.4.2", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^1.0.0", "pkg-types": "^2.2.0", "rc9": "^2.1.2" }, "peerDependencies": { "magicast": "^0.3.5" }, "optionalPeers": ["magicast"] }, "sha512-uWoS8OU1MEIsOv8p/5a82c3H31LsWVR5qiyXVfBNOzfffjUWtPnhAb4BYI2uG2HfGmZmFjCtui5XNWaps+iFuw=="], - "call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], @@ -808,12 +760,6 @@ "cheerio-select": ["cheerio-select@2.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", "css-what": "^6.1.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1" } }, "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g=="], - "chevrotain": ["chevrotain@10.5.0", "", { "dependencies": { "@chevrotain/cst-dts-gen": "10.5.0", "@chevrotain/gast": "10.5.0", "@chevrotain/types": "10.5.0", "@chevrotain/utils": "10.5.0", "lodash": "4.17.21", "regexp-to-ast": "0.5.0" } }, "sha512-Pkv5rBY3+CsHOYfV5g/Vs5JY9WTHHDEKOlohI2XeygaZhUeqhAlldZ8Hz9cRmxu709bvS08YzxHdTPHhffc13A=="], - - "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], - - "citty": ["citty@0.1.6", "", { "dependencies": { "consola": "^3.2.3" } }, "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ=="], - "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], "cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="], @@ -844,10 +790,6 @@ "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], - "confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="], - - "consola": ["consola@3.4.2", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="], - "conventional-changelog-angular": ["conventional-changelog-angular@7.0.0", "", { "dependencies": { "compare-func": "^2.0.0" } }, "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ=="], "conventional-changelog-conventionalcommits": ["conventional-changelog-conventionalcommits@7.0.2", "", { "dependencies": { "compare-func": "^2.0.0" } }, "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w=="], @@ -920,20 +862,12 @@ "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], - "deepmerge-ts": ["deepmerge-ts@7.1.5", "", {}, "sha512-HOJkrhaYsweh+W+e74Yn7YStZOilkoPb6fycpwNLKzSPtruFs48nYis0zy5yJz1+ktUhHxoRDJ27RQAWLIJVJw=="], - "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], - "defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="], - - "denque": ["denque@2.1.0", "", {}, "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw=="], - "dequal": ["dequal@2.0.3", "", {}, "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA=="], - "destr": ["destr@2.0.5", "", {}, "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="], - "detect-gpu": ["detect-gpu@5.0.70", "", { "dependencies": { "webgl-constants": "^1.1.1" } }, "sha512-bqerEP1Ese6nt3rFkwPnGbsUF9a4q+gMmpTVVOEzoCyeCc+y7/RvJnQZJx1JwhgQI5Ntg0Kgat8Uu7XpBqnz1w=="], "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], @@ -956,16 +890,12 @@ "dot-prop": ["dot-prop@5.3.0", "", { "dependencies": { "is-obj": "^2.0.0" } }, "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q=="], - "dotenv": ["dotenv@16.6.1", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="], - "draco3d": ["draco3d@1.5.7", "", {}, "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ=="], "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], "ecdsa-sig-formatter": ["ecdsa-sig-formatter@1.0.11", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ=="], - "effect": ["effect@3.18.4", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-b1LXQJLe9D11wfnOKAk3PKxuqYshQ0Heez+y5pnkd3jLj1yx9QhM72zZ9uUrOQyNvrs2GZZd/3maL0ZV18YuDA=="], - "electron-to-chromium": ["electron-to-chromium@1.5.262", "", {}, "sha512-NlAsMteRHek05jRUxUR0a5jpjYq9ykk6+kO0yRaMi5moe7u0fVIOeQ3Y30A8dIiWFBNUoQGi1ljb1i5VtS9WQQ=="], "embla-carousel": ["embla-carousel@8.5.1", "", {}, "sha512-JUb5+FOHobSiWQ2EJNaueCNT/cQU9L6XWBbWmorWPQT9bkbk+fhsuLr8wWrzXKagO3oWszBO7MSx+GfaRk4E6A=="], @@ -976,8 +906,6 @@ "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], - "empathic": ["empathic@2.0.0", "", {}, "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA=="], - "encoding-sniffer": ["encoding-sniffer@0.2.1", "", { "dependencies": { "iconv-lite": "^0.6.3", "whatwg-encoding": "^3.1.1" } }, "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw=="], "enhanced-resolve": ["enhanced-resolve@5.18.3", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww=="], @@ -1048,14 +976,10 @@ "eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], - "exsolve": ["exsolve@1.0.8", "", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="], - "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], "extend-shallow": ["extend-shallow@2.0.1", "", { "dependencies": { "is-extendable": "^0.1.0" } }, "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug=="], - "fast-check": ["fast-check@3.23.2", "", { "dependencies": { "pure-rand": "^6.1.0" } }, "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A=="], - "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], "fast-equals": ["fast-equals@5.3.3", "", {}, "sha512-/boTcHZeIAQ2r/tL11voclBHDeP9WPxLt+tyAbVSyyXuUFyh0Tne7gJZTqGbxnvj79TjLdCXLOY7UIPhyG5MTw=="], @@ -1086,8 +1010,6 @@ "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], - "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], - "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="], "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], @@ -1096,8 +1018,6 @@ "functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="], - "generate-function": ["generate-function@2.3.1", "", { "dependencies": { "is-property": "^1.0.2" } }, "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ=="], - "generator-function": ["generator-function@2.0.1", "", {}, "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g=="], "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], @@ -1110,16 +1030,12 @@ "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], - "get-port-please": ["get-port-please@3.1.2", "", {}, "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ=="], - "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], "get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], "get-tsconfig": ["get-tsconfig@4.13.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ=="], - "giget": ["giget@2.0.0", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.0", "defu": "^6.1.4", "node-fetch-native": "^1.6.6", "nypm": "^0.6.0", "pathe": "^2.0.3" }, "bin": { "giget": "dist/cli.mjs" } }, "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA=="], - "git-raw-commits": ["git-raw-commits@4.0.0", "", { "dependencies": { "dargs": "^8.0.0", "meow": "^12.0.1", "split2": "^4.0.0" }, "bin": { "git-raw-commits": "cli.mjs" } }, "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ=="], "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], @@ -1138,8 +1054,6 @@ "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - "grammex": ["grammex@3.1.12", "", {}, "sha512-6ufJOsSA7LcQehIJNCO7HIBykfM7DXQual0Ny780/DEcJIpBlHRvcqEBWGPYd7hrXL2GJ3oJI1MIhaXjWmLQOQ=="], - "gray-matter": ["gray-matter@4.0.3", "", { "dependencies": { "js-yaml": "^3.13.1", "kind-of": "^6.0.2", "section-matter": "^1.0.0", "strip-bom-string": "^1.0.0" } }, "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q=="], "has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], @@ -1178,16 +1092,12 @@ "hls.js": ["hls.js@1.6.15", "", {}, "sha512-E3a5VwgXimGHwpRGV+WxRTKeSp2DW5DI5MWv34ulL3t5UNmyJWCQ1KmLEHbYzcfThfXG8amBL+fCYPneGHC4VA=="], - "hono": ["hono@4.10.6", "", {}, "sha512-BIdolzGpDO9MQ4nu3AUuDwHZZ+KViNm+EZ75Ae55eMXMqLVhDFqEMXxtUe9Qh8hjL+pIna/frs2j6Y2yD5Ua/g=="], - "html-url-attributes": ["html-url-attributes@3.0.1", "", {}, "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ=="], "html-void-elements": ["html-void-elements@3.0.0", "", {}, "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg=="], "htmlparser2": ["htmlparser2@10.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.2.1", "entities": "^6.0.0" } }, "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g=="], - "http-status-codes": ["http-status-codes@2.3.0", "", {}, "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA=="], - "husky": ["husky@9.1.7", "", { "bin": { "husky": "bin.js" } }, "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA=="], "iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], @@ -1270,8 +1180,6 @@ "is-promise": ["is-promise@2.2.2", "", {}, "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ=="], - "is-property": ["is-property@1.0.2", "", {}, "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g=="], - "is-regex": ["is-regex@1.2.1", "", { "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g=="], "is-set": ["is-set@2.0.3", "", {}, "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg=="], @@ -1302,8 +1210,6 @@ "jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], - "jose": ["jose@6.1.3", "", {}, "sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ=="], - "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], "js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], @@ -1366,8 +1272,6 @@ "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw=="], - "lilconfig": ["lilconfig@2.1.0", "", {}, "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ=="], - "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], "lint-staged": ["lint-staged@16.2.7", "", { "dependencies": { "commander": "^14.0.2", "listr2": "^9.0.5", "micromatch": "^4.0.8", "nano-spawn": "^2.0.0", "pidtree": "^0.6.0", "string-argv": "^0.3.2", "yaml": "^2.8.1" }, "bin": { "lint-staged": "bin/lint-staged.js" } }, "sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow=="], @@ -1410,8 +1314,6 @@ "log-update": ["log-update@6.1.0", "", { "dependencies": { "ansi-escapes": "^7.0.0", "cli-cursor": "^5.0.0", "slice-ansi": "^7.1.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w=="], - "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], - "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], "loose-envify": ["loose-envify@1.4.0", "", { "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, "bin": { "loose-envify": "cli.js" } }, "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="], @@ -1420,8 +1322,6 @@ "lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], - "lru.min": ["lru.min@1.1.3", "", {}, "sha512-Lkk/vx6ak3rYkRR0Nhu4lFUT2VDnQSxBe8Hbl7f36358p6ow8Bnvr8lrLt98H8J1aGxfhbX4Fs5tYg2+FTwr5Q=="], - "lucide-react": ["lucide-react@0.454.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" } }, "sha512-hw7zMDwykCLnEzgncEEjHeA6+45aeEzRYuKHuyRSOPkhko+J3ySGjGIzu+mmMfDFG1vazHepMaYFYHbTFAZAAQ=="], "maath": ["maath@0.10.8", "", { "peerDependencies": { "@types/three": ">=0.134.0", "three": ">=0.134.0" } }, "sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g=="], @@ -1536,10 +1436,6 @@ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - "mysql2": ["mysql2@3.15.3", "", { "dependencies": { "aws-ssl-profiles": "^1.1.1", "denque": "^2.1.0", "generate-function": "^2.3.1", "iconv-lite": "^0.7.0", "long": "^5.2.1", "lru.min": "^1.0.0", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" } }, "sha512-FBrGau0IXmuqg4haEZRBfHNWB5mUARw6hNwPDXXGg0XzVJ50mr/9hb267lvpVMnhZ1FON3qNd4Xfcez1rbFwSg=="], - - "named-placeholders": ["named-placeholders@1.1.6", "", { "dependencies": { "lru.min": "^1.1.0" } }, "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w=="], - "nano-spawn": ["nano-spawn@2.0.0", "", {}, "sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw=="], "nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], @@ -1552,8 +1448,6 @@ "next": ["next@16.1.0", "", { "dependencies": { "@next/env": "16.1.0", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.1.0", "@next/swc-darwin-x64": "16.1.0", "@next/swc-linux-arm64-gnu": "16.1.0", "@next/swc-linux-arm64-musl": "16.1.0", "@next/swc-linux-x64-gnu": "16.1.0", "@next/swc-linux-x64-musl": "16.1.0", "@next/swc-win32-arm64-msvc": "16.1.0", "@next/swc-win32-x64-msvc": "16.1.0", "sharp": "^0.34.4" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-Y+KbmDbefYtHDDQKLNrmzE/YYzG2msqo2VXhzh5yrJ54tx/6TmGdkR5+kP9ma7i7LwZpZMfoY3m/AoPPPKxtVw=="], - "next-auth": ["next-auth@5.0.0-beta.30", "", { "dependencies": { "@auth/core": "0.41.0" }, "peerDependencies": { "@simplewebauthn/browser": "^9.0.1", "@simplewebauthn/server": "^9.0.2", "next": "^14.0.0-0 || ^15.0.0 || ^16.0.0", "nodemailer": "^7.0.7", "react": "^18.2.0 || ^19.0.0" }, "optionalPeers": ["@simplewebauthn/browser", "@simplewebauthn/server", "nodemailer"] }, "sha512-+c51gquM3F6nMVmoAusRJ7RIoY0K4Ts9HCCwyy/BRoe4mp3msZpOzYMyb5LAYc1wSo74PMQkGDcaghIO7W6Xjg=="], - "next-intl": ["next-intl@4.6.1", "", { "dependencies": { "@formatjs/intl-localematcher": "^0.5.4", "@parcel/watcher": "^2.4.1", "@swc/core": "^1.15.2", "negotiator": "^1.0.0", "next-intl-swc-plugin-extractor": "^4.6.1", "po-parser": "^2.0.0", "use-intl": "^4.6.1" }, "peerDependencies": { "next": "^12.0.0 || ^13.0.0 || ^14.0.0 || ^15.0.0 || ^16.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 || ^19.0.0", "typescript": "^5.0.0" }, "optionalPeers": ["typescript"] }, "sha512-KlWgWtKLBPUsTPgxqwyjws1wCMD2QKxLlVjeeGj53DC1JWfKmBShKOrhIP0NznZrRQ0GleeoDUeHSETmyyIFeA=="], "next-intl-swc-plugin-extractor": ["next-intl-swc-plugin-extractor@4.6.1", "", {}, "sha512-+HHNeVERfSvuPDF7LYVn3pxst5Rf7EYdUTw7C7WIrYhcLaKiZ1b9oSRkTQddAN3mifDMCfHqO4kAQ/pcKiBl3A=="], @@ -1562,18 +1456,12 @@ "node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="], - "node-fetch-native": ["node-fetch-native@1.6.7", "", {}, "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="], - "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="], "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], - "nypm": ["nypm@0.6.2", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.2", "pathe": "^2.0.3", "pkg-types": "^2.3.0", "tinyexec": "^1.0.1" }, "bin": { "nypm": "dist/cli.mjs" } }, "sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g=="], - - "oauth4webapi": ["oauth4webapi@3.8.3", "", {}, "sha512-pQ5BsX3QRTgnt5HxgHwgunIRaDXBdkT23tf8dfzmtTIL2LTpdmxgbpbBm0VgFWAIDlezQvQCTgnVIUmHupXHxw=="], - "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], "object-inspect": ["object-inspect@1.13.4", "", {}, "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="], @@ -1590,8 +1478,6 @@ "object.values": ["object.values@1.2.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA=="], - "ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], - "onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], @@ -1620,34 +1506,12 @@ "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], - "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - - "perfect-debounce": ["perfect-debounce@1.0.0", "", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="], - - "pg": ["pg@8.16.3", "", { "dependencies": { "pg-connection-string": "^2.9.1", "pg-pool": "^3.10.1", "pg-protocol": "^1.10.3", "pg-types": "2.2.0", "pgpass": "1.0.5" }, "optionalDependencies": { "pg-cloudflare": "^1.2.7" }, "peerDependencies": { "pg-native": ">=3.0.1" }, "optionalPeers": ["pg-native"] }, "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw=="], - - "pg-cloudflare": ["pg-cloudflare@1.2.7", "", {}, "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg=="], - - "pg-connection-string": ["pg-connection-string@2.9.1", "", {}, "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w=="], - - "pg-int8": ["pg-int8@1.0.1", "", {}, "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="], - - "pg-pool": ["pg-pool@3.10.1", "", { "peerDependencies": { "pg": ">=8.0" } }, "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg=="], - - "pg-protocol": ["pg-protocol@1.10.3", "", {}, "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ=="], - - "pg-types": ["pg-types@2.2.0", "", { "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", "postgres-bytea": "~1.0.0", "postgres-date": "~1.0.4", "postgres-interval": "^1.1.0" } }, "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA=="], - - "pgpass": ["pgpass@1.0.5", "", { "dependencies": { "split2": "^4.1.0" } }, "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug=="], - "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], "picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], "pidtree": ["pidtree@0.6.0", "", { "bin": { "pidtree": "bin/pidtree.js" } }, "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g=="], - "pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], - "po-parser": ["po-parser@2.0.0", "", {}, "sha512-SZvoKi3PoI/hHa2V9je9CW7Xgxl4dvO74cvaa6tWShIHT51FkPxje6pt0gTJznJrU67ix91nDaQp2hUxkOYhKA=="], "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], @@ -1658,44 +1522,22 @@ "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], - "postgres": ["postgres@3.4.7", "", {}, "sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw=="], - - "postgres-array": ["postgres-array@3.0.4", "", {}, "sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ=="], - - "postgres-bytea": ["postgres-bytea@1.0.1", "", {}, "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ=="], - - "postgres-date": ["postgres-date@1.0.7", "", {}, "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q=="], - - "postgres-interval": ["postgres-interval@1.2.0", "", { "dependencies": { "xtend": "^4.0.0" } }, "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ=="], - "potpack": ["potpack@1.0.2", "", {}, "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ=="], - "preact": ["preact@10.24.3", "", {}, "sha512-Z2dPnBnMUfyQfSQ+GBdsGa16hz35YmLmtTLhM169uW944hYL6xzTYkJjC07j+Wosz733pMWx0fgON3JNw1jJQA=="], - - "preact-render-to-string": ["preact-render-to-string@6.5.11", "", { "peerDependencies": { "preact": ">=10" } }, "sha512-ubnauqoGczeGISiOh6RjX0/cdaF8v/oDXIjO85XALCQjwQP+SB4RDXXtvZ6yTYSjG+PC1QRP2AhPgCEsM2EvUw=="], - "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], "prettier": ["prettier@3.7.4", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA=="], - "prisma": ["prisma@7.2.0", "", { "dependencies": { "@prisma/config": "7.2.0", "@prisma/dev": "0.17.0", "@prisma/engines": "7.2.0", "@prisma/studio-core": "0.9.0", "mysql2": "3.15.3", "postgres": "3.4.7" }, "peerDependencies": { "better-sqlite3": ">=9.0.0", "typescript": ">=5.4.0" }, "optionalPeers": ["better-sqlite3", "typescript"], "bin": { "prisma": "build/index.js" } }, "sha512-jSdHWgWOgFF24+nRyyNRVBIgGDQEsMEF8KPHvhBBg3jWyR9fUAK0Nq9ThUmiGlNgq2FA7vSk/ZoCvefod+a8qg=="], - "promise-worker-transferable": ["promise-worker-transferable@1.0.4", "", { "dependencies": { "is-promise": "^2.1.0", "lie": "^3.0.2" } }, "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw=="], "prop-types": ["prop-types@15.8.1", "", { "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", "react-is": "^16.13.1" } }, "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg=="], - "proper-lockfile": ["proper-lockfile@4.1.2", "", { "dependencies": { "graceful-fs": "^4.2.4", "retry": "^0.12.0", "signal-exit": "^3.0.2" } }, "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA=="], - "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], - "pure-rand": ["pure-rand@6.1.0", "", {}, "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA=="], - "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], - "rc9": ["rc9@2.1.2", "", { "dependencies": { "defu": "^6.1.4", "destr": "^2.0.3" } }, "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg=="], - "react": ["react@19.2.3", "", {}, "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA=="], "react-day-picker": ["react-day-picker@9.8.0", "", { "dependencies": { "@date-fns/tz": "1.2.0", "date-fns": "4.1.0", "date-fns-jalali": "4.1.0-0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-E0yhhg7R+pdgbl/2toTb0xBhsEAtmAx1l7qjIWYfcxOy8w4rTSVfbtBoSzVVhPwKP/5E9iL38LivzoE3AQDhCQ=="], @@ -1726,8 +1568,6 @@ "react-use-measure": ["react-use-measure@2.1.7", "", { "peerDependencies": { "react": ">=16.13", "react-dom": ">=16.13" }, "optionalPeers": ["react-dom"] }, "sha512-KrvcAo13I/60HpwGO5jpW7E9DfusKyLPLvuHlUyP5zqnmAPhNc6qTRjUQrdTADl0lpPpDVU2/Gg51UlOGHXbdg=="], - "readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], - "reading-time": ["reading-time@1.5.0", "", {}, "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg=="], "recharts": ["recharts@2.15.4", "", { "dependencies": { "clsx": "^2.0.0", "eventemitter3": "^4.0.1", "lodash": "^4.17.21", "react-is": "^18.3.1", "react-smooth": "^4.0.4", "recharts-scale": "^0.4.4", "tiny-invariant": "^1.3.1", "victory-vendor": "^36.6.8" }, "peerDependencies": { "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw=="], @@ -1736,8 +1576,6 @@ "reflect.getprototypeof": ["reflect.getprototypeof@1.0.10", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-abstract": "^1.23.9", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.7", "get-proto": "^1.0.1", "which-builtin-type": "^1.2.1" } }, "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw=="], - "regexp-to-ast": ["regexp-to-ast@0.5.0", "", {}, "sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw=="], - "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="], "rehype-autolink-headings": ["rehype-autolink-headings@7.1.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@ungap/structured-clone": "^1.0.0", "hast-util-heading-rank": "^3.0.0", "hast-util-is-element": "^3.0.0", "unified": "^11.0.0", "unist-util-visit": "^5.0.0" } }, "sha512-rItO/pSdvnvsP4QRB1pmPiNHUskikqtPojZKJPPPAVx9Hj8i8TwMBhofrrAYRhYOOBZH9tgmG5lPqDLuIWPWmw=="], @@ -1758,8 +1596,6 @@ "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], - "remeda": ["remeda@2.21.3", "", { "dependencies": { "type-fest": "^4.39.1" } }, "sha512-XXrZdLA10oEOQhLLzEJEiFFSKi21REGAkHdImIb4rt/XXy8ORGXh5HCcpUOsElfPNDb+X6TA/+wkh+p2KffYmg=="], - "require-directory": ["require-directory@2.1.1", "", {}, "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q=="], "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], @@ -1772,8 +1608,6 @@ "restore-cursor": ["restore-cursor@5.1.0", "", { "dependencies": { "onetime": "^7.0.0", "signal-exit": "^4.1.0" } }, "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA=="], - "retry": ["retry@0.12.0", "", {}, "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="], - "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], @@ -1796,8 +1630,6 @@ "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "seq-queue": ["seq-queue@0.0.5", "", {}, "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="], - "set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], "set-function-name": ["set-function-name@2.0.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2" } }, "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ=="], @@ -1832,16 +1664,12 @@ "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], - "sqlstring": ["sqlstring@2.3.3", "", {}, "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg=="], - "stable-hash": ["stable-hash@0.0.5", "", {}, "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA=="], "stats-gl": ["stats-gl@2.4.2", "", { "dependencies": { "@types/three": "*", "three": "^0.170.0" } }, "sha512-g5O9B0hm9CvnM36+v7SFl39T7hmAlv541tU81ME8YeSb3i1CIP5/QdDeSB3A0la0bKNHpxpwxOVRo2wFTYEosQ=="], "stats.js": ["stats.js@0.17.0", "", {}, "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw=="], - "std-env": ["std-env@3.9.0", "", {}, "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw=="], - "stop-iteration-iterator": ["stop-iteration-iterator@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" } }, "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ=="], "string-argv": ["string-argv@0.3.2", "", {}, "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q=="], @@ -1930,8 +1758,6 @@ "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], - "type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], - "typed-array-buffer": ["typed-array-buffer@1.0.3", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="], "typed-array-byte-length": ["typed-array-byte-length@1.0.3", "", { "dependencies": { "call-bind": "^1.0.8", "for-each": "^0.3.3", "gopd": "^1.2.0", "has-proto": "^1.2.0", "is-typed-array": "^1.1.14" } }, "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg=="], @@ -1984,8 +1810,6 @@ "utility-types": ["utility-types@3.11.0", "", {}, "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw=="], - "valibot": ["valibot@1.2.0", "", { "peerDependencies": { "typescript": ">=5" }, "optionalPeers": ["typescript"] }, "sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg=="], - "vaul": ["vaul@0.9.9", "", { "dependencies": { "@radix-ui/react-dialog": "^1.1.1" }, "peerDependencies": { "react": "^16.8 || ^17.0 || ^18.0", "react-dom": "^16.8 || ^17.0 || ^18.0" } }, "sha512-7afKg48srluhZwIkaU+lgGtFCUsYBSGOl8vcc8N/M3YQlZFlynHD15AE+pwrYdc826o7nrIND4lL9Y6b9WWZZQ=="], "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], @@ -2016,8 +1840,6 @@ "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], - "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], - "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], @@ -2030,8 +1852,6 @@ "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], - "zeptomatch": ["zeptomatch@2.0.2", "", { "dependencies": { "grammex": "^3.1.10" } }, "sha512-H33jtSKf8Ijtb5BW6wua3G5DhnFjbFML36eFu+VdOoVY4HD9e7ggjqdM6639B+L87rjnR6Y+XeRzBXZdy52B/g=="], - "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], "zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="], @@ -2066,12 +1886,6 @@ "@parcel/watcher/detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], - "@prisma/engines/@prisma/get-platform": ["@prisma/get-platform@7.2.0", "", { "dependencies": { "@prisma/debug": "7.2.0" } }, "sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA=="], - - "@prisma/fetch-engine/@prisma/get-platform": ["@prisma/get-platform@7.2.0", "", { "dependencies": { "@prisma/debug": "7.2.0" } }, "sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA=="], - - "@prisma/get-platform/@prisma/debug": ["@prisma/debug@6.8.2", "", {}, "sha512-4muBSSUwJJ9BYth5N8tqts8JtiLT8QI/RSAzEogwEfpbYGFo9mYsInsVo8dqXdPO2+Rm5OG5q0qWDDE3nyUbVg=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.7.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.7.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA=="], @@ -2126,20 +1940,14 @@ "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], - "mysql2/iconv-lite": ["iconv-lite@0.7.1", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw=="], - "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], "parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], - "pg-types/postgres-array": ["postgres-array@2.0.0", "", {}, "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="], - "prop-types/react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], - "proper-lockfile/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], - "react-dom/scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], "slice-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], diff --git a/docs/CONFIG_SYSTEM.md b/docs/CONFIG_SYSTEM.md deleted file mode 100644 index 19635df..0000000 --- a/docs/CONFIG_SYSTEM.md +++ /dev/null @@ -1,332 +0,0 @@ -# Configuration System Documentation - -## Overview - -The NodeByte configuration system has been completely refactored from a complex encrypted `SystemSettings` table to a simple, flexible **key-value Config store** in the database. This change improves security through database access control, simplifies configuration management, and provides better extensibility. - -## Architecture - -### Config Model (Prisma) -```prisma -model Config { - id String @id @default(cuid()) - key String @unique - value String // Stored as JSON string for complex types - updatedAt DateTime @updatedAt -} -``` - -### Core Config Functions - -Located in `packages/core/lib/config.ts`: - -- **`getConfig(key: string)`** - Get a single configuration value with 1-minute TTL caching -- **`setConfig(key: string, value: string)`** - Create or update a configuration value -- **`getConfigs(...keys: string[])`** - Batch retrieve multiple config values -- **`getAllSettings()`** - Get all configuration as flat object (used by admin panel) -- **`getPanelSettings()`** - Get both Pterodactyl and Virtfusion settings in typed object -- **`getPterodactylSettings()`** - Get Pterodactyl-specific settings -- **`getVirtfusionSettings()`** - Get Virtfusion-specific settings -- **`getSystemState()`** - Get parsed boolean flags for maintenance mode, registration enabled -- **`clearConfigCache()`** - Clear in-memory cache (must call after setConfig) - -## Configuration Keys - -### Panel Settings -Configuration keys for managing game server panels: - -| Key | Type | Description | Example | -|-----|------|-------------|---------| -| `pterodactyl_url` | string | Pterodactyl panel base URL | `https://panel.example.com` | -| `pterodactyl_api_key` | string (sensitive) | Pterodactyl admin API key | `ptla_xxxxxxxxxxxxx` | -| `pterodactyl_api` | string | Pterodactyl API endpoint path | `/api/application` | -| `virtfusion_url` | string | Virtfusion panel base URL | `https://virtfusion.example.com` | -| `virtfusion_api_key` | string (sensitive) | Virtfusion API key | `vf_xxxxxxxxxxxxx` | -| `virtfusion_api` | string | Virtfusion API endpoint path | `/api/v1` | - -### External Service Integrations -Configuration for third-party service connections: - -| Key | Type | Description | Example | -|-----|------|-------------|---------| -| `github_token` | string (sensitive) | GitHub personal access token | `ghp_xxxxxxxxxxxxx` | -| `github_repositories` | JSON array | Repositories to track for releases | `["Owner/repo1", "Owner/repo2"]` | -| `resend_api_key` | string (sensitive) | Resend email service API key | `re_xxxxxxxxxxxxx` | -| `crowdin_project_id` | string | Crowdin project ID | `123456` | -| `crowdin_personal_token` | string (sensitive) | Crowdin personal API token | `xxxxxxxxxxxxxxxxxxxx` | - -### Site Configuration -General website settings: - -| Key | Type | Description | Example | -|-----|------|-------------|---------| -| `site_name` | string | Website name/title | `NodeByte Hosting` | -| `site_url` | string | Website base URL | `https://nodebyte.host` | -| `favicon_url` | string | URL to favicon image | `https://nodebyte.host/favicon.ico` | -| `admin_email` | string | Primary admin email | `admin@nodebyte.host` | - -### Feature Flags -Boolean settings that enable/disable features (stored as "true"/"false" strings): - -| Key | Default | Description | -|-----|---------|-------------| -| `registration_enabled` | `"true"` | Allow new user registration | -| `maintenance_mode` | `"false"` | Enable maintenance mode (blocks access) | -| `email_notifications_enabled` | `"true"` | Allow email notifications via Resend | -| `discord_notifications_enabled` | `"false"` | Allow Discord webhook notifications | -| `auto_sync_enabled` | `"true"` | Enable automatic panel sync jobs | - -### Advanced Settings -Performance and advanced configuration (not yet fully implemented): - -| Key | Default | Description | -|-----|---------|-------------| -| `cache_timeout` | `60` | Config cache TTL in seconds | -| `sync_interval` | `3600` | Panel sync interval in seconds | - -### JSON Serialized Settings -Complex settings stored as JSON strings: - -| Key | Type | Description | -|-----|------|-------------| -| `discord_webhooks` | JSON array | Array of Discord webhook objects | - -## Usage Patterns - -### Getting Configuration Values - -```typescript -import { getConfig, getConfigs, getPterodactylSettings, getSystemState } from "@/packages/core/lib/config" - -// Get single value -const siteName = await getConfig("site_name") - -// Get multiple values at once -const config = await getConfigs("site_name", "site_url", "pterodactyl_url") - -// Get typed settings -const pterodactyl = await getPterodactylSettings() -const { maintenanceMode, registrationEnabled } = await getSystemState() - -// Get all settings (for admin panel) -const allSettings = await getAllSettings() -``` - -### Setting Configuration Values - -```typescript -import { setConfig, clearConfigCache } from "@/packages/core/lib/config" - -// Save a configuration value -await setConfig("site_name", "My Hosting Company") -await setConfig("github_token", "ghp_xxxxxxxxxxxxx") -await setConfig("github_repositories", JSON.stringify(["Owner/repo1", "Owner/repo2"])) - -// Always clear cache after updates -clearConfigCache() -``` - -### Boolean Flags - -```typescript -const { registrationEnabled, maintenanceMode } = await getSystemState() - -// Or manually parse: -const enabled = await getConfig("registration_enabled") -const isEnabled = enabled === "true" // Always compare to string "true" -``` - -## Security - -### Field Masking in API Responses - -Sensitive fields are automatically masked in API responses unless the user has SUPER_ADMIN role: - -**Sensitive Fields (masked if not SUPER_ADMIN):** -- `pterodactyl_api_key` -- `virtfusion_api_key` -- `crowdin_personal_token` -- `github_token` -- `resend_api_key` - -**Masking Example:** -```typescript -// GET /api/admin/settings response -{ - pterodactylUrl: "https://panel.example.com", - pterodactylApiKey: isSuperAdmin(userRoles) - ? "ptla_xxxxxxxxxxxxx" // Full value for SUPER_ADMIN - : "••••••••••••••••••••", // Masked for others -} -``` - -### Access Control - -- Only authenticated admins can view configuration -- Only SUPER_ADMIN can modify sensitive settings (POST) -- Only SUPER_ADMIN can reset/clear API keys (PUT) -- Database-level access control secures sensitive data -- No encryption layer (relies on database security) - -## Configuration Access Patterns - -### Admin Settings Page -Located at: `app/admin/settings/page.tsx` - -Fetches configuration via `GET /api/admin/settings` which: -1. Calls `getAllSettings()` to get all config -2. Masks sensitive values based on user role -3. Tests panel connections in real-time -4. Returns status of external service connections - -### Setup Wizard -Located at: `app/setup/page.tsx` - -Saves configuration via `POST /api/setup` which: -1. Validates at least one panel is configured -2. Tests connections if requested -3. Saves all settings using `setConfig()` -4. Supports optional settings (GitHub, Resend, Crowdin) - -### API Routes Using Configuration - -| Route | Purpose | Config Keys Used | -|-------|---------|------------------| -| `/api/admin/settings` | Get/update all settings | All config keys | -| `/api/setup` | Initial setup wizard | Panel URLs, API keys, optional services | -| `/api/github/releases` | Fetch GitHub releases | `github_token`, `github_repositories` | -| `/api/auth/forgot-password` | Password reset emails | `site_name`, `site_url` (via email dispatcher) | -| `/api/auth/register` | User registration | `registration_enabled` | -| `/packages/core/dispatchers/email.ts` | Email notifications | `resend_api_key`, `site_name`, `site_url` | -| `/packages/core/dispatchers/notifications.ts` | Email & Discord notifications | `resend_api_key`, `discord_webhooks`, enabled flags | - -## Migration from Old System - -### Old Table: `SystemSettings` -The old `SystemSettings` Prisma model had complex columns: -- `siteName`, `siteUrl`, `faviconUrl` - Site info -- `pterodactylUrl`, `pterodactylApiKey`, `pterodactylApi` - Pterodactyl -- `virtfusionUrl`, `virtfusionApiKey`, `virtfusionApi` - Virtfusion -- `githubToken`, `githubRepositories` - GitHub integration -- `resendApiKey` - Email service -- `crowdinProjectId`, `crowdinPersonalToken` - Translations -- `registrationEnabled`, `maintenanceMode` - Feature flags -- `emailNotifications`, `discordNotifications` - Notification flags -- `discordWebhooks` (JSON) - Webhook list -- Encrypted fields using `ENCRYPTION_KEY` - -### New Table: `Config` -Simple key-value store: -- Single `key` (unique) and `value` (string) columns -- No encryption at application level -- All config values fetched via `getConfig(key)` -- JSON complex types stored as stringified JSON - -### Backward Compatibility Layer -File: `packages/core/lib/system-settings.ts` - -Provides deprecated functions that delegate to new Config system: -- `getSystemSettings()` → calls `getConfig()` for each key -- `getPterodactylSettings()` → calls config system -- `getVirtfusionSettings()` → calls config system -- `getSystemState()` → calls config system - -**Status:** Old functions work but should be replaced in new code. - -## Best Practices - -### 1. Always Use Type-Specific Getters When Available -```typescript -// ❌ Avoid -const settings = await getConfig("pterodactyl_url") -const apiKey = await getConfig("pterodactyl_api_key") - -// ✅ Prefer -const { url, apiKey } = await getPterodactylSettings() -``` - -### 2. Clear Cache After Updates -```typescript -await setConfig("site_name", "New Name") -clearConfigCache() // Always do this - -// Or the config will be stale for 60 seconds -``` - -### 3. Handle Boolean Flags Properly -```typescript -// ❌ Wrong - these return strings -if (await getConfig("registration_enabled")) { } - -// ✅ Correct -const { registrationEnabled } = await getSystemState() -if (registrationEnabled) { } - -// ✅ Also correct - explicit string comparison -const value = await getConfig("registration_enabled") -if (value === "true") { } -``` - -### 4. Store Complex Data as JSON -```typescript -// For arrays or objects -const repos = ["Owner/repo1", "Owner/repo2"] -await setConfig("github_repositories", JSON.stringify(repos)) - -// When retrieving -const reposJson = await getConfig("github_repositories") -const repos = reposJson ? JSON.parse(reposJson) : [] -``` - -### 5. Batch Retrieve Related Config -```typescript -// ❌ Multiple database queries -const url = await getConfig("pterodactyl_url") -const apiKey = await getConfig("pterodactyl_api_key") -const apiPath = await getConfig("pterodactyl_api") - -// ✅ Single batch query -const config = await getConfigs( - "pterodactyl_url", - "pterodactyl_api_key", - "pterodactyl_api" -) -``` - -## Future Enhancements - -Potential improvements not yet implemented: - -1. **Configuration Validation** - Add schema validation for config values -2. **Configuration Hooks** - Run callbacks when specific config keys change -3. **Configuration Encryption** - Add optional encryption for sensitive fields -4. **Configuration Audit Log** - Track who changed what and when -5. **Configuration Versioning** - Roll back to previous config states -6. **Dynamic Feature Flags** - Change features without restart -7. **Configuration Secrets** - Separate secret storage service integration - -## Troubleshooting - -### Config Not Updating in Admin Panel -Check if you called `clearConfigCache()` after `setConfig()`. The 1-minute cache will serve stale values otherwise. - -### API Keys Showing as Masked -Verify your user account has the `SUPER_ADMIN` role. Only super admins can see unmasked sensitive values. - -### GitHub Releases Not Showing -1. Verify `github_token` is set via admin settings -2. Verify `github_repositories` contains valid repository names -3. Check that the token has permission to read public repositories -4. Look for error logs in API response - -### Emails Not Sending -1. Verify `resend_api_key` is set via admin settings -2. Check that `email_notifications_enabled` is "true" -3. Verify the Resend API key is valid -4. Check application logs for Resend API errors - -### Setup Wizard Stuck -1. At least one panel (Pterodactyl OR Virtfusion) must be configured -2. Panel URL and API key must be provided -3. Test connection button can verify credentials before saving -4. Check browser console for any fetch errors diff --git a/docs/WEBHOOK_DISPATCHER_README.md b/docs/WEBHOOK_DISPATCHER_README.md deleted file mode 100644 index 092f6e7..0000000 --- a/docs/WEBHOOK_DISPATCHER_README.md +++ /dev/null @@ -1,297 +0,0 @@ -# Webhook Notification Dispatcher - Implementation Summary - -## Overview - -The webhook notification system has been fully implemented, allowing your NodeByte Hosting platform to send Discord webhooks for system events. The system supports 7 webhook types, automatic event detection, and comprehensive error handling. - -## What Was Built - -### 1. Core Webhook Dispatcher Service -**File:** `packages/core/lib/webhook-dispatcher.ts` - -A production-ready service that: -- Queries database for configured webhooks by event type -- Sends Discord embeds asynchronously (non-blocking) -- Tracks webhook delivery success/failure -- Updates webhook's `testSuccessAt` timestamp on success -- Provides type-safe, event-specific dispatch functions -- Returns detailed delivery results - -**Key Functions:** -- `dispatchWebhook()` - Low-level webhook dispatch with custom embeds -- `dispatchSettingsUpdate()` - System settings changes -- `dispatchServerStateChange()` - Server online/offline/crashed events -- `dispatchSyncCompletion()` - Sync operation success/failure -- `dispatchSystemAlert()` - Critical errors and alerts -- `dispatchSupportTicket()` - Support ticket lifecycle events -- `dispatchNodeAlert()` - Resource monitoring (CPU, memory, disk, network) -- `dispatchBillingEvent()` - Invoice, payment, subscription events - -### 2. Integration Points - -#### ✅ System Settings Updates -**File:** `app/api/admin/settings/route.ts` - -When admin settings are modified: -- Detects which fields changed -- Sends SYSTEM webhook with changed field names -- Non-blocking (doesn't delay API response) -- Includes timestamp and changed fields list - -#### ✅ Sync Operations -**File:** `packages/core/lib/sync.ts` - -When full sync completes: -- Sends SYSTEM webhook with sync status -- Includes summary (locations, nodes, allocations, servers, databases synced) -- Includes duration in seconds -- Marks as success or failure based on all operations - -#### ✅ Webhook Type Support -All 7 webhook types now available: -- **GAME_SERVER** - Server state changes (online/offline/crashed) -- **VPS** - Node/resource alerts (CPU, memory, disk, network usage) -- **SYSTEM** - Internal operations (sync, settings, maintenance) -- **BILLING** - Financial events (invoices, payments, subscriptions) -- **SECURITY** - Errors, alerts, and security events -- **SUPPORT** - Support ticket lifecycle (created, updated, resolved) -- **CUSTOM** - Fallback for custom/unclassified events - -### 3. Webhook Delivery Features - -**Color-Coded Embeds:** -- 🟢 Green (3066993) - Success -- 🔴 Red (15158332) - Failure/Error -- 🟡 Yellow (16776960) - Warning/In-Progress -- 🔵 Blue (3447003) - Info/General -- 🟠 Orange (15105570) - Alert/Critical -- 🩵 Cyan (65535) - Support/Tickets - -**Rich Embed Information:** -- Title with emoji indicator -- Description of what happened -- Structured fields with metadata -- Timestamps (automatic) -- Footer with NodeByte branding - -**Reliability:** -- Parallel webhook delivery (no sequential delays) -- Individual failure handling (one webhook failure doesn't block others) -- Detailed error reporting per webhook -- Database transaction tracking for success timestamps -- Non-blocking dispatch (uses `.catch()` pattern) - -## Architecture - -### Database Schema (Already Applied) -```prisma -model DiscordWebhook { - id String @id @default(cuid()) - name String - webhookUrl String @db.Text - type DiscordWebhookType - scope DiscordWebhookScope - enabled Boolean @default(true) - testSuccessAt DateTime? - avatarUrl String? - createdAt DateTime @default(now()) - userId String? - user User? @relation(fields: [userId], references: [id]) - - @@unique([webhookUrl, userId]) - @@index([userId]) - @@index([type]) - @@index([scope]) -} - -enum DiscordWebhookType { - GAME_SERVER - VPS - SYSTEM - BILLING - SECURITY - SUPPORT - CUSTOM -} - -enum DiscordWebhookScope { - ADMIN - USER - PUBLIC -} -``` - -### How It Works - -1. **Configuration Phase** - - Admin creates webhooks in settings panel - - Webhooks stored in database with type/scope - - Can test webhooks before using them - -2. **Event Occurs** - - System event happens (sync completes, settings change, etc.) - - Code calls appropriate dispatch function - - Dispatcher queries database for matching webhooks - -3. **Delivery Phase** - - Dispatcher queries all webhooks matching event type - - Constructs Discord embed with event details - - Sends embeds in parallel to all matching webhooks - - Updates `testSuccessAt` on success - - Logs errors per webhook - -4. **Results** - - Returns delivery results (sent count, failed count, errors) - - Non-blocking - request completes before webhooks sent - - Webhook failures don't affect main application - -## How to Extend - -### Adding Webhooks to New Events - -1. **Identify the event location** (where in code it happens) -2. **Import the dispatcher:** - ```typescript - import { dispatchServerStateChange } from "@/packages/core/lib/webhook-dispatcher" - ``` - -3. **Call the appropriate function:** - ```typescript - dispatchServerStateChange("Server Name", "online", "node-1").catch((error) => { - console.error("Failed to dispatch webhook:", error) - }) - ``` - -4. **Use custom webhook for unique events:** - ```typescript - import { dispatchWebhook } from "@/packages/core/lib/webhook-dispatcher" - - await dispatchWebhook("CUSTOM", { - title: "My Event", - description: "Something happened", - color: 3447003, - fields: [ - { name: "Field", value: "Value", inline: true } - ] - }).catch((error) => { - console.error("Failed to dispatch:", error) - }) - ``` - -## Integration Checklist - -Currently implemented: -- ✅ Webhook dispatcher service created -- ✅ Settings updates send SYSTEM webhooks -- ✅ Sync completion sends SYSTEM webhooks -- ✅ Support SUPPORT webhook type -- ✅ Settings panel allows webhook management -- ✅ Webhook testing functionality -- ✅ Type-safe dispatch functions - -Additional integration points (ready for implementation): -- ⏳ Server state change webhooks (in `app/api/panel/servers/route.ts`) -- ⏳ Node/resource alert webhooks (in monitoring service) -- ⏳ Error handler webhooks (wrap error handlers) -- ⏳ Support ticket webhooks (when ticket system built) -- ⏳ Billing event webhooks (in payment processing) - -## Testing - -### Test a Webhook from Admin Panel -1. Go to Admin → Settings → Discord Webhooks -2. Create a test webhook with your Discord webhook URL -3. Click the "Test" button -4. Check your Discord channel for the test message - -### Manual Integration Testing -```typescript -import { dispatchSettingsUpdate } from "@/packages/core/lib/webhook-dispatcher" - -// Test in your code -await dispatchSettingsUpdate( - ["Test Field"], - "test@example.com" -) -``` - -## Performance Considerations - -- **Non-blocking:** Webhooks sent asynchronously with `.catch()` pattern -- **Parallel delivery:** All webhooks for an event sent in parallel -- **Database queries:** Single query to fetch matching webhooks per event -- **Error isolation:** One webhook failure doesn't affect others -- **Request speed:** No impact on API response times - -## Security - -- **API Key Protection:** Webhook URLs never exposed in logs -- **Scope-based Access:** ADMIN/USER/PUBLIC scopes control visibility -- **Validation:** Discord webhook URL format validated before save -- **Error Handling:** Sensitive errors caught and logged securely -- **Database-driven:** No hardcoded webhooks - -## Error Handling - -All dispatch functions are async and return results: -```typescript -const result = await dispatchWebhook(...) -console.log(result.success) // boolean -console.log(result.sent) // number of successful deliveries -console.log(result.failed) // number of failed deliveries -console.log(result.errors) // array of { webhook, error } objects -``` - -Always use `.catch()` to prevent promise rejections: -```typescript -dispatchWebhook(...).catch((error) => { - console.error("Webhook dispatch failed:", error) - // Don't throw - let request complete -}) -``` - -## Files Modified/Created - -**Created:** -- `packages/core/lib/webhook-dispatcher.ts` - Dispatcher service (400+ lines) -- `packages/core/lib/WEBHOOK_INTEGRATION_GUIDE.md` - Integration documentation - -**Modified:** -- `app/api/admin/settings/route.ts` - Added settings update webhooks -- `packages/core/lib/sync.ts` - Added sync completion webhooks -- `app/admin/settings/page.tsx` - Added SUPPORT type to dropdown - -**Database:** -- Migration: `20251223015040_add_discord_webhook_model_with_types_and_scopes` (already applied) -- All enums updated to include SUPPORT type - -## Next Steps - -To fully activate the webhook system: - -1. **Test in admin panel:** - - Create a Discord webhook URL - - Add webhook in Settings → Discord Webhooks - - Click "Test" to verify connectivity - -2. **Monitor events:** - - Change system settings and check webhook - - Run sync operation and check webhook - - Create more webhooks for different types - -3. **Extend to more events:** - - Follow the WEBHOOK_INTEGRATION_GUIDE.md - - Add dispatch calls to event handlers - - Test each integration - -4. **Set up monitoring:** - - Consider logging webhook delivery status - - Monitor webhook failure rates - - Alert on webhook configuration issues - -## Contact - -For questions or issues with the webhook system, refer to: -- `packages/core/lib/WEBHOOK_INTEGRATION_GUIDE.md` - Detailed integration examples -- `packages/core/lib/webhook-dispatcher.ts` - Source code and inline documentation -- Admin panel - Settings → Discord Webhooks for management diff --git a/docs/WEBHOOK_INTEGRATION_GUIDE.md b/docs/WEBHOOK_INTEGRATION_GUIDE.md deleted file mode 100644 index f8630a5..0000000 --- a/docs/WEBHOOK_INTEGRATION_GUIDE.md +++ /dev/null @@ -1,310 +0,0 @@ -/** - * WEBHOOK DISPATCHER - INTEGRATION GUIDE - * - * This guide shows how to integrate webhook notifications throughout the codebase. - */ - -// ============================================================================ -// IMPORTS -// ============================================================================ - -import { - dispatchWebhook, - dispatchSettingsUpdate, - dispatchServerStateChange, - dispatchSyncCompletion, - dispatchSystemAlert, - dispatchSupportTicket, - dispatchNodeAlert, - dispatchBillingEvent, - type DispatchOptions, -} from "@/packages/core/lib/webhook-dispatcher" - -// ============================================================================ -// 1. SYSTEM SETTINGS UPDATES -// ============================================================================ - -// ALREADY INTEGRATED in: app/api/admin/settings/route.ts -// The settings POST handler now automatically sends webhooks when settings are modified - -// Example usage in other parts of the codebase: -async function exampleSettingsUpdate() { - await dispatchSettingsUpdate( - ["Maintenance Mode", "Sync Interval", "Cache Timeout"], - "admin@example.com" // optional: who made the change - ) -} - -// ============================================================================ -// 2. SERVER STATE CHANGES -// ============================================================================ - -// Use this when servers start, stop, or crash (usually from Pterodactyl webhooks or polling) -async function exampleServerStateChange() { - // Server came online - await dispatchServerStateChange("Rust Server 1", "online", "node-1") - - // Server went offline - await dispatchServerStateChange("Minecraft Server", "offline", "node-2") - - // Server crashed - await dispatchServerStateChange("Game Server 3", "crashed", "node-1") -} - -// ============================================================================ -// 3. SYNC COMPLETION -// ============================================================================ - -// ALREADY INTEGRATED in: packages/core/lib/sync.ts -// The runFullSync function now automatically sends webhooks on completion/failure - -// Example usage for individual sync operations: -async function exampleSyncCompletion() { - const success = true - const details = "Synced 150 servers, 300 nodes, 500 allocations" - const duration = "45.23s" - - await dispatchSyncCompletion(success, details, duration) -} - -// ============================================================================ -// 4. SYSTEM ALERTS & ERRORS -// ============================================================================ - -// Use for critical errors, security issues, health checks, etc. -async function exampleSystemAlert() { - // Error alert - await dispatchSystemAlert( - "Database Connection Failed", - "Unable to connect to PostgreSQL: connection timeout", - "error" - ) - - // Warning alert - await dispatchSystemAlert( - "High Memory Usage", - "Server memory usage at 85%", - "warning" - ) - - // Info alert - await dispatchSystemAlert( - "Maintenance Scheduled", - "System will undergo maintenance on 2025-12-25 from 02:00-04:00 UTC", - "info" - ) -} - -// INTEGRATION POINTS for system alerts: -// - API error handlers (catch blocks) -// - Database connection issues -// - Critical log statements -// - Health check endpoints -// - Resource monitoring - -// ============================================================================ -// 5. SUPPORT TICKETS -// ============================================================================ - -// Use when support tickets are created, updated, or resolved -async function exampleSupportTicket() { - // Ticket created - await dispatchSupportTicket( - "created", - "TICKET-12345", - "Server not starting", - "User reports server won't start after restart" - ) - - // Ticket updated - await dispatchSupportTicket( - "updated", - "TICKET-12345", - "Server not starting", - "Updated status: investigating" - ) - - // Ticket resolved - await dispatchSupportTicket( - "resolved", - "TICKET-12345", - "Server not starting", - "Issue resolved: memory limit was too low" - ) -} - -// ============================================================================ -// 6. NODE/VPS RESOURCE ALERTS -// ============================================================================ - -// Use for resource monitoring and alerts -async function exampleNodeAlert() { - // CPU alert - await dispatchNodeAlert("vps-01", "cpu", 92, 80) - - // Memory alert - await dispatchNodeAlert("vps-02", "memory", 87, 75) - - // Disk alert - await dispatchNodeAlert("vps-03", "disk", 95, 90) - - // Network alert - await dispatchNodeAlert("vps-01", "network", 78, 70) -} - -// INTEGRATION POINTS for node alerts: -// - Monitoring service/cron job -// - Node status endpoint -// - System performance tracking - -// ============================================================================ -// 7. BILLING EVENTS -// ============================================================================ - -// Use for invoice, payment, and subscription events -async function exampleBillingEvent() { - // Invoice generated - await dispatchBillingEvent( - "invoice", - "Invoice #INV-2025-001234 has been generated", - "$299.99" - ) - - // Payment processed - await dispatchBillingEvent( - "payment", - "Payment received for Invoice #INV-2025-001234", - "$299.99" - ) - - // Subscription updated - await dispatchBillingEvent( - "subscription", - "Subscription upgraded from Pro to Enterprise", - "+$150.00/month" - ) -} - -// ============================================================================ -// 8. CUSTOM WEBHOOKS -// ============================================================================ - -// For events not covered by the helper functions, use dispatchWebhook directly -async function exampleCustomWebhook() { - await dispatchWebhook("CUSTOM", { - title: "Custom Event", - description: "Something interesting happened", - color: 3447003, // Blue - fields: [ - { name: "Event Type", value: "Custom", inline: true }, - { name: "Details", value: "Additional information", inline: false }, - ], - }) - - // You can also target specific scopes: - await dispatchWebhook( - "SYSTEM", - { - title: "Internal System Event", - description: "This only goes to ADMIN webhooks", - color: 16776960, - }, - { scopes: ["ADMIN"] } // Only send to admin-scoped webhooks - ) - - // Or to multiple types: - await dispatchWebhook( - "SYSTEM", - { - title: "Multi-type Event", - description: "This goes to SYSTEM and VPS webhooks", - color: 3066993, - }, - { types: ["SYSTEM", "VPS"] } // Send to both types - ) -} - -// ============================================================================ -// WEBHOOK TYPE REFERENCE -// ============================================================================ - -/* - * GAME_SERVER - Server start/stop/crash events - * VPS - Node/resource monitoring and alerts - * SYSTEM - Sync operations, maintenance mode, settings changes - * BILLING - Invoice, payment, and subscription events - * SECURITY - Errors, alerts, and security events - * SUPPORT - Support ticket notifications - * CUSTOM - Custom events (fallback type) - */ - -// ============================================================================ -// SCOPE REFERENCE -// ============================================================================ - -/* - * ADMIN - Only sent to admin-scoped webhooks (system-wide) - * USER - Sent to user-specific webhooks (future: client panel) - * PUBLIC - Public webhooks (optional: for public events) - */ - -// ============================================================================ -// ERROR HANDLING -// ============================================================================ - -// All dispatch functions are async and return results: -async function exampleErrorHandling() { - const result = await dispatchSystemAlert( - "Example Alert", - "Testing webhook delivery", - "info" - ) - - console.log(`Sent to ${result.sent} webhooks`) - console.log(`Failed: ${result.failed} webhooks`) - - if (result.errors.length > 0) { - result.errors.forEach((error) => { - console.log(` - ${error.webhook}: ${error.error}`) - }) - } - - // Best practice: don't block request on webhook failure - // Always use .catch() to handle errors gracefully -} - -// ============================================================================ -// BEST PRACTICES -// ============================================================================ - -/* - * 1. Always dispatch webhooks asynchronously (non-blocking): - * dispatchWebhook(...).catch((error) => { - * console.error("Webhook dispatch failed:", error) - * }) - * - * 2. Don't block user requests on webhook delivery: - * Save data first, then dispatch webhook in background - * - * 3. Include relevant context in notifications: - * - Who made the change (user/admin email) - * - What changed (field names) - * - When it happened (timestamp is auto-added) - * - Why it happened (reason/details) - * - * 4. Use appropriate webhook types: - * - GAME_SERVER for player-facing server events - * - SYSTEM for internal operations - * - SECURITY for errors/alerts - * - SUPPORT for customer-facing issues - * - * 5. Color-code embeds by status: - * - Green (3066993): Success - * - Red (15158332): Failure/Error - * - Yellow (16776960): Warning/In-progress - * - Blue (3447003): Info - * - Orange (15105570): Alert - * - Cyan (65535): Support/Tickets - * - * 6. Test webhooks in the admin panel before relying on them - */ diff --git a/docs/WEBHOOK_NOTIFICATION_COMPLETE.md b/docs/WEBHOOK_NOTIFICATION_COMPLETE.md deleted file mode 100644 index f042945..0000000 --- a/docs/WEBHOOK_NOTIFICATION_COMPLETE.md +++ /dev/null @@ -1,226 +0,0 @@ -# ✅ Webhook Notification System - Complete Implementation - -## What You Asked For - -> "the notifications should be for, system setting updates, support tickets, server state changes, system alerts and errors, sync completion/failure etc" - -## What Was Built - -A **production-ready webhook dispatcher system** that sends Discord notifications for all the events you specified: - -### 🎯 Currently Active -1. **System Setting Updates** ✅ - - Triggers when admin modifies settings - - Shows which fields changed - - Sent to SYSTEM webhooks - -2. **Sync Completion/Failure** ✅ - - Triggers when full sync completes - - Shows sync summary and duration - - Sent to SYSTEM webhooks - -### 🚀 Ready to Activate (Helper Functions Available) -3. **Server State Changes** - Use `dispatchServerStateChange(name, status, nodeId)` -4. **System Alerts & Errors** - Use `dispatchSystemAlert(title, error, severity)` -5. **Support Tickets** - Use `dispatchSupportTicket(action, id, subject, details)` -6. **Node/Resource Alerts** - Use `dispatchNodeAlert(nodeName, type, usage, threshold)` -7. **Billing Events** - Use `dispatchBillingEvent(type, details, amount)` - -## Architecture - -``` -Discord Webhook URL (configured in admin panel) - ↓ -DiscordWebhook database model (stores webhooks by type & scope) - ↓ -Event occurs (sync, settings update, error, etc) - ↓ -dispatchWebhook() called with event details - ↓ -Query database for matching webhooks - ↓ -Send Discord embeds in parallel - ↓ -Update webhook's testSuccessAt timestamp - ↓ -Return delivery results (sent/failed/errors) -``` - -## Files Created - -1. **packages/core/lib/webhook-dispatcher.ts** (430+ lines) - - Core service with all dispatch functions - - Type-safe, fully documented - - Non-blocking, parallel delivery - -2. **packages/core/lib/WEBHOOK_INTEGRATION_GUIDE.md** - - Detailed examples for every event type - - Integration points explained - - Best practices documented - -3. **packages/core/lib/WEBHOOK_QUICK_REFERENCE.ts** - - Copy-paste ready code samples - - All 7 dispatch functions with examples - - Color codes and webhook types reference - -4. **WEBHOOK_DISPATCHER_README.md** - - Complete documentation - - Architecture overview - - How to extend system - -5. **WEBHOOK_IMPLEMENTATION_SUMMARY.sh** - - Visual summary of what's built - - Status overview - -## Files Modified - -1. **app/api/admin/settings/route.ts** - - Added `dispatchSettingsUpdate()` when settings change - - Tracks which fields changed - - Non-blocking webhook dispatch - -2. **packages/core/lib/sync.ts** - - Added `dispatchSyncCompletion()` after full sync - - Includes sync summary and duration - - Reports success or failure - -3. **app/admin/settings/page.tsx** - - Added SUPPORT option to webhook type dropdown - -## How to Use - -### For Already-Active Events (Settings & Sync) -Nothing needed! These automatically send webhooks now: -1. Change system settings in admin panel -2. SYSTEM webhook is sent -3. Check your Discord channel - -### For New Events - -**Example: When server goes online** -```typescript -import { dispatchServerStateChange } from "@/packages/core/lib/webhook-dispatcher" - -// Somewhere in your server monitoring code: -await dispatchServerStateChange("My Server", "online", "node-1") - .catch((error) => console.error("Webhook failed:", error)) -``` - -**Example: When critical error occurs** -```typescript -import { dispatchSystemAlert } from "@/packages/core/lib/webhook-dispatcher" - -// In error handler: -await dispatchSystemAlert( - "Database Connection Failed", - "PostgreSQL timeout", - "error" -).catch((error) => console.error("Webhook failed:", error)) -``` - -**Example: When support ticket created** -```typescript -import { dispatchSupportTicket } from "@/packages/core/lib/webhook-dispatcher" - -await dispatchSupportTicket( - "created", - "TICKET-123", - "Server not starting", - "User reports issue" -).catch((error) => console.error("Webhook failed:", error)) -``` - -## Key Features - -✅ **Non-Blocking** - Webhooks sent asynchronously, doesn't slow down requests -✅ **Parallel Delivery** - All webhooks sent simultaneously -✅ **Type-Safe** - TypeScript enums prevent mistakes -✅ **Rich Embeds** - Color-coded, structured Discord messages -✅ **Error Tracking** - Updates webhook's last success timestamp -✅ **Per-Webhook Results** - Detailed delivery statistics -✅ **7 Event Types** - GAME_SERVER, VPS, SYSTEM, BILLING, SECURITY, SUPPORT, CUSTOM -✅ **Extensible** - Easy to add more event types or dispatch functions - -## Webhook Types Supported - -| Type | Color | Usage | -|------|-------|-------| -| **GAME_SERVER** 🎮 | Purple | Server online/offline/crashed | -| **VPS** 🖥️ | Blue | Resource alerts (CPU, memory, disk) | -| **SYSTEM** ⚙️ | Yellow | Sync, settings, maintenance | -| **BILLING** 💳 | Green | Invoices, payments, subscriptions | -| **SECURITY** 🔒 | Red | Errors, alerts, security events | -| **SUPPORT** 🎫 | Cyan | Support ticket notifications | -| **CUSTOM** 📝 | Gray | Fallback for other events | - -## Testing - -1. Go to Admin Panel → Settings → Discord Webhooks -2. Create a webhook with your Discord URL -3. Click "Test" button -4. You should see the test message in Discord -5. To test actual events, change a setting or trigger a sync - -## Performance - -- **No blocking:** Webhooks sent asynchronously with `.catch()` pattern -- **Parallel:** All webhooks delivered simultaneously -- **Fast queries:** Single database query per event type -- **Isolated failures:** One webhook error doesn't affect others or app -- **Zero impact:** API response times unchanged - -## Next Steps (Optional) - -The system is designed to grow: - -1. **Add server monitoring webhooks** - - Call `dispatchServerStateChange()` when servers change state - - Point: Your existing server monitoring code - -2. **Add error handling webhooks** - - Call `dispatchSystemAlert()` in try-catch blocks - - Point: API error handlers - -3. **Add support ticket webhooks** - - Call `dispatchSupportTicket()` when tickets change - - Point: Your future support ticket system - -4. **Add billing webhooks** - - Call `dispatchBillingEvent()` in payment processing - - Point: Your billing service - -5. **Add resource monitoring** - - Call `dispatchNodeAlert()` from monitoring service - - Point: Node health check cron job - -## Documentation - -- 📍 **WEBHOOK_INTEGRATION_GUIDE.md** - How to integrate into your code -- 📍 **WEBHOOK_QUICK_REFERENCE.ts** - Copy-paste examples -- 📍 **WEBHOOK_DISPATCHER_README.md** - Full architecture & features -- 📍 **webhook-dispatcher.ts** - Source code with inline comments - -## Summary - -**What's Done:** -✅ Webhook dispatcher service created and tested -✅ Settings updates trigger webhooks -✅ Sync completion triggers webhooks -✅ 5 additional dispatch functions ready (support, errors, alerts, etc) -✅ Admin panel management complete -✅ Full documentation provided - -**What's Active:** -✅ System setting changes automatically send webhooks -✅ Sync completion automatically sends webhooks - -**What's Ready to Activate:** -✅ Server state webhooks (just call dispatchServerStateChange) -✅ Error/alert webhooks (just call dispatchSystemAlert) -✅ Support ticket webhooks (just call dispatchSupportTicket) -✅ Node alert webhooks (just call dispatchNodeAlert) -✅ Billing webhooks (just call dispatchBillingEvent) - ---- - -**That's it!** Your webhook notification system is live and ready. The infrastructure for all your requested events is in place. You can activate new events by adding a single function call wherever those events occur in your code. diff --git a/docs/WEBHOOK_QUICK_REFERENCE.ts b/docs/WEBHOOK_QUICK_REFERENCE.ts deleted file mode 100644 index 24c8ce2..0000000 --- a/docs/WEBHOOK_QUICK_REFERENCE.ts +++ /dev/null @@ -1,261 +0,0 @@ -/** - * WEBHOOK DISPATCHER - QUICK REFERENCE - * - * Copy-paste ready examples for all dispatch functions - */ - -// ============================================================================ -// 1. SETTINGS UPDATE WEBHOOK -// ============================================================================ -import { dispatchSettingsUpdate } from "@/packages/core/dispatchers/webhooks" - -// Automatically called in: app/api/admin/settings/route.ts -// Manual usage: -await dispatchSettingsUpdate( - ["Maintenance Mode", "Cache Timeout"], - "admin@example.com" -).catch((error) => console.error("Webhook failed:", error)) - - -// ============================================================================ -// 2. SYNC COMPLETION WEBHOOK -// ============================================================================ -import { dispatchSyncCompletion } from "@/packages/core/dispatchers/webhooks" - -// Automatically called in: packages/core/lib/sync.ts -// Manual usage: -await dispatchSyncCompletion( - true, // success - "Synced 150 servers, 300 nodes, 500 allocations", - "45.23s" -).catch((error) => console.error("Webhook failed:", error)) - - -// ============================================================================ -// 3. SERVER STATE CHANGE WEBHOOK -// ============================================================================ -import { dispatchServerStateChange } from "@/packages/core/dispatchers/webhooks" - -// Server online -await dispatchServerStateChange("Rust Server 1", "online", "node-1") - .catch((error) => console.error("Webhook failed:", error)) - -// Server offline -await dispatchServerStateChange("Minecraft Server", "offline", "node-2") - .catch((error) => console.error("Webhook failed:", error)) - -// Server crashed -await dispatchServerStateChange("Game Server 3", "crashed", "node-1") - .catch((error) => console.error("Webhook failed:", error)) - - -// ============================================================================ -// 4. SYSTEM ALERT WEBHOOK -// ============================================================================ -import { dispatchSystemAlert } from "@/packages/core/dispatchers/webhooks" - -// Error alert -await dispatchSystemAlert( - "Database Connection Failed", - "Unable to connect to PostgreSQL: connection timeout", - "error" -).catch((error) => console.error("Webhook failed:", error)) - -// Warning alert -await dispatchSystemAlert( - "High Memory Usage", - "Server memory usage at 85%", - "warning" -).catch((error) => console.error("Webhook failed:", error)) - -// Info alert -await dispatchSystemAlert( - "Scheduled Maintenance", - "System will undergo maintenance on 2025-12-25 from 02:00-04:00 UTC", - "info" -).catch((error) => console.error("Webhook failed:", error)) - - -// ============================================================================ -// 5. SUPPORT TICKET WEBHOOK -// ============================================================================ -import { dispatchSupportTicket } from "@/packages/core/dispatchers/webhooks" - -// Ticket created -await dispatchSupportTicket( - "created", - "TICKET-12345", - "Server not starting", - "User reports server won't start after restart" -).catch((error) => console.error("Webhook failed:", error)) - -// Ticket updated -await dispatchSupportTicket( - "updated", - "TICKET-12345", - "Server not starting", - "Updated status: investigating" -).catch((error) => console.error("Webhook failed:", error)) - -// Ticket resolved -await dispatchSupportTicket( - "resolved", - "TICKET-12345", - "Server not starting", - "Fixed: memory limit was set too low" -).catch((error) => console.error("Webhook failed:", error)) - - -// ============================================================================ -// 6. NODE ALERT WEBHOOK -// ============================================================================ -import { dispatchNodeAlert } from "@/packages/core/dispatchers/webhooks" - -// CPU alert -await dispatchNodeAlert("vps-01", "cpu", 92, 80) - .catch((error) => console.error("Webhook failed:", error)) - -// Memory alert -await dispatchNodeAlert("vps-02", "memory", 87, 75) - .catch((error) => console.error("Webhook failed:", error)) - -// Disk alert -await dispatchNodeAlert("vps-03", "disk", 95, 90) - .catch((error) => console.error("Webhook failed:", error)) - -// Network alert -await dispatchNodeAlert("vps-01", "network", 78, 70) - .catch((error) => console.error("Webhook failed:", error)) - - -// ============================================================================ -// 7. BILLING EVENT WEBHOOK -// ============================================================================ -import { dispatchBillingEvent } from "@/packages/core/dispatchers/webhooks" - -// Invoice generated -await dispatchBillingEvent( - "invoice", - "Invoice #INV-2025-001234 has been generated", - "$299.99" -).catch((error) => console.error("Webhook failed:", error)) - -// Payment processed -await dispatchBillingEvent( - "payment", - "Payment received for Invoice #INV-2025-001234", - "$299.99" -).catch((error) => console.error("Webhook failed:", error)) - -// Subscription updated -await dispatchBillingEvent( - "subscription", - "Subscription upgraded from Pro to Enterprise", - "+$150.00/month" -).catch((error) => console.error("Webhook failed:", error)) - - -// ============================================================================ -// 8. CUSTOM WEBHOOK (Low-Level) -// ============================================================================ -import { dispatchWebhook } from "@/packages/core/dispatchers/webhooks" - -// Simple custom event -await dispatchWebhook( - "CUSTOM", - { - title: "Custom Event", - description: "Something interesting happened", - color: 3447003, // Blue - fields: [ - { name: "Event", value: "Custom", inline: true }, - { name: "Details", value: "More info", inline: false } - ] - } -).catch((error) => console.error("Webhook failed:", error)) - -// Custom with specific scopes -await dispatchWebhook( - "SYSTEM", - { - title: "Admin-Only Event", - description: "This only goes to ADMIN webhooks", - color: 16776960 // Yellow - }, - { scopes: ["ADMIN"] } -).catch((error) => console.error("Webhook failed:", error)) - -// Custom with multiple types -await dispatchWebhook( - "SYSTEM", - { - title: "Multi-Type Event", - description: "Goes to SYSTEM and VPS webhooks", - color: 3066993 // Green - }, - { types: ["SYSTEM", "VPS"] } -).catch((error) => console.error("Webhook failed:", error)) - - -// ============================================================================ -// COLOR REFERENCE -// ============================================================================ -/* - 3066993 - Green (#2D5F2E) - Success/Online - 15158332 - Red (#E63946) - Error/Offline/Failed - 16776960 - Yellow (#FFFF00) - Warning/In-Progress - 3447003 - Blue (#3498DB) - Info/General - 15105570 - Orange (#FF6B35) - Alert/Critical - 65535 - Cyan (#00FFFF) - Support/Tickets - 9807270 - Purple (#95A5A6) - Custom -*/ - - -// ============================================================================ -// WEBHOOK TYPE REFERENCE -// ============================================================================ -/* - "GAME_SERVER" - Server online/offline/crashed events - "VPS" - Node/resource alerts - "SYSTEM" - Sync, settings, maintenance - "BILLING" - Invoices, payments, subscriptions - "SECURITY" - Errors, alerts - "SUPPORT" - Support tickets - "CUSTOM" - Fallback/custom events -*/ - - -// ============================================================================ -// INTEGRATION CHECKLIST -// ============================================================================ -/* - ✓ System Settings Updates - ACTIVE (app/api/admin/settings/route.ts) - ✓ Sync Completion - ACTIVE (packages/core/lib/sync.ts) - ⏳ Server State Changes - READY (use dispatchServerStateChange) - ⏳ Node/Resource Alerts - READY (use dispatchNodeAlert) - ⏳ Error/System Alerts - READY (use dispatchSystemAlert) - ⏳ Support Tickets - READY (use dispatchSupportTicket) - ⏳ Billing Events - READY (use dispatchBillingEvent) -*/ - - -// ============================================================================ -// ERROR HANDLING PATTERN -// ============================================================================ -import { dispatchWebhook } from "@/packages/core/dispatchers/webhooks" - -const result = await dispatchWebhook(...) - .catch((error) => { - console.error("Webhook dispatch failed:", error) - // Return null or default result - don't throw - return { success: false, sent: 0, failed: 0, errors: [] } - }) - -if (result.success) { - console.log(`Sent to ${result.sent} webhooks`) -} else { - console.log(`Failed: ${result.failed} webhooks`) - result.errors.forEach((error) => { - console.log(` - ${error.webhook}: ${error.error}`) - }) -} diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 9fc1870..0000000 --- a/package-lock.json +++ /dev/null @@ -1,5042 +0,0 @@ -{ - "name": "@nodebyte/hosting-site", - "version": "3.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@nodebyte/hosting-site", - "version": "3.0.0", - "license": "GPL-3.0-only", - "dependencies": { - "@hookform/resolvers": "^3.10.0", - "@radix-ui/react-accordion": "1.2.2", - "@radix-ui/react-alert-dialog": "1.1.4", - "@radix-ui/react-aspect-ratio": "1.1.1", - "@radix-ui/react-avatar": "1.1.2", - "@radix-ui/react-checkbox": "1.1.3", - "@radix-ui/react-collapsible": "1.1.2", - "@radix-ui/react-context-menu": "2.2.4", - "@radix-ui/react-dialog": "1.1.4", - "@radix-ui/react-dropdown-menu": "2.1.4", - "@radix-ui/react-hover-card": "1.1.4", - "@radix-ui/react-label": "2.1.1", - "@radix-ui/react-menubar": "1.1.4", - "@radix-ui/react-navigation-menu": "1.2.3", - "@radix-ui/react-popover": "1.1.4", - "@radix-ui/react-progress": "1.1.1", - "@radix-ui/react-radio-group": "1.2.2", - "@radix-ui/react-scroll-area": "1.2.2", - "@radix-ui/react-select": "2.1.4", - "@radix-ui/react-separator": "1.1.1", - "@radix-ui/react-slider": "1.2.2", - "@radix-ui/react-slot": "1.1.1", - "@radix-ui/react-switch": "1.1.2", - "@radix-ui/react-tabs": "1.1.2", - "@radix-ui/react-toast": "1.2.4", - "@radix-ui/react-toggle": "1.1.1", - "@radix-ui/react-toggle-group": "1.1.1", - "@radix-ui/react-tooltip": "1.1.6", - "@react-three/drei": "10.7.6", - "@react-three/fiber": "9.4.0", - "@vercel/analytics": "latest", - "autoprefixer": "^10.4.20", - "cheerio": "^1.1.2", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "cmdk": "1.0.4", - "date-fns": "4.1.0", - "embla-carousel-react": "8.5.1", - "input-otp": "1.4.1", - "lucide-react": "^0.454.0", - "next": "16.0.0", - "next-themes": "^0.4.6", - "react": "19.2.0", - "react-day-picker": "9.8.0", - "react-dom": "19.2.0", - "react-hook-form": "^7.60.0", - "react-icons": "^5.5.0", - "react-resizable-panels": "^2.1.7", - "recharts": "2.15.4", - "sonner": "^1.7.4", - "tailwind-merge": "^2.5.5", - "tailwindcss-animate": "^1.0.7", - "vaul": "^0.9.9", - "zod": "3.25.76" - }, - "devDependencies": { - "@tailwindcss/postcss": "^4.1.9", - "@types/node": "^22", - "@types/react": "^19", - "@types/react-dom": "^19", - "postcss": "^8.5", - "tailwindcss": "^4.1.9", - "tw-animate-css": "1.3.3", - "typescript": "^5" - } - }, - "node_modules/@alloc/quick-lru": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", - "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@date-fns/tz": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@date-fns/tz/-/tz-1.2.0.tgz", - "integrity": "sha512-LBrd7MiJZ9McsOgxqWX7AaxrDjcFVjWH/tIKJd7pnR7McaslGYOP1QmmiBXdJH/H/yLCT+rcQ7FaPBUxRGUtrg==", - "license": "MIT" - }, - "node_modules/@dimforge/rapier3d-compat": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@dimforge/rapier3d-compat/-/rapier3d-compat-0.12.0.tgz", - "integrity": "sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==", - "license": "Apache-2.0" - }, - "node_modules/@emnapi/runtime": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", - "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", - "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", - "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.7.3", - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/react-dom": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", - "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", - "license": "MIT", - "dependencies": { - "@floating-ui/dom": "^1.7.4" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", - "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", - "license": "MIT" - }, - "node_modules/@hookform/resolvers": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.10.0.tgz", - "integrity": "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==", - "license": "MIT", - "peerDependencies": { - "react-hook-form": "^7.0.0" - } - }, - "node_modules/@img/colour": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", - "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.5.tgz", - "integrity": "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.2.4" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.5.tgz", - "integrity": "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.2.4" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.4.tgz", - "integrity": "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.4.tgz", - "integrity": "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.4.tgz", - "integrity": "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==", - "cpu": [ - "arm" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.4.tgz", - "integrity": "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.4.tgz", - "integrity": "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==", - "cpu": [ - "ppc64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-riscv64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-riscv64/-/sharp-libvips-linux-riscv64-1.2.4.tgz", - "integrity": "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==", - "cpu": [ - "riscv64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.4.tgz", - "integrity": "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==", - "cpu": [ - "s390x" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.4.tgz", - "integrity": "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.4.tgz", - "integrity": "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.4.tgz", - "integrity": "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.5.tgz", - "integrity": "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==", - "cpu": [ - "arm" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.5.tgz", - "integrity": "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-ppc64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.5.tgz", - "integrity": "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==", - "cpu": [ - "ppc64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-ppc64": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-riscv64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-riscv64/-/sharp-linux-riscv64-0.34.5.tgz", - "integrity": "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==", - "cpu": [ - "riscv64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-riscv64": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.5.tgz", - "integrity": "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==", - "cpu": [ - "s390x" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.2.4" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.5.tgz", - "integrity": "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.2.4" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.5.tgz", - "integrity": "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.5.tgz", - "integrity": "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.2.4" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.5.tgz", - "integrity": "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==", - "cpu": [ - "wasm32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", - "optional": true, - "dependencies": { - "@emnapi/runtime": "^1.7.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-arm64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.5.tgz", - "integrity": "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.5.tgz", - "integrity": "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg==", - "cpu": [ - "ia32" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.5.tgz", - "integrity": "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@mediapipe/tasks-vision": { - "version": "0.10.17", - "resolved": "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.17.tgz", - "integrity": "sha512-CZWV/q6TTe8ta61cZXjfnnHsfWIdFhms03M9T7Cnd5y2mdpylJM0rF1qRq+wsQVRMLz1OYPVEBU9ph2Bx8cxrg==", - "license": "Apache-2.0" - }, - "node_modules/@monogrid/gainmap-js": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@monogrid/gainmap-js/-/gainmap-js-3.4.0.tgz", - "integrity": "sha512-2Z0FATFHaoYJ8b+Y4y4Hgfn3FRFwuU5zRrk+9dFWp4uGAdHGqVEdP7HP+gLA3X469KXHmfupJaUbKo1b/aDKIg==", - "license": "MIT", - "dependencies": { - "promise-worker-transferable": "^1.0.4" - }, - "peerDependencies": { - "three": ">= 0.159.0" - } - }, - "node_modules/@next/env": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@next/env/-/env-16.0.0.tgz", - "integrity": "sha512-s5j2iFGp38QsG1LWRQaE2iUY3h1jc014/melHFfLdrsMJPqxqDQwWNwyQTcNoUSGZlCVZuM7t7JDMmSyRilsnA==", - "license": "MIT" - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.0.0.tgz", - "integrity": "sha512-/CntqDCnk5w2qIwMiF0a9r6+9qunZzFmU0cBX4T82LOflE72zzH6gnOjCwUXYKOBlQi8OpP/rMj8cBIr18x4TA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.0.0.tgz", - "integrity": "sha512-hB4GZnJGKa8m4efvTGNyii6qs76vTNl+3dKHTCAUaksN6KjYy4iEO3Q5ira405NW2PKb3EcqWiRaL9DrYJfMHg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.0.0.tgz", - "integrity": "sha512-E2IHMdE+C1k+nUgndM13/BY/iJY9KGCphCftMh7SXWcaQqExq/pJU/1Hgn8n/tFwSoLoYC/yUghOv97tAsIxqg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.0.0.tgz", - "integrity": "sha512-xzgl7c7BVk4+7PDWldU+On2nlwnGgFqJ1siWp3/8S0KBBLCjonB6zwJYPtl4MUY7YZJrzzumdUpUoquu5zk8vg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.0.0.tgz", - "integrity": "sha512-sdyOg4cbiCw7YUr0F/7ya42oiVBXLD21EYkSwN+PhE4csJH4MSXUsYyslliiiBwkM+KsuQH/y9wuxVz6s7Nstg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.0.0.tgz", - "integrity": "sha512-IAXv3OBYqVaNOgyd3kxR4L3msuhmSy1bcchPHxDOjypG33i2yDWvGBwFD94OuuTjjTt/7cuIKtAmoOOml6kfbg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.0.0.tgz", - "integrity": "sha512-bmo3ncIJKUS9PWK1JD9pEVv0yuvp1KPuOsyJTHXTv8KDrEmgV/K+U0C75rl9rhIaODcS7JEb6/7eJhdwXI0XmA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.0.0.tgz", - "integrity": "sha512-O1cJbT+lZp+cTjYyZGiDwsOjO3UHHzSqobkPNipdlnnuPb1swfcuY6r3p8dsKU4hAIEO4cO67ZCfVVH/M1ETXA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@radix-ui/number": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", - "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", - "license": "MIT" - }, - "node_modules/@radix-ui/primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.1.tgz", - "integrity": "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==", - "license": "MIT" - }, - "node_modules/@radix-ui/react-accordion": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.2.tgz", - "integrity": "sha512-b1oh54x4DMCdGsB4/7ahiSrViXxaBwRPotiZNnYXjLha9vfuURSAZErki6qjDoSIV0eXx5v57XnTGVtGwnfp2g==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collapsible": "1.1.2", - "@radix-ui/react-collection": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-alert-dialog": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.4.tgz", - "integrity": "sha512-A6Kh23qZDLy3PSU4bh2UJZznOrUdHImIXqF8YtUa6CN73f8EOO9XlXSCd9IHyPvIquTaa/kwaSWzZTtUvgXVGw==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dialog": "1.1.4", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-slot": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-arrow": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.1.tgz", - "integrity": "sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-aspect-ratio": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.1.tgz", - "integrity": "sha512-kNU4FIpcFMBLkOUcgeIteH06/8JLBcYY6Le1iKenDGCYNYFX3TQqCZjzkOsz37h7r94/99GTb7YhEr98ZBJibw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-avatar": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.2.tgz", - "integrity": "sha512-GaC7bXQZ5VgZvVvsJ5mu/AEbjYLnhhkoidOboC50Z6FFlLA03wG2ianUoH+zgDQ31/9gCF59bE4+2bBgTyMiig==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-checkbox": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.3.tgz", - "integrity": "sha512-HD7/ocp8f1B3e6OHygH0n7ZKjONkhciy1Nh0yuBgObqThc3oyx+vuMfFHKAknXRHHWVE9XvXStxJFyjUmB8PIw==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-use-size": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-collapsible": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.2.tgz", - "integrity": "sha512-PliMB63vxz7vggcyq0IxNYk8vGDrLXVWw4+W4B8YnwI1s18x7YZYqlG9PLX7XxAJUi0g2DxP4XKJMFHh/iVh9A==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-collection": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.1.tgz", - "integrity": "sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-slot": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.1.tgz", - "integrity": "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-context": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", - "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-context-menu": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.4.tgz", - "integrity": "sha512-ap4wdGwK52rJxGkwukU1NrnEodsUFQIooANKu+ey7d6raQ2biTcEf8za1zr0mgFHieevRTB2nK4dJeN8pTAZGQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-menu": "2.1.4", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dialog": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.4.tgz", - "integrity": "sha512-Ur7EV1IwQGCyaAuyDRiOLA5JIUZxELJljF+MbM/2NC0BYwfuRrbpS30BiQBJrVruscgUkieKkqXYDOoByaxIoA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.3", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-portal": "1.1.3", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-slot": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.6.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-direction": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", - "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.3.tgz", - "integrity": "sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-escape-keydown": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.4.tgz", - "integrity": "sha512-iXU1Ab5ecM+yEepGAWK8ZhMyKX4ubFdCNtol4sT9D0OVErG9PNElfx3TQhjw7n7BC5nFVz68/5//clWy+8TXzA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.4", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", - "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.1.tgz", - "integrity": "sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-callback-ref": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-hover-card": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.4.tgz", - "integrity": "sha512-QSUUnRA3PQ2UhvoCv3eYvMnCAgGQW+sTu86QPuNb+ZMi+ZENd6UWpiXbcWDQ4AEaKF9KKpCHBeaJz9Rw6lRlaQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.3", - "@radix-ui/react-popper": "1.2.1", - "@radix-ui/react-portal": "1.1.3", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-id": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", - "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-label": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.1.tgz", - "integrity": "sha512-UUw5E4e/2+4kFMH7+YxORXGWggtY6sM8WIwh5RZchhLuUg2H1hc98Py+pr8HMz6rdaYrK2t296ZEjYLOCO5uUw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-menu": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.4.tgz", - "integrity": "sha512-BnOgVoL6YYdHAG6DtXONaR29Eq4nvbi8rutrV/xlr3RQCMMb3yqP85Qiw/3NReozrSW+4dfLkK+rc1hb4wPU/A==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.3", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.1", - "@radix-ui/react-portal": "1.1.3", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-roving-focus": "1.1.1", - "@radix-ui/react-slot": "1.1.1", - "@radix-ui/react-use-callback-ref": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.6.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-menubar": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.4.tgz", - "integrity": "sha512-+KMpi7VAZuB46+1LD7a30zb5IxyzLgC8m8j42gk3N4TUCcViNQdX8FhoH1HDvYiA8quuqcek4R4bYpPn/SY1GA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.4", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-roving-focus": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-navigation-menu": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.3.tgz", - "integrity": "sha512-IQWAsQ7dsLIYDrn0WqPU+cdM7MONTv9nqrLVYoie3BPiabSfUVDe6Fr+oEt0Cofsr9ONDcDe9xhmJbL1Uq1yKg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.3", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-popover": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.4.tgz", - "integrity": "sha512-aUACAkXx8LaFymDma+HQVji7WhvEhpFJ7+qPz17Nf4lLZqtreGOFRiNQWQmhzp7kEWg9cOyyQJpdIMUMPc/CPw==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.3", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.1", - "@radix-ui/react-portal": "1.1.3", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-slot": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.6.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-popper": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.1.tgz", - "integrity": "sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==", - "license": "MIT", - "dependencies": { - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-rect": "1.1.0", - "@radix-ui/react-use-size": "1.1.0", - "@radix-ui/rect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-portal": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.3.tgz", - "integrity": "sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-presence": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.2.tgz", - "integrity": "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-primitive": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.1.tgz", - "integrity": "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-slot": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-progress": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.1.tgz", - "integrity": "sha512-6diOawA84f/eMxFHcWut0aE1C2kyE9dOyCTQOMRR2C/qPiXz/X0SaiA/RLbapQaXUCmy0/hLMf9meSccD1N0pA==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-radio-group": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.2.2.tgz", - "integrity": "sha512-E0MLLGfOP0l8P/NxgVzfXJ8w3Ch8cdO6UDzJfDChu4EJDy+/WdO5LqpdY8PYnCErkmZH3gZhDL1K7kQ41fAHuQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-roving-focus": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-use-size": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.1.tgz", - "integrity": "sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-scroll-area": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.2.tgz", - "integrity": "sha512-EFI1N/S3YxZEW/lJ/H1jY3njlvTd8tBmgKEn4GHi51+aMm94i6NmAJstsm5cu3yJwYqYc93gpCPm21FeAbFk6g==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-select": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.4.tgz", - "integrity": "sha512-pOkb2u8KgO47j/h7AylCj7dJsm69BXcjkrvTqMptFqsE2i0p8lHkfgneXKjAgPzBMivnoMyt8o4KiV4wYzDdyQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.3", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.1", - "@radix-ui/react-portal": "1.1.3", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-slot": "1.1.1", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.1", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "^2.6.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-separator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.1.tgz", - "integrity": "sha512-RRiNRSrD8iUiXriq/Y5n4/3iE8HzqgLHsusUSg5jVpU2+3tqcUFPJXHDymwEypunc2sWxDUS3UC+rkZRlHedsw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slider": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.2.2.tgz", - "integrity": "sha512-sNlU06ii1/ZcbHf8I9En54ZPW0Vil/yPVg4vQMcFNjrIx51jsHbFl1HYHQvCIWJSr1q0ZmA+iIs/ZTv8h7HHSA==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-use-size": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slot": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.1.tgz", - "integrity": "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-switch": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.1.2.tgz", - "integrity": "sha512-zGukiWHjEdBCRyXvKR6iXAQG6qXm2esuAD6kDOi9Cn+1X6ev3ASo4+CsYaD6Fov9r/AQFekqnD/7+V0Cs6/98g==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-use-size": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tabs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.2.tgz", - "integrity": "sha512-9u/tQJMcC2aGq7KXpGivMm1mgq7oRJKXphDwdypPd/j21j/2znamPU8WkXgnhUaTrSFNIt8XhOyCAupg8/GbwQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-roving-focus": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toast": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.4.tgz", - "integrity": "sha512-Sch9idFJHJTMH9YNpxxESqABcAFweJG4tKv+0zo0m5XBvUSL8FM5xKcJLFLXononpePs8IclyX1KieL5SDUNgA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-collection": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.3", - "@radix-ui/react-portal": "1.1.3", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toggle": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.1.tgz", - "integrity": "sha512-i77tcgObYr743IonC1hrsnnPmszDRn8p+EGUsUt+5a/JFn28fxaM88Py6V2mc8J5kELMWishI0rLnuGLFD/nnQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-toggle-group": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.1.tgz", - "integrity": "sha512-OgDLZEA30Ylyz8YSXvnGqIHtERqnUt1KUYTKdw/y8u7Ci6zGiJfXc02jahmcSNK3YcErqioj/9flWC9S1ihfwg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-roving-focus": "1.1.1", - "@radix-ui/react-toggle": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tooltip": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.6.tgz", - "integrity": "sha512-TLB5D8QLExS1uDn7+wH/bjEmRurNMTzNrtq7IjaS4kjion9NtzsTGkvR5+i7yc9q01Pi2KMM2cN3f8UG4IvvXA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.1", - "@radix-ui/react-compose-refs": "1.1.1", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.3", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.1", - "@radix-ui/react-portal": "1.1.3", - "@radix-ui/react-presence": "1.1.2", - "@radix-ui/react-primitive": "2.0.1", - "@radix-ui/react-slot": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", - "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", - "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", - "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", - "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-previous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", - "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", - "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/rect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-size": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", - "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.1.tgz", - "integrity": "sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-primitive": "2.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/rect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", - "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", - "license": "MIT" - }, - "node_modules/@react-three/drei": { - "version": "10.7.6", - "resolved": "https://registry.npmjs.org/@react-three/drei/-/drei-10.7.6.tgz", - "integrity": "sha512-ZSFwRlRaa4zjtB7yHO6Q9xQGuyDCzE7whXBhum92JslcMRC3aouivp0rAzszcVymIoJx6PXmibyP+xr+zKdwLg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.26.0", - "@mediapipe/tasks-vision": "0.10.17", - "@monogrid/gainmap-js": "^3.0.6", - "@use-gesture/react": "^10.3.1", - "camera-controls": "^3.1.0", - "cross-env": "^7.0.3", - "detect-gpu": "^5.0.56", - "glsl-noise": "^0.0.0", - "hls.js": "^1.5.17", - "maath": "^0.10.8", - "meshline": "^3.3.1", - "stats-gl": "^2.2.8", - "stats.js": "^0.17.0", - "suspend-react": "^0.1.3", - "three-mesh-bvh": "^0.8.3", - "three-stdlib": "^2.35.6", - "troika-three-text": "^0.52.4", - "tunnel-rat": "^0.1.2", - "use-sync-external-store": "^1.4.0", - "utility-types": "^3.11.0", - "zustand": "^5.0.1" - }, - "peerDependencies": { - "@react-three/fiber": "^9.0.0", - "react": "^19", - "react-dom": "^19", - "three": ">=0.159" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - } - } - }, - "node_modules/@react-three/fiber": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-9.4.0.tgz", - "integrity": "sha512-k4iu1R6e5D54918V4sqmISUkI5OgTw3v7/sDRKEC632Wd5g2WBtUS5gyG63X0GJO/HZUj1tsjSXfyzwrUHZl1g==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/runtime": "^7.17.8", - "@types/react-reconciler": "^0.32.0", - "@types/webxr": "*", - "base64-js": "^1.5.1", - "buffer": "^6.0.3", - "its-fine": "^2.0.0", - "react-reconciler": "^0.31.0", - "react-use-measure": "^2.1.7", - "scheduler": "^0.25.0", - "suspend-react": "^0.1.3", - "use-sync-external-store": "^1.4.0", - "zustand": "^5.0.3" - }, - "peerDependencies": { - "expo": ">=43.0", - "expo-asset": ">=8.4", - "expo-file-system": ">=11.0", - "expo-gl": ">=11.0", - "react": "^19.0.0", - "react-dom": "^19.0.0", - "react-native": ">=0.78", - "three": ">=0.156" - }, - "peerDependenciesMeta": { - "expo": { - "optional": true - }, - "expo-asset": { - "optional": true - }, - "expo-file-system": { - "optional": true - }, - "expo-gl": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } - } - }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tailwindcss/node": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.18.tgz", - "integrity": "sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/remapping": "^2.3.4", - "enhanced-resolve": "^5.18.3", - "jiti": "^2.6.1", - "lightningcss": "1.30.2", - "magic-string": "^0.30.21", - "source-map-js": "^1.2.1", - "tailwindcss": "4.1.18" - } - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.18.tgz", - "integrity": "sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.1.18", - "@tailwindcss/oxide-darwin-arm64": "4.1.18", - "@tailwindcss/oxide-darwin-x64": "4.1.18", - "@tailwindcss/oxide-freebsd-x64": "4.1.18", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.18", - "@tailwindcss/oxide-linux-arm64-gnu": "4.1.18", - "@tailwindcss/oxide-linux-arm64-musl": "4.1.18", - "@tailwindcss/oxide-linux-x64-gnu": "4.1.18", - "@tailwindcss/oxide-linux-x64-musl": "4.1.18", - "@tailwindcss/oxide-wasm32-wasi": "4.1.18", - "@tailwindcss/oxide-win32-arm64-msvc": "4.1.18", - "@tailwindcss/oxide-win32-x64-msvc": "4.1.18" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.18.tgz", - "integrity": "sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.18.tgz", - "integrity": "sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.18.tgz", - "integrity": "sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.18.tgz", - "integrity": "sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.18.tgz", - "integrity": "sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.18.tgz", - "integrity": "sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.18.tgz", - "integrity": "sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.18.tgz", - "integrity": "sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.18.tgz", - "integrity": "sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.18.tgz", - "integrity": "sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==", - "bundleDependencies": [ - "@napi-rs/wasm-runtime", - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util", - "@emnapi/wasi-threads", - "tslib" - ], - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1", - "@emnapi/wasi-threads": "^1.1.0", - "@napi-rs/wasm-runtime": "^1.1.0", - "@tybys/wasm-util": "^0.10.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.18.tgz", - "integrity": "sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.18.tgz", - "integrity": "sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tailwindcss/postcss": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.18.tgz", - "integrity": "sha512-Ce0GFnzAOuPyfV5SxjXGn0CubwGcuDB0zcdaPuCSzAa/2vII24JTkH+I6jcbXLb1ctjZMZZI6OjDaLPJQL1S0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.1.18", - "@tailwindcss/oxide": "4.1.18", - "postcss": "^8.4.41", - "tailwindcss": "4.1.18" - } - }, - "node_modules/@tweenjs/tween.js": { - "version": "23.1.3", - "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz", - "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==", - "license": "MIT" - }, - "node_modules/@types/d3-array": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", - "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", - "license": "MIT" - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", - "license": "MIT" - }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", - "license": "MIT" - }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", - "license": "MIT", - "dependencies": { - "@types/d3-color": "*" - } - }, - "node_modules/@types/d3-path": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", - "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", - "license": "MIT" - }, - "node_modules/@types/d3-scale": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", - "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", - "license": "MIT", - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-shape": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", - "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", - "license": "MIT", - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", - "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", - "license": "MIT" - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", - "license": "MIT" - }, - "node_modules/@types/draco3d": { - "version": "1.4.10", - "resolved": "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.10.tgz", - "integrity": "sha512-AX22jp8Y7wwaBgAixaSvkoG4M/+PlAcm3Qs4OW8yT9DM4xUpWKeFhLueTAyZF39pviAdcDdeJoACapiAceqNcw==", - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.19.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.2.tgz", - "integrity": "sha512-LPM2G3Syo1GLzXLGJAKdqoU35XvrWzGJ21/7sgZTUpbkBaOasTj8tjwn6w+hCkqaa1TfJ/w67rJSwYItlJ2mYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/offscreencanvas": { - "version": "2019.7.3", - "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz", - "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==", - "license": "MIT" - }, - "node_modules/@types/react": { - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", - "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", - "license": "MIT", - "peer": true, - "dependencies": { - "csstype": "^3.2.2" - } - }, - "node_modules/@types/react-dom": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", - "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", - "devOptional": true, - "license": "MIT", - "peer": true, - "peerDependencies": { - "@types/react": "^19.2.0" - } - }, - "node_modules/@types/react-reconciler": { - "version": "0.32.3", - "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.32.3.tgz", - "integrity": "sha512-cMi5ZrLG7UtbL7LTK6hq9w/EZIRk4Mf1Z5qHoI+qBh7/WkYkFXQ7gOto2yfUvPzF5ERMAhaXS5eTQ2SAnHjLzA==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/stats.js": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.4.tgz", - "integrity": "sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==", - "license": "MIT" - }, - "node_modules/@types/three": { - "version": "0.182.0", - "resolved": "https://registry.npmjs.org/@types/three/-/three-0.182.0.tgz", - "integrity": "sha512-WByN9V3Sbwbe2OkWuSGyoqQO8Du6yhYaXtXLoA5FkKTUJorZ+yOHBZ35zUUPQXlAKABZmbYp5oAqpA4RBjtJ/Q==", - "license": "MIT", - "peer": true, - "dependencies": { - "@dimforge/rapier3d-compat": "~0.12.0", - "@tweenjs/tween.js": "~23.1.3", - "@types/stats.js": "*", - "@types/webxr": ">=0.5.17", - "@webgpu/types": "*", - "fflate": "~0.8.2", - "meshoptimizer": "~0.22.0" - } - }, - "node_modules/@types/webxr": { - "version": "0.5.24", - "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.24.tgz", - "integrity": "sha512-h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==", - "license": "MIT" - }, - "node_modules/@use-gesture/core": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz", - "integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==", - "license": "MIT" - }, - "node_modules/@use-gesture/react": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.1.tgz", - "integrity": "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==", - "license": "MIT", - "dependencies": { - "@use-gesture/core": "10.3.1" - }, - "peerDependencies": { - "react": ">= 16.8.0" - } - }, - "node_modules/@vercel/analytics": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.6.1.tgz", - "integrity": "sha512-oH9He/bEM+6oKlv3chWuOOcp8Y6fo6/PSro8hEkgCW3pu9/OiCXiUpRUogDh3Fs3LH2sosDrx8CxeOLBEE+afg==", - "license": "MPL-2.0", - "peerDependencies": { - "@remix-run/react": "^2", - "@sveltejs/kit": "^1 || ^2", - "next": ">= 13", - "react": "^18 || ^19 || ^19.0.0-rc", - "svelte": ">= 4", - "vue": "^3", - "vue-router": "^4" - }, - "peerDependenciesMeta": { - "@remix-run/react": { - "optional": true - }, - "@sveltejs/kit": { - "optional": true - }, - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "svelte": { - "optional": true - }, - "vue": { - "optional": true - }, - "vue-router": { - "optional": true - } - } - }, - "node_modules/@webgpu/types": { - "version": "0.1.67", - "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.67.tgz", - "integrity": "sha512-uk53+2ECGUkWoDFez/hymwpRfdgdIn6y1ref70fEecGMe5607f4sozNFgBk0oxlr7j2CRGWBEc3IBYMmFdGGTQ==", - "license": "BSD-3-Clause" - }, - "node_modules/aria-hidden": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", - "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.22", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.22.tgz", - "integrity": "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "browserslist": "^4.27.0", - "caniuse-lite": "^1.0.30001754", - "fraction.js": "^5.3.4", - "normalize-range": "^0.1.2", - "picocolors": "^1.1.1", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, - "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/baseline-browser-mapping": { - "version": "2.9.6", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.6.tgz", - "integrity": "sha512-v9BVVpOTLB59C9E7aSnmIF8h7qRsFpx+A2nugVMTszEOMcfjlZMsXRm4LF23I3Z9AJxc8ANpIvzbzONoX9VJlg==", - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.js" - } - }, - "node_modules/bidi-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", - "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", - "license": "MIT", - "dependencies": { - "require-from-string": "^2.0.2" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "license": "ISC" - }, - "node_modules/browserslist": { - "version": "4.28.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", - "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/camera-controls": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/camera-controls/-/camera-controls-3.1.2.tgz", - "integrity": "sha512-xkxfpG2ECZ6Ww5/9+kf4mfg1VEYAoe9aDSY+IwF0UEs7qEzwy0aVRfs2grImIECs/PoBtWFrh7RXsQkwG922JA==", - "license": "MIT", - "engines": { - "node": ">=22.0.0", - "npm": ">=10.5.1" - }, - "peerDependencies": { - "three": ">=0.126.1" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001760", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz", - "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/cheerio": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.1.2.tgz", - "integrity": "sha512-IkxPpb5rS/d1IiLbHMgfPuS0FgiWTtFIm/Nj+2woXDLTZ7fOT2eqzgYbdMlLweqlHbsZjxEChoVK+7iph7jyQg==", - "license": "MIT", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "encoding-sniffer": "^0.2.1", - "htmlparser2": "^10.0.0", - "parse5": "^7.3.0", - "parse5-htmlparser2-tree-adapter": "^7.1.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^7.12.0", - "whatwg-mimetype": "^4.0.0" - }, - "engines": { - "node": ">=20.18.1" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/class-variance-authority": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", - "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", - "license": "Apache-2.0", - "dependencies": { - "clsx": "^2.1.1" - }, - "funding": { - "url": "https://polar.sh/cva" - } - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "license": "MIT" - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cmdk": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.0.4.tgz", - "integrity": "sha512-AnsjfHyHpQ/EFeAnG216WY7A5LiYCoZzCSygiLvfXC3H3LFGCprErteUcszaVluGOhuOTbJS3jWHrSDYPBBygg==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-dialog": "^1.1.2", - "@radix-ui/react-id": "^1.1.0", - "@radix-ui/react-primitive": "^2.0.0", - "use-sync-external-store": "^1.2.2" - }, - "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", - "react-dom": "^18 || ^19 || ^19.0.0-rc" - } - }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/csstype": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "license": "MIT" - }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", - "license": "ISC", - "dependencies": { - "internmap": "1 - 2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "license": "ISC", - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", - "license": "ISC", - "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", - "license": "ISC", - "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "license": "ISC", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", - "license": "ISC", - "dependencies": { - "d3-time": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/date-fns": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz", - "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/kossnocorp" - } - }, - "node_modules/date-fns-jalali": { - "version": "4.1.0-0", - "resolved": "https://registry.npmjs.org/date-fns-jalali/-/date-fns-jalali-4.1.0-0.tgz", - "integrity": "sha512-hTIP/z+t+qKwBDcmmsnmjWTduxCg+5KfdqWQvb2X/8C9+knYY6epN/pfxdDuyVlSVeFz0sM5eEfwIUQ70U4ckg==", - "license": "MIT" - }, - "node_modules/decimal.js-light": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz", - "integrity": "sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg==", - "license": "MIT" - }, - "node_modules/detect-gpu": { - "version": "5.0.70", - "resolved": "https://registry.npmjs.org/detect-gpu/-/detect-gpu-5.0.70.tgz", - "integrity": "sha512-bqerEP1Ese6nt3rFkwPnGbsUF9a4q+gMmpTVVOEzoCyeCc+y7/RvJnQZJx1JwhgQI5Ntg0Kgat8Uu7XpBqnz1w==", - "license": "MIT", - "dependencies": { - "webgl-constants": "^1.1.1" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "devOptional": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "license": "MIT" - }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "BSD-2-Clause" - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "license": "BSD-2-Clause", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", - "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", - "license": "BSD-2-Clause", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/draco3d": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.7.tgz", - "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==", - "license": "Apache-2.0" - }, - "node_modules/electron-to-chromium": { - "version": "1.5.267", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", - "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", - "license": "ISC" - }, - "node_modules/embla-carousel": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.5.1.tgz", - "integrity": "sha512-JUb5+FOHobSiWQ2EJNaueCNT/cQU9L6XWBbWmorWPQT9bkbk+fhsuLr8wWrzXKagO3oWszBO7MSx+GfaRk4E6A==", - "license": "MIT", - "peer": true - }, - "node_modules/embla-carousel-react": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.5.1.tgz", - "integrity": "sha512-z9Y0K84BJvhChXgqn2CFYbfEi6AwEr+FFVVKm/MqbTQ2zIzO1VQri6w67LcfpVF0AjbhwVMywDZqY4alYkjW5w==", - "license": "MIT", - "dependencies": { - "embla-carousel": "8.5.1", - "embla-carousel-reactive-utils": "8.5.1" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - } - }, - "node_modules/embla-carousel-reactive-utils": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.5.1.tgz", - "integrity": "sha512-n7VSoGIiiDIc4MfXF3ZRTO59KDp820QDuyBDGlt5/65+lumPHxX2JLz0EZ23hZ4eg4vZGUXwMkYv02fw2JVo/A==", - "license": "MIT", - "peerDependencies": { - "embla-carousel": "8.5.1" - } - }, - "node_modules/encoding-sniffer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", - "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" - }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.18.4", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.4.tgz", - "integrity": "sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "license": "MIT" - }, - "node_modules/fast-equals": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.3.3.tgz", - "integrity": "sha512-/boTcHZeIAQ2r/tL11voclBHDeP9WPxLt+tyAbVSyyXuUFyh0Tne7gJZTqGbxnvj79TjLdCXLOY7UIPhyG5MTw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/fflate": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", - "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", - "license": "MIT" - }, - "node_modules/fraction.js": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-5.3.4.tgz", - "integrity": "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==", - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/rawify" - } - }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/glsl-noise": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/glsl-noise/-/glsl-noise-0.0.0.tgz", - "integrity": "sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==", - "license": "MIT" - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/hls.js": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.15.tgz", - "integrity": "sha512-E3a5VwgXimGHwpRGV+WxRTKeSp2DW5DI5MWv34ulL3t5UNmyJWCQ1KmLEHbYzcfThfXG8amBL+fCYPneGHC4VA==", - "license": "Apache-2.0" - }, - "node_modules/htmlparser2": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", - "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "license": "MIT", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.1", - "entities": "^6.0.0" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "license": "MIT" - }, - "node_modules/input-otp": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.4.1.tgz", - "integrity": "sha512-+yvpmKYKHi9jIGngxagY9oWiiblPB7+nEO75F2l2o4vs+6vpPZZmUl4tBNYuTCvQjhvEIbdNeJu70bhfYP2nbw==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" - } - }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/its-fine": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/its-fine/-/its-fine-2.0.0.tgz", - "integrity": "sha512-KLViCmWx94zOvpLwSlsx6yOCeMhZYaxrJV87Po5k/FoZzcPSahvK5qJ7fYhS61sZi5ikmh2S3Hz55A2l3U69ng==", - "license": "MIT", - "dependencies": { - "@types/react-reconciler": "^0.28.9" - }, - "peerDependencies": { - "react": "^19.0.0" - } - }, - "node_modules/its-fine/node_modules/@types/react-reconciler": { - "version": "0.28.9", - "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.9.tgz", - "integrity": "sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*" - } - }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "license": "MIT", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/lightningcss": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.2.tgz", - "integrity": "sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==", - "dev": true, - "license": "MPL-2.0", - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.30.2", - "lightningcss-darwin-arm64": "1.30.2", - "lightningcss-darwin-x64": "1.30.2", - "lightningcss-freebsd-x64": "1.30.2", - "lightningcss-linux-arm-gnueabihf": "1.30.2", - "lightningcss-linux-arm64-gnu": "1.30.2", - "lightningcss-linux-arm64-musl": "1.30.2", - "lightningcss-linux-x64-gnu": "1.30.2", - "lightningcss-linux-x64-musl": "1.30.2", - "lightningcss-win32-arm64-msvc": "1.30.2", - "lightningcss-win32-x64-msvc": "1.30.2" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.30.2.tgz", - "integrity": "sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.2.tgz", - "integrity": "sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.2.tgz", - "integrity": "sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.2.tgz", - "integrity": "sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.2.tgz", - "integrity": "sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.2.tgz", - "integrity": "sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.2.tgz", - "integrity": "sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.2.tgz", - "integrity": "sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.2.tgz", - "integrity": "sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.2.tgz", - "integrity": "sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.30.2", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.2.tgz", - "integrity": "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lucide-react": { - "version": "0.454.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.454.0.tgz", - "integrity": "sha512-hw7zMDwykCLnEzgncEEjHeA6+45aeEzRYuKHuyRSOPkhko+J3ySGjGIzu+mmMfDFG1vazHepMaYFYHbTFAZAAQ==", - "license": "ISC", - "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" - } - }, - "node_modules/maath": { - "version": "0.10.8", - "resolved": "https://registry.npmjs.org/maath/-/maath-0.10.8.tgz", - "integrity": "sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g==", - "license": "MIT", - "peerDependencies": { - "@types/three": ">=0.134.0", - "three": ">=0.134.0" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/meshline": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/meshline/-/meshline-3.3.1.tgz", - "integrity": "sha512-/TQj+JdZkeSUOl5Mk2J7eLcYTLiQm2IDzmlSvYm7ov15anEcDJ92GHqqazxTSreeNgfnYu24kiEvvv0WlbCdFQ==", - "license": "MIT", - "peerDependencies": { - "three": ">=0.137" - } - }, - "node_modules/meshoptimizer": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-0.22.0.tgz", - "integrity": "sha512-IebiK79sqIy+E4EgOr+CAw+Ke8hAspXKzBd0JdgEmPHiAwmvEj2S4h1rfvo+o/BnfEYd/jAOg5IeeIjzlzSnDg==", - "license": "MIT" - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/next": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/next/-/next-16.0.0.tgz", - "integrity": "sha512-nYohiNdxGu4OmBzggxy9rczmjIGI+TpR5vbKTsE1HqYwNm1B+YSiugSrFguX6omMOKnDHAmBPY4+8TNJk0Idyg==", - "deprecated": "This version has a security vulnerability. Please upgrade to a patched version. See https://nextjs.org/blog/CVE-2025-66478 for more details.", - "license": "MIT", - "peer": true, - "dependencies": { - "@next/env": "16.0.0", - "@swc/helpers": "0.5.15", - "caniuse-lite": "^1.0.30001579", - "postcss": "8.4.31", - "styled-jsx": "5.1.6" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=20.9.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "16.0.0", - "@next/swc-darwin-x64": "16.0.0", - "@next/swc-linux-arm64-gnu": "16.0.0", - "@next/swc-linux-arm64-musl": "16.0.0", - "@next/swc-linux-x64-gnu": "16.0.0", - "@next/swc-linux-x64-musl": "16.0.0", - "@next/swc-win32-arm64-msvc": "16.0.0", - "@next/swc-win32-x64-msvc": "16.0.0", - "sharp": "^0.34.4" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.51.1", - "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next-themes": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", - "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" - } - }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/node-releases": { - "version": "2.0.27", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", - "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", - "license": "MIT" - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "license": "BSD-2-Clause", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "license": "MIT", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", - "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", - "license": "MIT", - "dependencies": { - "domhandler": "^5.0.3", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", - "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "license": "ISC" - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "peer": true, - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "license": "MIT" - }, - "node_modules/potpack": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz", - "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==", - "license": "ISC" - }, - "node_modules/promise-worker-transferable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/promise-worker-transferable/-/promise-worker-transferable-1.0.4.tgz", - "integrity": "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==", - "license": "Apache-2.0", - "dependencies": { - "is-promise": "^2.1.0", - "lie": "^3.0.2" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/react": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", - "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-day-picker": { - "version": "9.8.0", - "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-9.8.0.tgz", - "integrity": "sha512-E0yhhg7R+pdgbl/2toTb0xBhsEAtmAx1l7qjIWYfcxOy8w4rTSVfbtBoSzVVhPwKP/5E9iL38LivzoE3AQDhCQ==", - "license": "MIT", - "dependencies": { - "@date-fns/tz": "1.2.0", - "date-fns": "4.1.0", - "date-fns-jalali": "4.1.0-0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "type": "individual", - "url": "https://github.com/sponsors/gpbl" - }, - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/react-dom": { - "version": "19.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.0.tgz", - "integrity": "sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==", - "license": "MIT", - "peer": true, - "dependencies": { - "scheduler": "^0.27.0" - }, - "peerDependencies": { - "react": "^19.2.0" - } - }, - "node_modules/react-dom/node_modules/scheduler": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", - "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", - "license": "MIT" - }, - "node_modules/react-hook-form": { - "version": "7.68.0", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.68.0.tgz", - "integrity": "sha512-oNN3fjrZ/Xo40SWlHf1yCjlMK417JxoSJVUXQjGdvdRCU07NTFei1i1f8ApUAts+IVh14e4EdakeLEA+BEAs/Q==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/react-hook-form" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17 || ^18 || ^19" - } - }, - "node_modules/react-icons": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", - "integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==", - "license": "MIT", - "peerDependencies": { - "react": "*" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, - "node_modules/react-reconciler": { - "version": "0.31.0", - "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.31.0.tgz", - "integrity": "sha512-7Ob7Z+URmesIsIVRjnLoDGwBEG/tVitidU0nMsqX/eeJaLY89RISO/10ERe0MqmzuKUUB1rmY+h1itMbUHg9BQ==", - "license": "MIT", - "dependencies": { - "scheduler": "^0.25.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "react": "^19.0.0" - } - }, - "node_modules/react-remove-scroll": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", - "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", - "license": "MIT", - "dependencies": { - "react-remove-scroll-bar": "^2.3.7", - "react-style-singleton": "^2.2.3", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.3", - "use-sidecar": "^1.1.3" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", - "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", - "license": "MIT", - "dependencies": { - "react-style-singleton": "^2.2.2", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-resizable-panels": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-2.1.9.tgz", - "integrity": "sha512-z77+X08YDIrgAes4jl8xhnUu1LNIRp4+E7cv4xHmLOxxUPO/ML7PSrE813b90vj7xvQ1lcf7g2uA9GeMZonjhQ==", - "license": "MIT", - "peerDependencies": { - "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", - "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - } - }, - "node_modules/react-smooth": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz", - "integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==", - "license": "MIT", - "dependencies": { - "fast-equals": "^5.0.1", - "prop-types": "^15.8.1", - "react-transition-group": "^4.4.5" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/react-style-singleton": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", - "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", - "license": "MIT", - "dependencies": { - "get-nonce": "^1.0.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/react-use-measure": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.7.tgz", - "integrity": "sha512-KrvcAo13I/60HpwGO5jpW7E9DfusKyLPLvuHlUyP5zqnmAPhNc6qTRjUQrdTADl0lpPpDVU2/Gg51UlOGHXbdg==", - "license": "MIT", - "peerDependencies": { - "react": ">=16.13", - "react-dom": ">=16.13" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - } - } - }, - "node_modules/recharts": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.4.tgz", - "integrity": "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==", - "license": "MIT", - "dependencies": { - "clsx": "^2.0.0", - "eventemitter3": "^4.0.1", - "lodash": "^4.17.21", - "react-is": "^18.3.1", - "react-smooth": "^4.0.4", - "recharts-scale": "^0.4.4", - "tiny-invariant": "^1.3.1", - "victory-vendor": "^36.6.8" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/recharts-scale": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz", - "integrity": "sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w==", - "license": "MIT", - "dependencies": { - "decimal.js-light": "^2.4.1" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/scheduler": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz", - "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==", - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sharp": { - "version": "0.34.5", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.5.tgz", - "integrity": "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg==", - "hasInstallScript": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "@img/colour": "^1.0.0", - "detect-libc": "^2.1.2", - "semver": "^7.7.3" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.5", - "@img/sharp-darwin-x64": "0.34.5", - "@img/sharp-libvips-darwin-arm64": "1.2.4", - "@img/sharp-libvips-darwin-x64": "1.2.4", - "@img/sharp-libvips-linux-arm": "1.2.4", - "@img/sharp-libvips-linux-arm64": "1.2.4", - "@img/sharp-libvips-linux-ppc64": "1.2.4", - "@img/sharp-libvips-linux-riscv64": "1.2.4", - "@img/sharp-libvips-linux-s390x": "1.2.4", - "@img/sharp-libvips-linux-x64": "1.2.4", - "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", - "@img/sharp-libvips-linuxmusl-x64": "1.2.4", - "@img/sharp-linux-arm": "0.34.5", - "@img/sharp-linux-arm64": "0.34.5", - "@img/sharp-linux-ppc64": "0.34.5", - "@img/sharp-linux-riscv64": "0.34.5", - "@img/sharp-linux-s390x": "0.34.5", - "@img/sharp-linux-x64": "0.34.5", - "@img/sharp-linuxmusl-arm64": "0.34.5", - "@img/sharp-linuxmusl-x64": "0.34.5", - "@img/sharp-wasm32": "0.34.5", - "@img/sharp-win32-arm64": "0.34.5", - "@img/sharp-win32-ia32": "0.34.5", - "@img/sharp-win32-x64": "0.34.5" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/sonner": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.7.4.tgz", - "integrity": "sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==", - "license": "MIT", - "peerDependencies": { - "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", - "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stats-gl": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/stats-gl/-/stats-gl-2.4.2.tgz", - "integrity": "sha512-g5O9B0hm9CvnM36+v7SFl39T7hmAlv541tU81ME8YeSb3i1CIP5/QdDeSB3A0la0bKNHpxpwxOVRo2wFTYEosQ==", - "license": "MIT", - "dependencies": { - "@types/three": "*", - "three": "^0.170.0" - }, - "peerDependencies": { - "@types/three": "*", - "three": "*" - } - }, - "node_modules/stats-gl/node_modules/three": { - "version": "0.170.0", - "resolved": "https://registry.npmjs.org/three/-/three-0.170.0.tgz", - "integrity": "sha512-FQK+LEpYc0fBD+J8g6oSEyyNzjp+Q7Ks1C568WWaoMRLW+TkNNWmenWeGgJjV105Gd+p/2ql1ZcjYvNiPZBhuQ==", - "license": "MIT" - }, - "node_modules/stats.js": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", - "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==", - "license": "MIT" - }, - "node_modules/styled-jsx": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", - "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", - "license": "MIT", - "dependencies": { - "client-only": "0.0.1" - }, - "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } - } - }, - "node_modules/suspend-react": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz", - "integrity": "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==", - "license": "MIT", - "peerDependencies": { - "react": ">=17.0" - } - }, - "node_modules/tailwind-merge": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", - "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" - } - }, - "node_modules/tailwindcss": { - "version": "4.1.18", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.18.tgz", - "integrity": "sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==", - "license": "MIT", - "peer": true - }, - "node_modules/tailwindcss-animate": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", - "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", - "license": "MIT", - "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders" - } - }, - "node_modules/tapable": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", - "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/three": { - "version": "0.182.0", - "resolved": "https://registry.npmjs.org/three/-/three-0.182.0.tgz", - "integrity": "sha512-GbHabT+Irv+ihI1/f5kIIsZ+Ef9Sl5A1Y7imvS5RQjWgtTPfPnZ43JmlYI7NtCRDK9zir20lQpfg8/9Yd02OvQ==", - "license": "MIT", - "peer": true - }, - "node_modules/three-mesh-bvh": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.8.3.tgz", - "integrity": "sha512-4G5lBaF+g2auKX3P0yqx+MJC6oVt6sB5k+CchS6Ob0qvH0YIhuUk1eYr7ktsIpY+albCqE80/FVQGV190PmiAg==", - "license": "MIT", - "peerDependencies": { - "three": ">= 0.159.0" - } - }, - "node_modules/three-stdlib": { - "version": "2.36.1", - "resolved": "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.36.1.tgz", - "integrity": "sha512-XyGQrFmNQ5O/IoKm556ftwKsBg11TIb301MB5dWNicziQBEs2g3gtOYIf7pFiLa0zI2gUwhtCjv9fmjnxKZ1Cg==", - "license": "MIT", - "dependencies": { - "@types/draco3d": "^1.4.0", - "@types/offscreencanvas": "^2019.6.4", - "@types/webxr": "^0.5.2", - "draco3d": "^1.4.1", - "fflate": "^0.6.9", - "potpack": "^1.0.1" - }, - "peerDependencies": { - "three": ">=0.128.0" - } - }, - "node_modules/three-stdlib/node_modules/fflate": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.10.tgz", - "integrity": "sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg==", - "license": "MIT" - }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "license": "MIT" - }, - "node_modules/troika-three-text": { - "version": "0.52.4", - "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.52.4.tgz", - "integrity": "sha512-V50EwcYGruV5rUZ9F4aNsrytGdKcXKALjEtQXIOBfhVoZU9VAqZNIoGQ3TMiooVqFAbR1w15T+f+8gkzoFzawg==", - "license": "MIT", - "dependencies": { - "bidi-js": "^1.0.2", - "troika-three-utils": "^0.52.4", - "troika-worker-utils": "^0.52.0", - "webgl-sdf-generator": "1.1.1" - }, - "peerDependencies": { - "three": ">=0.125.0" - } - }, - "node_modules/troika-three-utils": { - "version": "0.52.4", - "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.52.4.tgz", - "integrity": "sha512-NORAStSVa/BDiG52Mfudk4j1FG4jC4ILutB3foPnfGbOeIs9+G5vZLa0pnmnaftZUGm4UwSoqEpWdqvC7zms3A==", - "license": "MIT", - "peerDependencies": { - "three": ">=0.125.0" - } - }, - "node_modules/troika-worker-utils": { - "version": "0.52.0", - "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.52.0.tgz", - "integrity": "sha512-W1CpvTHykaPH5brv5VHLfQo9D1OYuo0cSBEUQFFT/nBUzM8iD6Lq2/tgG/f1OelbAS1WtaTPQzE5uM49egnngw==", - "license": "MIT" - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tunnel-rat": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/tunnel-rat/-/tunnel-rat-0.1.2.tgz", - "integrity": "sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==", - "license": "MIT", - "dependencies": { - "zustand": "^4.3.2" - } - }, - "node_modules/tunnel-rat/node_modules/zustand": { - "version": "4.5.7", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", - "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", - "license": "MIT", - "dependencies": { - "use-sync-external-store": "^1.2.2" - }, - "engines": { - "node": ">=12.7.0" - }, - "peerDependencies": { - "@types/react": ">=16.8", - "immer": ">=9.0.6", - "react": ">=16.8" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "immer": { - "optional": true - }, - "react": { - "optional": true - } - } - }, - "node_modules/tw-animate-css": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.3.3.tgz", - "integrity": "sha512-tXE2TRWrskc4TU3RDd7T8n8Np/wCfoeH9gz22c7PzYqNPQ9FBGFbWWzwL0JyHcFp+jHozmF76tbHfPAx22ua2Q==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/Wombosvideo" - } - }, - "node_modules/typescript": { - "version": "5.9.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", - "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/undici": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.16.0.tgz", - "integrity": "sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==", - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/update-browserslist-db": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz", - "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.1" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/use-callback-ref": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", - "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-sidecar": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", - "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", - "license": "MIT", - "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/use-sync-external-store": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", - "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/utility-types": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", - "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/vaul": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/vaul/-/vaul-0.9.9.tgz", - "integrity": "sha512-7afKg48srluhZwIkaU+lgGtFCUsYBSGOl8vcc8N/M3YQlZFlynHD15AE+pwrYdc826o7nrIND4lL9Y6b9WWZZQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/react-dialog": "^1.1.1" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - } - }, - "node_modules/victory-vendor": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", - "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", - "license": "MIT AND ISC", - "dependencies": { - "@types/d3-array": "^3.0.3", - "@types/d3-ease": "^3.0.0", - "@types/d3-interpolate": "^3.0.1", - "@types/d3-scale": "^4.0.2", - "@types/d3-shape": "^3.1.0", - "@types/d3-time": "^3.0.0", - "@types/d3-timer": "^3.0.0", - "d3-array": "^3.1.6", - "d3-ease": "^3.0.1", - "d3-interpolate": "^3.0.1", - "d3-scale": "^4.0.2", - "d3-shape": "^3.1.0", - "d3-time": "^3.0.0", - "d3-timer": "^3.0.1" - } - }, - "node_modules/webgl-constants": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/webgl-constants/-/webgl-constants-1.1.1.tgz", - "integrity": "sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg==" - }, - "node_modules/webgl-sdf-generator": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/webgl-sdf-generator/-/webgl-sdf-generator-1.1.1.tgz", - "integrity": "sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==", - "license": "MIT" - }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", - "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", - "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/zustand": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.9.tgz", - "integrity": "sha512-ALBtUj0AfjJt3uNRQoL1tL2tMvj6Gp/6e39dnfT6uzpelGru8v1tPOGBzayOWbPJvujM8JojDk3E1LxeFisBNg==", - "license": "MIT", - "engines": { - "node": ">=12.20.0" - }, - "peerDependencies": { - "@types/react": ">=18.0.0", - "immer": ">=9.0.6", - "react": ">=18.0.0", - "use-sync-external-store": ">=1.2.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "immer": { - "optional": true - }, - "react": { - "optional": true - }, - "use-sync-external-store": { - "optional": true - } - } - } - } -} diff --git a/package.json b/package.json index e26ac11..93b14ca 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "@nodebyte/hosting-site", "description": "The official website for NodeByte Hosting.", - "license": "GPL-3.0-only", - "version": "3.1.0", + "license": "AGPL-3.0-only", + "version": "3.3.0", "scripts": { "build": "next build", "dev": "next dev", @@ -12,8 +12,6 @@ }, "dependencies": { "@hookform/resolvers": "^3.10.0", - "@prisma/adapter-pg": "^7.2.0", - "@prisma/client": "^7.2.0", "@radix-ui/react-accordion": "1.2.2", "@radix-ui/react-alert-dialog": "1.1.4", "@radix-ui/react-aspect-ratio": "1.1.1", @@ -43,6 +41,8 @@ "@radix-ui/react-tooltip": "1.1.6", "@react-three/drei": "10.7.6", "@react-three/fiber": "9.4.0", + "@tanstack/react-query": "^5.90.16", + "@tanstack/react-query-devtools": "^5.91.2", "@vercel/analytics": "latest", "autoprefixer": "^10.4.20", "bcryptjs": "^3.0.3", @@ -58,10 +58,8 @@ "input-otp": "1.4.1", "lucide-react": "^0.454.0", "next": "^16.1.0", - "next-auth": "^5.0.0-beta.30", "next-intl": "^4.6.1", "next-themes": "^0.4.6", - "prisma": "^7.2.0", "react": "^19.2.3", "react-day-picker": "9.8.0", "react-dom": "^19.2.3", diff --git a/packages/auth/components/auth-provider.tsx b/packages/auth/components/auth-provider.tsx index 87781ec..6b819b3 100644 --- a/packages/auth/components/auth-provider.tsx +++ b/packages/auth/components/auth-provider.tsx @@ -1,13 +1,11 @@ "use client" -import { SessionProvider } from "next-auth/react" -import type { Session } from "next-auth" +import { AuthProvider as AuthContextProvider } from "../lib/auth-context" interface AuthProviderProps { children: React.ReactNode - session?: Session | null } -export function AuthProvider({ children, session }: AuthProviderProps) { - return {children} +export function AuthProvider({ children }: AuthProviderProps) { + return {children} } diff --git a/packages/auth/components/forgot-password-form.tsx b/packages/auth/components/forgot-password-form.tsx index fd48504..60e017b 100644 --- a/packages/auth/components/forgot-password-form.tsx +++ b/packages/auth/components/forgot-password-form.tsx @@ -6,6 +6,7 @@ import { Input } from "@/packages/ui/components/ui/input" import { Label } from "@/packages/ui/components/ui/label" import { Alert, AlertDescription, AlertTitle } from "@/packages/ui/components/ui/alert" import { Loader2, AlertCircle, CheckCircle2, Mail } from "lucide-react" +import { api } from "@/packages/core/lib/api" interface ForgotPasswordFormProps { translations: { @@ -50,23 +51,10 @@ export function ForgotPasswordForm({ translations: t }: ForgotPasswordFormProps) } try { - const response = await fetch("/api/auth/forgot-password", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ email }), - }) - - const data = await response.json() - - if (!response.ok) { - setError(data.error || t.errors.generic) - setIsLoading(false) - return - } - + await api.post("/api/v1/auth/forgot-password", { email }) setIsSuccess(true) - } catch (err) { - setError(t.errors.networkError) + } catch (err: any) { + setError(err?.message || t.errors.generic) console.error("Forgot password error:", err) setIsLoading(false) } diff --git a/packages/auth/components/login-form-multistep.tsx b/packages/auth/components/login-form-multistep.tsx index a9d98fd..f2a1e7b 100644 --- a/packages/auth/components/login-form-multistep.tsx +++ b/packages/auth/components/login-form-multistep.tsx @@ -1,7 +1,7 @@ "use client" import { useState } from "react" -import { signIn } from "next-auth/react" +import { useAuth } from "@/packages/auth" import { useRouter, useSearchParams } from "next/navigation" import { Button } from "@/packages/ui/components/ui/button" import { Input } from "@/packages/ui/components/ui/input" @@ -9,6 +9,7 @@ import { Label } from "@/packages/ui/components/ui/label" import { Alert, AlertDescription, AlertTitle } from "@/packages/ui/components/ui/alert" import { Loader2, Mail, Lock, AlertCircle, Shield, ArrowRight, Server, Zap, Clock, Gamepad2, Wand2, ArrowLeft } from "lucide-react" import Link from "next/link" +import { api } from "@/packages/core/lib/api" interface LoginFormProps { translations: { @@ -57,6 +58,7 @@ interface LoginFormProps { export function LoginFormMultiStep({ translations: t }: LoginFormProps) { const router = useRouter() const searchParams = useSearchParams() + const { login } = useAuth() const callbackUrl = searchParams.get("callbackUrl") || "/" const error = searchParams.get("error") @@ -87,21 +89,11 @@ export function LoginFormMultiStep({ translations: t }: LoginFormProps) { setIsLoading(true) try { - const result = await signIn("credentials", { - email, - password, - redirect: false, - callbackUrl, - }) - - if (result?.error) { - setFormError(t.errors.invalid) - } else if (result?.ok) { - router.push(callbackUrl) - router.refresh() - } - } catch { - setFormError(t.errors.networkError) + await login(email, password) + router.push(callbackUrl) + router.refresh() + } catch (err: any) { + setFormError(err.message || t.errors.invalid) } finally { setIsLoading(false) } @@ -112,20 +104,7 @@ export function LoginFormMultiStep({ translations: t }: LoginFormProps) { setIsLoading(true) try { - const response = await fetch("/api/auth/magic-link", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ email }), - }) - - const data = await response.json() - - if (!response.ok) { - setFormError(data.message || t.errors.generic) - setIsLoading(false) - return - } - + await api.post("/api/v1/auth/magic-link", { email }) // Show success state - email is being sent setMagicLinkSent(true) setIsLoading(false) diff --git a/packages/auth/components/login-form.tsx b/packages/auth/components/login-form.tsx index b9e1cdb..d177edc 100644 --- a/packages/auth/components/login-form.tsx +++ b/packages/auth/components/login-form.tsx @@ -1,8 +1,8 @@ "use client" import { useState } from "react" -import { signIn } from "next-auth/react" import { useRouter, useSearchParams } from "next/navigation" +import { useAuth } from "@/packages/auth/lib/auth-context" import { Button } from "@/packages/ui/components/ui/button" import { Input } from "@/packages/ui/components/ui/input" import { Label } from "@/packages/ui/components/ui/label" @@ -34,6 +34,7 @@ interface LoginFormProps { export function LoginForm({ translations: t }: LoginFormProps) { const router = useRouter() const searchParams = useSearchParams() + const { login } = useAuth() const callbackUrl = searchParams.get("callbackUrl") || "/" const error = searchParams.get("error") @@ -48,21 +49,11 @@ export function LoginForm({ translations: t }: LoginFormProps) { setIsLoading(true) try { - const result = await signIn("credentials", { - email, - password, - redirect: false, - callbackUrl, - }) - - if (result?.error) { - setFormError(t.errors.invalid) - } else if (result?.ok) { - router.push(callbackUrl) - router.refresh() - } - } catch { - setFormError(t.errors.networkError) + await login(email, password) + router.push(callbackUrl) + router.refresh() + } catch (err: any) { + setFormError(err.message || t.errors.invalid) } finally { setIsLoading(false) } diff --git a/packages/auth/components/logout-button.tsx b/packages/auth/components/logout-button.tsx index 1d32136..8a0a5a7 100644 --- a/packages/auth/components/logout-button.tsx +++ b/packages/auth/components/logout-button.tsx @@ -1,6 +1,6 @@ "use client" -import { signOut } from "next-auth/react" +import { useAuth } from "@/packages/auth" import { Button } from "@/packages/ui/components/ui/button" import { LogOut, Loader2 } from "lucide-react" import { useState } from "react" @@ -21,11 +21,12 @@ export function LogoutButton({ size = "default", showIcon = true, }: LogoutButtonProps) { + const { logout } = useAuth() const [isLoading, setIsLoading] = useState(false) const handleLogout = async () => { setIsLoading(true) - await signOut({ callbackUrl: "/" }) + await logout() } return ( diff --git a/packages/auth/components/register-form.tsx b/packages/auth/components/register-form.tsx index b906919..b8e979e 100644 --- a/packages/auth/components/register-form.tsx +++ b/packages/auth/components/register-form.tsx @@ -2,6 +2,7 @@ import { useState } from "react" import { useRouter } from "next/navigation" +import { register } from "@/packages/auth/lib/auth-client" import { Button } from "@/packages/ui/components/ui/button" import { Input } from "@/packages/ui/components/ui/input" import { Label } from "@/packages/ui/components/ui/label" @@ -68,19 +69,9 @@ export function RegisterForm({ translations: t }: RegisterFormProps) { } try { - const response = await fetch("/api/auth/register", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - email, - password, - confirmPassword, - }), - }) + const response = await register(email, password, confirmPassword) - const data = await response.json() - - if (!data.success) { + if (!response.success) { const errorMap: Record = { email_exists: t.errors.emailExists, panel_account_linked: t.errors.panelAccountLinked, @@ -88,7 +79,7 @@ export function RegisterForm({ translations: t }: RegisterFormProps) { password_too_short: t.errors.passwordTooShort, invalid_email: t.errors.invalidEmail, } - setFormError(errorMap[data.error] || t.errors.generic) + setFormError(errorMap[response.error || "generic"] || t.errors.generic) setIsLoading(false) return } @@ -100,8 +91,8 @@ export function RegisterForm({ translations: t }: RegisterFormProps) { setTimeout(() => { router.push("/auth/login") }, 2000) - } catch { - setFormError(t.errors.networkError) + } catch (err: any) { + setFormError(err.message || t.errors.networkError) } finally { setIsLoading(false) } diff --git a/packages/auth/components/reset-password-form.tsx b/packages/auth/components/reset-password-form.tsx index 9f0e7b4..8935500 100644 --- a/packages/auth/components/reset-password-form.tsx +++ b/packages/auth/components/reset-password-form.tsx @@ -7,6 +7,7 @@ import { Input } from "@/packages/ui/components/ui/input" import { Label } from "@/packages/ui/components/ui/label" import { Alert, AlertDescription, AlertTitle } from "@/packages/ui/components/ui/alert" import { Loader2, AlertCircle, CheckCircle2, Lock } from "lucide-react" +import { api } from "@/packages/core/lib/api" interface ResetPasswordFormProps { token: string @@ -64,32 +65,19 @@ export function ResetPasswordForm({ token, translations: t }: ResetPasswordFormP } try { - const response = await fetch("/api/auth/reset-password", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ token, password }), - }) - - const data = await response.json() - - if (!response.ok) { - const errorMap: Record = { - invalid_token: t.errors.invalidToken, - token_expired: t.errors.tokenExpired, - } - setError(errorMap[data.error] || t.errors.generic) - setIsLoading(false) - return - } - + await api.post("/api/v1/auth/reset-password", { token, password }) setIsSuccess(true) // Redirect to login after 2 seconds setTimeout(() => { router.push("/auth/login") }, 2000) - } catch (err) { - setError(t.errors.networkError) + } catch (err: any) { + const errorMap: Record = { + invalid_token: t.errors.invalidToken, + token_expired: t.errors.tokenExpired, + } + setError(errorMap[err?.message] || t.errors.generic) console.error("Reset password error:", err) setIsLoading(false) } diff --git a/packages/auth/components/user-menu.tsx b/packages/auth/components/user-menu.tsx index 01bf447..3ef2d6f 100644 --- a/packages/auth/components/user-menu.tsx +++ b/packages/auth/components/user-menu.tsx @@ -1,6 +1,6 @@ "use client" -import { useSession } from "next-auth/react" +import { useAuth } from "@/packages/auth" import { Avatar, AvatarFallback } from "@/packages/ui/components/ui/avatar" import { DropdownMenu, @@ -12,10 +12,10 @@ import { } from "@/packages/ui/components/ui/dropdown-menu" import { Button } from "@/packages/ui/components/ui/button" import { Badge } from "@/packages/ui/components/ui/badge" -import { signOut } from "next-auth/react" import { User, LogOut, Shield, ExternalLink } from "lucide-react" import Link from "next/link" -import type { Session } from "next-auth" +import type { User as UserType } from "@/packages/auth/lib/auth-client" +import { canAccessAdmin, isStaffUser } from "@/packages/auth/lib/auth-client" interface UserMenuProps { translations: { @@ -29,8 +29,9 @@ interface UserMenuProps { } interface UserMenuContentProps { - session: Session | null - status: string + user: UserType | null + isLoading: boolean + onLogout: () => Promise translations: { myAccount: string viewPanel: string @@ -41,9 +42,9 @@ interface UserMenuContentProps { } } -// Standalone menu content that accepts session as prop (used in Navigation) -export function UserMenuContent({ session, status, translations: t }: UserMenuContentProps) { - if (status === "loading") { +// Standalone menu content that accepts user as prop (used in Navigation) +export function UserMenuContent({ user, isLoading, onLogout, translations: t }: UserMenuContentProps) { + if (isLoading) { return ( + ) +} +``` + +### Direct API (Unauthenticated) + +For unauthenticated operations like registration and password reset, use `directApi`: + +```tsx +import { directApi } from "@/packages/core" + +// Server-side only (e.g., in API routes) +const result = await directApi.post("/api/v1/auth/register", { + email: "user@example.com", + password: "secure123" +}) +``` + +### Features + +- ✅ **Type-safe** - Full TypeScript support +- ✅ **Dual mode** - `api` for authenticated (via proxy), `directApi` for unauthenticated +- ✅ **Auth handled** - `/api/go` proxy automatically injects JWT from NextAuth +- ✅ **TanStack Query** - Built on React Query for caching, refetching, etc. +- ✅ **Error handling** - Proper error types and messages +- ✅ **Automatic invalidation** - Smart cache invalidation patterns + +### Architecture + +``` +Client Component (authenticated) + ↓ +useApiQuery/useApiMutation + ↓ +api.get/post/put/delete + ↓ +/api/go/[...path] (Next.js API route - injects JWT) + ↓ +Go Backend (http://localhost:8080) + + +Server Route (unauthenticated) + ↓ +directApi.post/get/put/delete + ↓ +Go Backend (http://localhost:8080) +``` + +### Advanced Usage + +#### Query with params +```tsx +const { data } = useApiQuery("/api/admin/sync/logs", { limit: 10 }) +``` + +#### Mutation with dynamic path +```tsx +const deleteItem = useApiMutation( + "DELETE", + (id: string) => `/api/admin/items/${id}` +) + +deleteItem.mutate("item-123") +``` + +#### Manual cache invalidation +```tsx +import { useInvalidateQueries } from "@/packages/core/hooks/use-api" + +const invalidate = useInvalidateQueries() + +// Invalidate all queries starting with "/api/admin/sync" +invalidate("/api/admin/sync") +``` + +#### Direct API calls (outside React) +```tsx +import { api } from "@/packages/core/lib/api" + +const data = await api.get("/api/admin/users") +await api.post("/api/admin/users", { name: "John" }) +await api.put("/api/admin/users/123", { name: "Jane" }) +await api.delete("/api/admin/users/123") +``` + +## Migration Guide + +### From old `use-admin-api.ts` + +**Before:** +```tsx +import { useAdminQuery } from "@/packages/core/hooks/use-admin-api" + +const { data } = useAdminQuery("/api/admin/sync") +``` + +**After:** +```tsx +import { useApiQuery } from "@/packages/core/hooks/use-api" + +const { data } = useApiQuery("/api/admin/sync") +``` + +The old hooks in `use-admin-api.ts` are now **thin wrappers** around the new API client, so they still work but you should migrate to the new hooks for more flexibility. + +### From raw fetch + +**Before:** +```tsx +const response = await fetch("/api/go/api/admin/sync", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify(data) +}) +const result = await response.json() +``` + +**After:** +```tsx +import { api } from "@/packages/core/lib/api" + +const result = await api.post("/api/admin/sync", data) +``` + +## Error Handling + +The API client throws `ApiError` instances: + +```tsx +import { ApiError } from "@/packages/core/lib/api" + +try { + await api.post("/api/admin/sync") +} catch (error) { + if (error instanceof ApiError) { + console.log(error.message) // User-friendly message + console.log(error.status) // HTTP status code + console.log(error.response) // Raw response body + } +} +``` + +With React Query hooks: + +```tsx +const { error } = useApiQuery("/api/admin/sync") + +if (error) { + // error is typed as ApiError + console.log(error.message) + console.log(error.status) +} +``` diff --git a/packages/core/dispatchers/email.ts b/packages/core/dispatchers/email.ts deleted file mode 100644 index 2afd7c8..0000000 --- a/packages/core/dispatchers/email.ts +++ /dev/null @@ -1,675 +0,0 @@ -/** - * Email Dispatcher Service - * - * Sends emails using Resend email service. - * Handles user notifications like password resets, magic links, account confirmations, etc. - */ - -import { getConfig } from "../lib/config" - -// ============================================================================ -// TYPES -// ============================================================================ - -export interface EmailPayload { - to: string - subject: string - html: string - text?: string - from?: string - replyTo?: string -} - -export interface PasswordResetPayload { - email: string - resetToken: string - resetUrl: string -} - -export interface MagicLinkPayload { - email: string - magicToken: string - magicUrl: string -} - -export interface VerificationEmailPayload { - email: string - verificationToken: string - verificationUrl: string -} - -// ============================================================================ -// EMAIL SERVICE -// ============================================================================ - -/** - * Send a raw email using Resend - */ -export async function sendEmail(payload: EmailPayload): Promise<{ success: boolean; error?: string }> { - try { - const resendApiKey = await getConfig("resend_api_key") - const siteUrl = await getConfig("site_url") - const siteName = await getConfig("site_name") || "NodeByte" - - if (!resendApiKey) { - console.warn("[Email] Resend API key not configured. Email not sent.") - return { success: false, error: "resend_api_key_not_configured" } - } - - const fromEmail = payload.from || `noreply@${new URL(siteUrl || "http://localhost").hostname}` - - const response = await fetch("https://api.resend.com/emails", { - method: "POST", - headers: { - "Authorization": `Bearer ${resendApiKey}`, - "Content-Type": "application/json", - }, - body: JSON.stringify({ - from: fromEmail, - to: payload.to, - subject: payload.subject, - html: payload.html, - text: payload.text, - replyTo: payload.replyTo, - }), - }) - - if (!response.ok) { - const error = await response.text() - console.error("[Email] Resend API error:", error) - return { success: false, error: "resend_api_error" } - } - - const data = await response.json() - console.log(`[Email] Message sent successfully to ${payload.to}`, data) - return { success: true } - } catch (error) { - console.error("[Email] Failed to send email:", error) - return { success: false, error: "email_send_failed" } - } -} - -// ============================================================================ -// EMAIL TEMPLATES -// ============================================================================ - -/** - * Send password reset email - */ -export async function sendPasswordResetEmail(payload: PasswordResetPayload): Promise<{ success: boolean; error?: string }> { - const siteName = await getConfig("site_name") || "NodeByte" - const siteUrl = await getConfig("site_url") || "https://nodebyte.host" - - const html = ` - - - - - - Reset Your Password - - - -
-
-

🔐 Reset Your Password

-

${siteName}

-
-
-

Hi ${payload.email},

-

We received a request to reset your password. Click the button below to set a new password:

-
-

Or copy and paste this link in your browser:

-
${payload.resetUrl}
-
- ⏰ This link expires in 24 hours. If you didn't request a password reset, you can safely ignore this email. Your account remains secure. -
-

If you have any issues, please contact our support team.

-

Best regards,
${siteName} Team

-
- -
- - - ` - - return sendEmail({ - to: payload.email, - subject: `Reset Your Password - ${siteName}`, - html, - }) -} - -/** - * Send magic link email for passwordless login - */ -export async function sendMagicLinkEmail(payload: MagicLinkPayload): Promise<{ success: boolean; error?: string }> { - const siteName = await getConfig("site_name") || "NodeByte" - const siteUrl = await getConfig("site_url") || "https://nodebyte.host" - - const html = ` - - - - - - Sign in to ${siteName} - - - -
-
-

🔗 Sign In to ${siteName}

-

Click the link below to access your account

-
-
-

Hi ${payload.email},

-

You requested a magic sign-in link for your ${siteName} account. Click the button below to sign in:

- - - -

Or copy and paste this link in your browser:

-
${payload.magicUrl}
- -
- 🔒 Security tip: If you didn't request this link, you can safely ignore this email. Never share this link with anyone. -
- -
- ⏱️ Link expires in 30 minutes - After that, you'll need to request a new sign-in link. -
- -

If you're having trouble signing in, contact our support team for assistance.

-
- -
- - - ` - - return sendEmail({ - to: payload.email, - subject: `Sign in to ${siteName}`, - html, - }) -} - -/** - * Send email verification/confirmation email - */ -export async function sendVerificationEmail(payload: VerificationEmailPayload): Promise<{ success: boolean; error?: string }> { - const siteName = await getConfig("site_name") || "NodeByte" - const siteUrl = await getConfig("site_url") || "https://nodebyte.host" - - const html = ` - - - - - - Verify Your Email - - - -
-
-

✉️ Verify Your Email

-

${siteName}

-
-
-

Hi ${payload.email},

-

Thank you for creating an account on ${siteName}! Please verify your email address to get started:

- -

Or copy and paste this link in your browser:

-
${payload.verificationUrl}
-
- 🔒 Your account is secure. This verification link expires in 24 hours. Only use verification links sent from official ${siteName} emails. -
-

If you didn't create this account, you can safely ignore this email.

-

Best regards,
${siteName} Team

-
- -
- - - ` - - return sendEmail({ - to: payload.email, - subject: `Verify Your Email - ${siteName}`, - html, - }) -} - -/** - * Send welcome email - */ -export async function sendWelcomeEmail(email: string): Promise<{ success: boolean; error?: string }> { - const siteName = await getConfig("site_name") || "NodeByte" - const siteUrl = await getConfig("site_url") || "https://nodebyte.host" - - const html = ` - - - - - - Welcome to ${siteName} - - - -
-
-

🎉 Welcome to ${siteName}!

-

Your account has been created

-
-
-

Hi ${email},

-

Welcome to the ${siteName} community! We're excited to have you on board. Your account is now fully set up and ready to use.

- -
-
-
🖥️
-
Game Servers
-
Deploy & manage game servers
-
-
-
⚙️
-
Full Control
-
Advanced configuration options
-
-
-
📊
-
Analytics
-
Performance monitoring
-
-
-
🛡️
-
Secure
-
Enterprise-grade security
-
-
- - - -
-

What's next?

-
    -
  1. Complete your profile - Add a profile picture and personal information
  2. -
  3. Configure your first server - Follow our guided setup wizard
  4. -
  5. Join our community - Connect with other users on Discord
  6. -
  7. Explore documentation - Learn all about our features
  8. -
-
- -

If you have any questions or need assistance, our support team is here to help. Don't hesitate to reach out!

-

Best regards,
${siteName} Team

-
- -
- - - ` - - return sendEmail({ - to: email, - subject: `Welcome to ${siteName}!`, - html, - }) -} diff --git a/packages/core/dispatchers/notifications.ts b/packages/core/dispatchers/notifications.ts deleted file mode 100644 index b3f4c95..0000000 --- a/packages/core/dispatchers/notifications.ts +++ /dev/null @@ -1,256 +0,0 @@ -/** - * Notification Service - * - * Handles sending notifications via Email (Resend) and Discord - * based on system settings configured in the Config table. - */ - -import { prisma } from "../lib/prisma" -import { getConfig } from "../lib/config" - -// ============================================================================ -// EMAIL NOTIFICATIONS (via Resend) -// ============================================================================ - -interface EmailNotificationPayload { - to: string - subject: string - html: string - text?: string -} - -async function getResendApiKey(): Promise { - try { - const apiKey = await getConfig("resend_api_key") - const enabled = await getConfig("email_notifications_enabled") - - if (enabled === "false") { - return null // Email notifications disabled - } - - if (apiKey) { - return apiKey - } - } catch (error) { - console.error("[Notifications] Failed to fetch Resend API key:", error) - } - - return process.env.RESEND_API_KEY || null -} - -export async function sendEmailNotification( - payload: EmailNotificationPayload -): Promise<{ success: boolean; error?: string }> { - try { - const apiKey = await getResendApiKey() - - if (!apiKey) { - console.warn("[Notifications] Email notifications disabled or Resend API key not configured") - return { success: false, error: "Email notifications not configured" } - } - - const response = await fetch("https://api.resend.com/emails", { - method: "POST", - headers: { - Authorization: `Bearer ${apiKey}`, - "Content-Type": "application/json", - }, - body: JSON.stringify({ - from: "notifications@nodebyte.host", - to: payload.to, - subject: payload.subject, - html: payload.html, - text: payload.text, - }), - }) - - if (!response.ok) { - const error = await response.text() - console.error("[Notifications] Resend API error:", error) - return { success: false, error: "Failed to send email" } - } - - console.log(`[Notifications] Email sent to ${payload.to}`) - return { success: true } - } catch (error) { - console.error("[Notifications] Failed to send email:", error) - return { success: false, error: String(error) } - } -} - -// ============================================================================ -// DISCORD NOTIFICATIONS -// ============================================================================ - -interface DiscordWebhook { - name: string - url: string -} - -interface DiscordNotificationPayload { - title: string - description?: string - content?: string - color?: number // Decimal color code - fields?: Array<{ - name: string - value: string - inline?: boolean - }> -} - -async function getDiscordWebhooks(): Promise { - try { - const webhooksJson = await getConfig("discord_webhooks") - const enabled = await getConfig("discord_notifications_enabled") - - if (enabled === "false") { - return [] // Discord notifications disabled - } - - if (!webhooksJson) { - return [] - } - - try { - return JSON.parse(webhooksJson) - } catch { - console.warn("[Notifications] Failed to parse Discord webhooks from database") - return [] - } - } catch (error) { - console.error("[Notifications] Failed to fetch Discord webhooks:", error) - return [] - } -} - -export async function sendDiscordNotification( - payload: DiscordNotificationPayload -): Promise<{ success: boolean; sent: number; errors: string[] }> { - try { - const webhooks = await getDiscordWebhooks() - - if (webhooks.length === 0) { - console.warn("[Notifications] Discord notifications disabled or no webhooks configured") - return { success: false, sent: 0, errors: ["No Discord webhooks configured"] } - } - - const embed = { - title: payload.title, - description: payload.description, - color: payload.color || 3447003, // Default blue - fields: payload.fields || [], - timestamp: new Date().toISOString(), - } - - const errors: string[] = [] - let sent = 0 - - for (const webhook of webhooks) { - try { - const response = await fetch(webhook.url, { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({ - content: payload.content, - embeds: [embed], - username: "NodeByte", - avatar_url: "https://nodebyte.host/logo.png", - }), - }) - - if (!response.ok) { - errors.push(`[${webhook.name}] Failed to send (${response.status})`) - } else { - sent++ - console.log(`[Notifications] Discord notification sent to ${webhook.name}`) - } - } catch (error) { - errors.push(`[${webhook.name}] ${String(error)}`) - console.error(`[Notifications] Failed to send to webhook ${webhook.name}:`, error) - } - } - - return { - success: sent > 0, - sent, - errors, - } - } catch (error) { - console.error("[Notifications] Failed to process Discord notifications:", error) - return { success: false, sent: 0, errors: [String(error)] } - } -} - -// ============================================================================ -// COMBINED NOTIFICATION HANDLER -// ============================================================================ - -export interface NotificationPayload { - type: "email" | "discord" | "both" - email?: EmailNotificationPayload - discord?: DiscordNotificationPayload -} - -export async function sendNotification( - payload: NotificationPayload -): Promise<{ - email?: { success: boolean; error?: string } - discord?: { success: boolean; sent: number; errors: string[] } -}> { - const results: { - email?: { success: boolean; error?: string } - discord?: { success: boolean; sent: number; errors: string[] } - } = {} - - if ((payload.type === "email" || payload.type === "both") && payload.email) { - results.email = await sendEmailNotification(payload.email) - } - - if ((payload.type === "discord" || payload.type === "both") && payload.discord) { - results.discord = await sendDiscordNotification(payload.discord) - } - - return results -} - -// ============================================================================ -// EXAMPLE NOTIFICATION TEMPLATES -// ============================================================================ - -export function createServerStatusNotification(serverName: string, status: "online" | "offline") { - return { - title: `Server ${status === "online" ? "Online" : "Offline"}`, - description: `${serverName} is now ${status}`, - color: status === "online" ? 3066993 : 15158332, // Green or Red - } -} - -export function createSyncNotification( - success: boolean, - details?: string -) { - return { - title: success ? "✅ Sync Completed" : "❌ Sync Failed", - description: details, - color: success ? 3066993 : 15158332, // Green or Red - } -} - -export function createMaintenanceNotification(enabled: boolean) { - return { - title: enabled ? "🔧 Maintenance Mode Enabled" : "✅ Maintenance Mode Disabled", - color: enabled ? 15105570 : 3066993, // Yellow or Green - } -} - -export function createUserRegistrationNotification(username: string, email: string) { - return { - title: "👤 New User Registration", - fields: [ - { name: "Username", value: username, inline: true }, - { name: "Email", value: email, inline: true }, - ], - color: 3447003, // Blue - } -} diff --git a/packages/core/dispatchers/webhooks.ts b/packages/core/dispatchers/webhooks.ts deleted file mode 100644 index d9f17d0..0000000 --- a/packages/core/dispatchers/webhooks.ts +++ /dev/null @@ -1,456 +0,0 @@ -/** - * Webhook Dispatcher Service - * - * Sends Discord webhook notifications based on event types and configured webhooks. - * Queries the database for webhooks matching the event type and scope, then delivers - * notifications asynchronously with proper error handling. - */ - -import { prisma } from "../lib/prisma" - -// ============================================================================ -// TYPES -// ============================================================================ - -type WebhookType = "GAME_SERVER" | "VPS" | "SYSTEM" | "BILLING" | "SECURITY" | "SUPPORT" | "CUSTOM" -type WebhookScope = "ADMIN" | "USER" | "PUBLIC" - -interface WebhookEmbedField { - name: string - value: string - inline?: boolean -} - -interface WebhookEmbed { - title: string - description?: string - color?: number // Decimal color code - fields?: WebhookEmbedField[] - footer?: { - text: string - icon_url?: string - } -} - -interface WebhookPayload { - content?: string - embeds: WebhookEmbed[] - username?: string - avatar_url?: string -} - -export interface DispatchOptions { - types?: WebhookType[] // If empty, sends to all matching types - scopes?: WebhookScope[] // If empty, sends to ADMIN scope - onlyEnabled?: boolean // Default: true -} - -interface WebhookRecord { - id: string - webhookUrl: string - name: string - type: WebhookType - scope: WebhookScope - enabled: boolean -} - -// ============================================================================ -// WEBHOOK DELIVERY -// ============================================================================ - -async function sendToWebhook( - webhook: WebhookRecord, - payload: WebhookPayload -): Promise<{ success: boolean; error?: string }> { - try { - const response = await fetch(webhook.webhookUrl, { - method: "POST", - headers: { - "Content-Type": "application/json", - "User-Agent": "NodeByte-Dispatcher/1.0", - }, - body: JSON.stringify(payload), - }) - - if (!response.ok) { - console.error( - `[WebhookDispatcher] Failed to send to webhook "${webhook.name}" (${webhook.type}): ${response.status} ${response.statusText}` - ) - return { - success: false, - error: `HTTP ${response.status}: ${response.statusText}`, - } - } - - // Update webhook's testSuccessAt timestamp - try { - await prisma.discordWebhook.update({ - where: { id: webhook.id }, - data: { testSuccessAt: new Date() }, - }) - } catch (error) { - console.warn( - `[WebhookDispatcher] Failed to update webhook success timestamp for "${webhook.name}":`, - error - ) - } - - console.log( - `[WebhookDispatcher] Successfully sent to webhook "${webhook.name}" (${webhook.type})` - ) - return { success: true } - } catch (error) { - console.error( - `[WebhookDispatcher] Exception sending to webhook "${webhook.name}":`, - error - ) - return { - success: false, - error: String(error), - } - } -} - -// ============================================================================ -// WEBHOOK QUERYING & FILTERING -// ============================================================================ - -async function getWebhooksForEvent( - eventType: WebhookType, - options: DispatchOptions = {} -): Promise { - const { types, scopes = ["ADMIN"], onlyEnabled = true } = options - - try { - const webhooks = await prisma.discordWebhook.findMany({ - where: { - // Filter by webhook type if specified, otherwise use event type - type: types && types.length > 0 ? { in: types } : eventType, - // Filter by scope - scope: scopes && scopes.length > 0 ? { in: scopes } : "ADMIN", - // Filter by enabled status - enabled: onlyEnabled ? true : undefined, - }, - select: { - id: true, - webhookUrl: true, - name: true, - type: true, - scope: true, - enabled: true, - }, - }) - - return webhooks as WebhookRecord[] - } catch (error) { - console.error("[WebhookDispatcher] Failed to query webhooks:", error) - return [] - } -} - -// ============================================================================ -// PUBLIC DISPATCH METHODS -// ============================================================================ - -/** - * Dispatch a webhook event to all matching configured webhooks - */ -export async function dispatchWebhook( - eventType: WebhookType, - embed: WebhookEmbed, - options: DispatchOptions = {} -): Promise<{ - success: boolean - sent: number - failed: number - errors: Array<{ webhook: string; error: string }> -}> { - const webhooks = await getWebhooksForEvent(eventType, options) - - if (webhooks.length === 0) { - console.info( - `[WebhookDispatcher] No webhooks configured for type "${eventType}" with scope "${ - options.scopes?.[0] || "ADMIN" - }"` - ) - return { - success: false, - sent: 0, - failed: 0, - errors: [{ webhook: "system", error: "No webhooks configured for this event type" }], - } - } - - const payload: WebhookPayload = { - embeds: [ - { - ...embed, - timestamp: new Date().toISOString(), - footer: { - text: "NodeByte Hosting", - icon_url: "https://nodebyte.host/logo.png", - }, - }, - ], - username: "NodeByte", - avatar_url: "https://nodebyte.host/logo.png", - } - - const results = { - success: true, - sent: 0, - failed: 0, - errors: [] as Array<{ webhook: string; error: string }>, - } - - // Send to all webhooks in parallel - const promises = webhooks.map(async (webhook) => { - const result = await sendToWebhook(webhook, payload) - if (result.success) { - results.sent++ - } else { - results.failed++ - results.errors.push({ - webhook: webhook.name, - error: result.error || "Unknown error", - }) - } - }) - - await Promise.all(promises) - - results.success = results.sent > 0 - - return results -} - -// ============================================================================ -// EVENT-SPECIFIC DISPATCH HELPERS -// ============================================================================ - -/** - * System settings were updated - */ -export async function dispatchSettingsUpdate( - changedFields: string[], - updatedBy?: string -): Promise> { - return dispatchWebhook("SYSTEM", { - title: "⚙️ System Settings Updated", - description: `Settings have been modified`, - color: 16776960, // Yellow - fields: [ - { - name: "Changed Fields", - value: changedFields.join(", ") || "Unknown", - inline: false, - }, - ...(updatedBy ? [{ name: "Updated By", value: updatedBy, inline: true }] : []), - { - name: "Timestamp", - value: new Date().toISOString(), - inline: true, - }, - ], - }) -} - -/** - * Server state changed (online/offline/crashed) - */ -export async function dispatchServerStateChange( - serverName: string, - newState: "online" | "offline" | "crashed", - nodeId?: string -): Promise> { - const statusMap = { - online: { emoji: "🟢", label: "Online", color: 3066993 }, // Green - offline: { emoji: "🔴", label: "Offline", color: 15158332 }, // Red - crashed: { emoji: "💥", label: "Crashed", color: 15105570 }, // Orange - } - - const status = statusMap[newState] - - return dispatchWebhook("GAME_SERVER", { - title: `${status.emoji} Server ${status.label}`, - description: `${serverName} is now ${newState}`, - color: status.color, - fields: [ - { name: "Server", value: serverName, inline: true }, - { name: "Status", value: status.label, inline: true }, - ...(nodeId ? [{ name: "Node", value: nodeId, inline: true }] : []), - { - name: "Timestamp", - value: new Date().toISOString(), - inline: false, - }, - ], - }) -} - -/** - * Sync operation completed or failed - */ -export async function dispatchSyncCompletion( - success: boolean, - details?: string, - duration?: string -): Promise> { - const statusMap = { - true: { emoji: "✅", label: "Completed", color: 3066993 }, // Green - false: { emoji: "❌", label: "Failed", color: 15158332 }, // Red - } - - const status = statusMap[success ? "true" : "false"] - - return dispatchWebhook("SYSTEM", { - title: `${status.emoji} Sync ${status.label}`, - description: details || (success ? "Server sync completed successfully" : "Server sync encountered an error"), - color: status.color, - fields: [ - { name: "Status", value: status.label, inline: true }, - ...(duration ? [{ name: "Duration", value: duration, inline: true }] : []), - { - name: "Timestamp", - value: new Date().toISOString(), - inline: false, - }, - ], - }) -} - -/** - * System error or critical alert - */ -export async function dispatchSystemAlert( - title: string, - error: string, - severity: "info" | "warning" | "error" = "error" -): Promise> { - const severityMap = { - info: { emoji: "ℹ️", color: 3447003 }, // Blue - warning: { emoji: "⚠️", color: 15105570 }, // Orange - error: { emoji: "🚨", color: 15158332 }, // Red - } - - const sev = severityMap[severity] - - return dispatchWebhook("SECURITY", { - title: `${sev.emoji} ${title}`, - description: error, - color: sev.color, - fields: [ - { - name: "Severity", - value: severity.charAt(0).toUpperCase() + severity.slice(1), - inline: true, - }, - { - name: "Timestamp", - value: new Date().toISOString(), - inline: true, - }, - ], - }) -} - -/** - * Support ticket created or updated - */ -export async function dispatchSupportTicket( - action: "created" | "updated" | "resolved", - ticketId: string, - subject: string, - details?: string -): Promise> { - const actionMap = { - created: { emoji: "🎫", label: "Created", color: 3447003 }, // Blue - updated: { emoji: "🔄", label: "Updated", color: 16776960 }, // Yellow - resolved: { emoji: "✅", label: "Resolved", color: 3066993 }, // Green - } - - const act = actionMap[action] - - return dispatchWebhook("SUPPORT", { - title: `${act.emoji} Support Ticket ${act.label}`, - description: subject, - color: act.color, - fields: [ - { name: "Ticket ID", value: ticketId, inline: true }, - { name: "Action", value: act.label, inline: true }, - ...(details ? [{ name: "Details", value: details, inline: false }] : []), - { - name: "Timestamp", - value: new Date().toISOString(), - inline: false, - }, - ], - }) -} - -/** - * Node/VPS resource alert - */ -export async function dispatchNodeAlert( - nodeName: string, - alertType: "cpu" | "memory" | "disk" | "network", - usage: number, - threshold: number -): Promise> { - const alertTypeMap = { - cpu: { label: "CPU", color: 15158332 }, // Red - memory: { label: "Memory", color: 15105570 }, // Orange - disk: { label: "Disk Space", color: 16776960 }, // Yellow - network: { label: "Network", color: 3447003 }, // Blue - } - - const alert = alertTypeMap[alertType] - - return dispatchWebhook("VPS", { - title: `⚠️ ${alert.label} Usage Alert`, - description: `${nodeName} has high ${alertType} usage`, - color: alert.color, - fields: [ - { name: "Node", value: nodeName, inline: true }, - { name: "Current Usage", value: `${usage}%`, inline: true }, - { name: "Threshold", value: `${threshold}%`, inline: true }, - { - name: "Timestamp", - value: new Date().toISOString(), - inline: false, - }, - ], - }) -} - -/** - * Billing event - */ -export async function dispatchBillingEvent( - eventType: "invoice" | "payment" | "subscription", - details: string, - amount?: string -): Promise> { - const eventMap = { - invoice: { emoji: "📄", label: "Invoice Generated" }, - payment: { emoji: "💳", label: "Payment Processed" }, - subscription: { emoji: "📅", label: "Subscription Updated" }, - } - - const evt = eventMap[eventType] - - return dispatchWebhook("BILLING", { - title: `${evt.emoji} ${evt.label}`, - description: details, - color: 3066993, // Green - fields: [ - { name: "Type", value: evt.label, inline: true }, - ...(amount ? [{ name: "Amount", value: amount, inline: true }] : []), - { - name: "Timestamp", - value: new Date().toISOString(), - inline: false, - }, - ], - }) -} diff --git a/packages/core/hooks/use-admin-api.ts b/packages/core/hooks/use-admin-api.ts new file mode 100644 index 0000000..b254328 --- /dev/null +++ b/packages/core/hooks/use-admin-api.ts @@ -0,0 +1,271 @@ +"use client" + +import { useApiQuery, useApiMutation, useInvalidateQueries } from "./use-api" +import type { ApiError } from "../lib/api" +import type { UseQueryOptions } from "@tanstack/react-query" + +type QueryOptions = Omit, "queryKey" | "queryFn"> + +/** + * Clean, type-safe admin API hooks using TanStack Query + */ + +// ============================================================================ +// SYNC +// ============================================================================ + +export function useSyncStatus() { + return useApiQuery("/api/admin/sync") +} + +export function useSyncLogs(limit = 5) { + return useApiQuery(`/api/admin/sync/logs`, { limit }) +} + +export function useTriggerSync() { + const invalidate = useInvalidateQueries() + + return useApiMutation("POST", "/api/admin/sync", { + onSuccess: () => invalidate("/api/admin/sync"), + }) +} + +export function useCancelSync() { + const invalidate = useInvalidateQueries() + + return useApiMutation("POST", "/api/admin/sync/cancel", { + onSuccess: () => invalidate("/api/admin/sync"), + }) +} + +export function useSyncSettings() { + return useApiQuery("/api/admin/sync/settings") +} + +export function useUpdateSyncSettings() { + const invalidate = useInvalidateQueries() + + return useApiMutation("POST", "/api/admin/sync/settings", { + onSuccess: () => invalidate("/api/admin/sync"), + }) +} + +// ============================================================================ +// USERS +// ============================================================================ + +interface UseAdminUsersParams { + page?: number + perPage?: number + sortField?: string + sortOrder?: "asc" | "desc" + filter?: string + search?: string +} + +export function useAdminUsers(params?: UseAdminUsersParams) { + const queryParams: Record = {} + if (params?.page) queryParams.page = params.page + if (params?.perPage) queryParams.pageSize = params.perPage + if (params?.sortField) queryParams.sort = params.sortField + if (params?.sortOrder) queryParams.order = params.sortOrder + if (params?.filter) queryParams.filter = params.filter + if (params?.search) queryParams.search = params.search + + return useApiQuery("/api/admin/users", Object.keys(queryParams).length > 0 ? queryParams : undefined) +} + +// ============================================================================ +// SERVERS +// ============================================================================ + +interface UseAdminServersParams { + page?: number + perPage?: number + status?: string + serverType?: string + search?: string + sort?: string + order?: "asc" | "desc" +} + +export function useAdminServers(params?: UseAdminServersParams, options?: QueryOptions) { + const queryParams: Record = {} + if (params?.page) queryParams.page = params.page + if (params?.perPage) queryParams.pageSize = params.perPage + if (params?.status) queryParams.status = params.status + if (params?.serverType) queryParams.serverType = params.serverType + if (params?.search) queryParams.search = params.search + if (params?.sort) queryParams.sort = params.sort + if (params?.order) queryParams.order = params.order + + return useApiQuery("/api/admin/servers", Object.keys(queryParams).length > 0 ? queryParams : undefined, options) +} + +// ============================================================================ +// ALLOCATIONS +// ============================================================================ + +interface UseAdminAllocationsParams { + page?: number + perPage?: number + nodeId?: string | number + assigned?: "all" | "yes" | "no" + search?: string +} + +export function useAdminAllocations(params?: UseAdminAllocationsParams, options?: QueryOptions) { + const queryParams: Record = {} + if (params?.page) queryParams.page = params.page + if (params?.perPage) queryParams.pageSize = params.perPage + if (params?.nodeId) queryParams.nodeId = params.nodeId + if (params?.assigned) queryParams.assigned = params.assigned + if (params?.search) queryParams.search = params.search + + return useApiQuery("/api/admin/allocations", Object.keys(queryParams).length > 0 ? queryParams : undefined, options) +} + +export function useUpdateUserRoles() { + const invalidate = useInvalidateQueries() + + return useApiMutation( + "POST", + "/api/admin/users/roles", + { + onSuccess: () => invalidate("/api/admin/users"), + } + ) +} + +// ============================================================================ +// NODES & LOCATIONS +// ============================================================================ + +interface UseAdminNodesParams { + page?: number + perPage?: number + search?: string + maintenance?: boolean +} + +export function useAdminNodes(params?: UseAdminNodesParams, options?: QueryOptions) { + const queryParams: Record = {} + if (params?.page) queryParams.page = params.page + if (params?.perPage) queryParams.pageSize = params.perPage + if (params?.search) queryParams.search = params.search + if (params?.maintenance !== undefined) queryParams.maintenance = params.maintenance + + return useApiQuery("/api/admin/nodes", Object.keys(queryParams).length > 0 ? queryParams : undefined, options) +} + +export function useAdminNodeAllocations(nodeId: string | number, params?: { page?: number; perPage?: number }, options?: QueryOptions) { + const queryParams: Record = {} + if (params?.page) queryParams.page = params.page + if (params?.perPage) queryParams.pageSize = params.perPage + + return useApiQuery(`/api/admin/nodes/${nodeId}/allocations`, Object.keys(queryParams).length > 0 ? queryParams : undefined, options) +} + +export function useToggleNodeMaintenance() { + const invalidate = useInvalidateQueries() + + return useApiMutation("PATCH", ({ nodeId }) => `/api/admin/nodes/${nodeId}/maintenance`, { + onSuccess: () => invalidate("/api/admin/nodes"), + }) +} + +export function useAdminLocations(options?: QueryOptions) { + return useApiQuery("/api/admin/locations", undefined, options) +} + +// ============================================================================ +// NESTS & EGGS +// ============================================================================ + +interface UseAdminNestsParams { + page?: number + perPage?: number + search?: string +} + +export function useAdminNests(params?: UseAdminNestsParams, options?: QueryOptions) { + const queryParams: Record = {} + if (params?.page) queryParams.page = params.page + if (params?.perPage) queryParams.pageSize = params.perPage + if (params?.search) queryParams.search = params.search + + return useApiQuery("/api/admin/nests", Object.keys(queryParams).length > 0 ? queryParams : undefined, options) +} + +interface UseAdminEggsParams { + page?: number + perPage?: number + search?: string + nestId?: number +} + +export function useAdminEggs(params?: UseAdminEggsParams, options?: QueryOptions) { + const queryParams: Record = {} + if (params?.page) queryParams.page = params.page + if (params?.perPage) queryParams.pageSize = params.perPage + if (params?.search) queryParams.search = params.search + if (params?.nestId) queryParams.nestId = params.nestId + + return useApiQuery("/api/admin/eggs", Object.keys(queryParams).length > 0 ? queryParams : undefined, options) +} + +// ============================================================================ +// SETTINGS +// ============================================================================ + +export function useAdminSettings() { + return useApiQuery("/api/admin/settings") +} + +export function useUpdateAdminSettings() { + const invalidate = useInvalidateQueries() + + return useApiMutation("POST", "/api/admin/settings", { + onSuccess: () => invalidate("/api/admin/settings"), + }) +} + +// ============================================================================ +// WEBHOOKS +// ============================================================================ + +export function useWebhooks() { + return useApiQuery("/api/admin/settings/webhooks") +} + +export function useCreateWebhook() { + const invalidate = useInvalidateQueries() + + return useApiMutation("POST", "/api/admin/settings/webhooks", { + onSuccess: () => invalidate("/api/admin/settings/webhooks"), + }) +} + +export function useUpdateWebhook() { + const invalidate = useInvalidateQueries() + + return useApiMutation( + "PUT", + "/api/admin/settings/webhooks", + { + onSuccess: () => invalidate("/api/admin/settings/webhooks"), + } + ) +} + +export function useDeleteWebhook() { + const invalidate = useInvalidateQueries() + + return useApiMutation( + "DELETE", + (webhookId) => `/api/admin/settings/webhooks/${webhookId}`, + { + onSuccess: () => invalidate("/api/admin/settings/webhooks"), + } + ) +} diff --git a/packages/core/hooks/use-api.ts b/packages/core/hooks/use-api.ts new file mode 100644 index 0000000..3efc045 --- /dev/null +++ b/packages/core/hooks/use-api.ts @@ -0,0 +1,70 @@ +"use client" + +import { useQuery, useMutation, useQueryClient, UseQueryOptions, UseMutationOptions } from "@tanstack/react-query" +import { api, ApiError } from "../lib/api" + +/** + * Generic GET hook with TanStack Query + */ +export function useApiQuery( + path: string, + params?: Record, + options?: Omit, "queryKey" | "queryFn"> +) { + return useQuery({ + queryKey: [path, params], + queryFn: () => api.get(path, params), + ...options, + }) +} + +/** + * Generic mutation hook with TanStack Query + */ +export function useApiMutation( + method: "POST" | "PUT" | "PATCH" | "DELETE", + pathOrFn: string | ((variables: TVariables) => string), + options?: Omit, "mutationFn"> +) { + const queryClient = useQueryClient() + + return useMutation({ + mutationFn: async (variables) => { + const path = typeof pathOrFn === "function" ? pathOrFn(variables) : pathOrFn + + switch (method) { + case "POST": + return api.post(path, variables) + case "PUT": + return api.put(path, variables) + case "PATCH": + return api.patch(path, variables) + case "DELETE": + return api.delete(path) + default: + throw new Error(`Unsupported method: ${method}`) + } + }, + onSuccess: (data, variables, context) => { + // Call user's onSuccess if provided + options?.onSuccess?.(data, variables, context) + }, + ...options, + }) +} + +/** + * Invalidate queries by path pattern + */ +export function useInvalidateQueries() { + const queryClient = useQueryClient() + + return (pathPattern: string) => { + queryClient.invalidateQueries({ + predicate: (query) => { + const key = query.queryKey[0] + return typeof key === "string" && key.startsWith(pathPattern) + } + }) + } +} diff --git a/packages/core/hooks/use-public-api.ts b/packages/core/hooks/use-public-api.ts new file mode 100644 index 0000000..044a3ed --- /dev/null +++ b/packages/core/hooks/use-public-api.ts @@ -0,0 +1,36 @@ +"use client" + +import { useApiQuery } from "./use-api" + +/** + * Public API hooks - no authentication required + */ + +export interface PublicStats { + totalServers: number + totalUsers: number + activeUsers: number + totalAllocations: number +} + +export function usePublicStats() { + return useApiQuery("/api/stats", { + staleTime: 1000 * 60 * 5, // 5 minutes + gcTime: 1000 * 60 * 10, // 10 minutes + }) +} + +export interface PanelCounts { + nodes: number + servers: number + users: number + allocations: number + nests: number +} + +export function usePanelCounts() { + return useApiQuery("/api/panel/counts", { + staleTime: 1000 * 60 * 5, // 5 minutes + gcTime: 1000 * 60 * 10, // 10 minutes + }) +} diff --git a/packages/core/index.ts b/packages/core/index.ts new file mode 100644 index 0000000..840dc63 --- /dev/null +++ b/packages/core/index.ts @@ -0,0 +1,61 @@ +/** + * Core Package Exports + * + * Clean exports for the core package to simplify imports. + */ + +// API Client +export { api, directApi, ApiError, type ApiResponse } from "./lib/api" + +// Hooks +export { + useApiQuery, + useApiMutation, + useInvalidateQueries, +} from "./hooks/use-api" + +export { + usePublicStats, + usePanelCounts, + type PublicStats, + type PanelCounts, +} from "./hooks/use-public-api" + +export { + // Sync + useSyncStatus, + useSyncLogs, + useTriggerSync, + useCancelSync, + useSyncSettings, + useUpdateSyncSettings, + // Users + useAdminUsers, + useUpdateUserRoles, + // Servers + useAdminServers, + // Allocations + useAdminAllocations, + // Nodes & Locations + useAdminNodes, + useAdminNodeAllocations, + useToggleNodeMaintenance, + useAdminLocations, + // Nests & Eggs + useAdminNests, + useAdminEggs, + // Settings + useAdminSettings, + useUpdateAdminSettings, + // Webhooks + useWebhooks, + useCreateWebhook, + useUpdateWebhook, + useDeleteWebhook, +} from "./hooks/use-admin-api" + +// Query Client +export { QueryClientProvider } from "./lib/query-client" + +// Utils +export { cn } from "./lib/utils" diff --git a/packages/core/lib/api.ts b/packages/core/lib/api.ts new file mode 100644 index 0000000..a64b5b5 --- /dev/null +++ b/packages/core/lib/api.ts @@ -0,0 +1,116 @@ +/** + * Clean API Client for Go Backend + * Calls Go backend directly at /api/v1/* endpoints + */ + +const API_BASE = process.env.NEXT_PUBLIC_GO_API_URL || "http://localhost:8080" + +export interface ApiResponse { + success: boolean + data?: T + error?: string + message?: string +} + +export class ApiError extends Error { + constructor( + message: string, + public status: number, + public response?: any + ) { + super(message) + this.name = "ApiError" + } +} + +/** + * Get auth token from localStorage + */ +function getAuthToken(): string | null { + if (typeof window === "undefined") return null + return localStorage.getItem("auth_token") +} + +/** + * Base fetch wrapper with proper error handling + */ +async function apiFetch( + path: string, + options: RequestInit = {} +): Promise { + const url = `${API_BASE}${path}` + + // Get auth token and add to headers + const token = getAuthToken() + const headers: HeadersInit = { + "Content-Type": "application/json", + ...options.headers, + } + + if (token) { + headers["Authorization"] = `Bearer ${token}` + } + + const response = await fetch(url, { + ...options, + headers, + }) + + let data: any + try { + data = await response.json() + } catch { + // If response is not JSON, throw error with status text + throw new ApiError(response.statusText, response.status) + } + + if (!response.ok) { + throw new ApiError( + data?.error || data?.message || `Request failed: ${response.status}`, + response.status, + data + ) + } + + return data as T +} + +/** + * HTTP Methods (authenticated via /api/go proxy) + */ +export const api = { + get: (path: string, params?: Record) => { + const searchParams = params + ? "?" + new URLSearchParams(params).toString() + : "" + return apiFetch(`${path}${searchParams}`, { method: "GET" }) + }, + + post: (path: string, body?: any) => + apiFetch(path, { + method: "POST", + body: body ? JSON.stringify(body) : undefined, + }), + + put: (path: string, body?: any) => + apiFetch(path, { + method: "PUT", + body: body ? JSON.stringify(body) : undefined, + }), + + patch: (path: string, body?: any) => + apiFetch(path, { + method: "PATCH", + body: body ? JSON.stringify(body) : undefined, + }), + + delete: (path: string) => + apiFetch(path, { method: "DELETE" }), +} + +/** + * All API calls go through apiFetch which automatically: + * - Adds Bearer token from localStorage if available + * - Calls the Go backend at process.env.NEXT_PUBLIC_GO_API_URL + * - Handles errors and response parsing + */ diff --git a/packages/core/lib/config.ts b/packages/core/lib/config.ts deleted file mode 100644 index d3bd106..0000000 --- a/packages/core/lib/config.ts +++ /dev/null @@ -1,238 +0,0 @@ -/** - * Configuration Management - * Simple key-value store for all system settings - * - * Configuration Keys - Panel Settings: - * - pterodactyl_url: Pterodactyl panel URL - * - pterodactyl_api_key: Pterodactyl admin API key - * - pterodactyl_client_api_key: Pterodactyl client API key - * - pterodactyl_api: Pterodactyl API endpoint path (default: /api/application) - * - virtfusion_url: Virtfusion panel URL - * - virtfusion_api_key: Virtfusion API key - * - virtfusion_api: Virtfusion API endpoint path (default: /api/v1) - * - * Configuration Keys - External Services: - * - github_token: GitHub API personal access token for fetching releases - * - github_repositories: JSON array of repositories to track (e.g., ["Owner/repo1", "Owner/repo2"]) - * - resend_api_key: Resend email service API key for transactional emails - * - crowdin_project_id: Crowdin project ID for translations management - * - crowdin_personal_token: Crowdin personal API access token for translations sync - * - * Configuration Keys - Site Configuration: - * - site_name: Website name/title (displayed in headers, emails, etc.) - * - site_url: Website base URL (used for links, OAuth redirects, email templates) - * - favicon_url: URL to favicon image for the website - * - admin_email: Primary admin contact email (optional, for admin notifications) - * - * Configuration Keys - Feature Flags: - * - registration_enabled: Allow new user registration (default: "true", stored as string) - * - maintenance_mode: Enable maintenance mode (default: "false", stored as string) - * - email_notifications_enabled: Allow email notifications (default: "true") - * - discord_notifications_enabled: Allow Discord webhook notifications (default: "false") - * - auto_sync_enabled: Enable automatic panel sync jobs (default: "true") - * - * Configuration Keys - Advanced (not yet fully implemented): - * - cache_timeout: Config cache TTL in seconds (default: 60) - * - sync_interval: Panel sync interval in seconds (default: 3600) - * - * Configuration Keys - Discord Webhooks (JSON stored): - * - discord_webhooks: JSON string of configured webhook endpoints for admin notifications - * - * USAGE NOTES: - * - Boolean values are stored as "true"/"false" strings, not actual booleans - * - Use getSystemState() to get parsed boolean flags instead of raw values - * - API keys and tokens are stored in plain text with database access control - * - Sensitive fields are masked in admin responses unless user is SUPER_ADMIN - * - Always call clearConfigCache() after setConfig() to invalidate cached values - * - Use getConfigs() for batch retrieval to reduce database queries - */ - -import { prisma } from "./prisma" - -export interface PterodactylSettings { - url: string | null - apiKey: string | null - clientapiKey: string | null - api: string | null -} - -export interface VirtfusionSettings { - url: string | null - apiKey: string | null - api: string | null -} - -export interface PanelSettings { - pterodactyl: PterodactylSettings - virtfusion: VirtfusionSettings -} - -// Cache for config values with per-key timestamp tracking -interface CacheEntry { - value: string - timestamp: number -} - -let configCache: Map = new Map() -const DEFAULT_CACHE_TTL_MS = 60000 // 1 minute - -function getCacheTTLMs(): number { - const entry = configCache.get("cache_timeout") - if (entry && entry.value) { - const secs = parseInt(entry.value, 10) - if (!isNaN(secs) && secs > 0) return secs * 1000 - } - return DEFAULT_CACHE_TTL_MS -} - -/** - * Get a config value by key - */ -export async function getConfig(key: string): Promise { - // Check cache first - const cached = configCache.get(key) - const ttl = getCacheTTLMs() - if (cached && Date.now() - cached.timestamp < ttl) { - return cached.value || null - } - - try { - const config = await prisma.config.findUnique({ - where: { key }, - select: { value: true }, - }) - - const value = config?.value || null - configCache.set(key, { - value: value || "", - timestamp: Date.now(), - }) - return value - } catch (error) { - console.error(`[Config] Failed to get ${key}:`, error) - return null - } -} - -/** - * Set a config value - */ -export async function setConfig(key: string, value: string): Promise { - try { - await prisma.config.upsert({ - where: { key }, - create: { key, value }, - update: { value }, - }) - // Clear cache - configCache.delete(key) - } catch (error) { - console.error(`[Config] Failed to set ${key}:`, error) - throw error - } -} - -/** - * Get multiple config values at once - */ -export async function getConfigs(...keys: string[]): Promise> { - const result: Record = {} - - for (const key of keys) { - result[key] = await getConfig(key) - } - - return result -} - -/** - * Get all configuration settings as a flat object - * Useful for getting everything at once for the admin panel - */ -export async function getAllSettings(): Promise> { - try { - const allConfigs = await prisma.config.findMany({ - select: { - key: true, - value: true, - }, - }) - - const result: Record = {} - for (const config of allConfigs) { - result[config.key] = config.value - } - - return result - } catch (error) { - console.error("[Config] Failed to get all settings:", error) - return {} - } -} - -/** - * Get panel connection settings - */ -export async function getPanelSettings(): Promise { - const config = await getConfigs( - "pterodactyl_url", - "pterodactyl_api_key", - "pterodactyl_client_api_key", - "pterodactyl_api", - "virtfusion_url", - "virtfusion_api_key", - "virtfusion_api" - ) - - return { - pterodactyl: { - url: config.pterodactyl_url, - apiKey: config.pterodactyl_api_key, - clientapiKey: config.pterodactyl_client_api_key, - api: config.pterodactyl_api, - }, - virtfusion: { - url: config.virtfusion_url, - apiKey: config.virtfusion_api_key, - api: config.virtfusion_api, - }, - } -} - -/** - * Get Pterodactyl settings only - */ -export async function getPterodactylSettings(): Promise { - const settings = await getPanelSettings() - return settings.pterodactyl -} - -/** - * Get Virtfusion settings only - */ -export async function getVirtfusionSettings(): Promise { - const settings = await getPanelSettings() - return settings.virtfusion -} - -/** - * Clear config cache (call after updating settings) - */ -export function clearConfigCache(): void { - configCache.clear() -} - -/** - * Get system state (maintenance mode, registration enabled, etc.) - */ -export async function getSystemState(): Promise<{ - maintenanceMode: boolean - registrationEnabled: boolean -}> { - const config = await getConfigs("maintenance_mode", "registration_enabled") - - return { - maintenanceMode: config.maintenance_mode === "true", - registrationEnabled: config.registration_enabled !== "false", // default true - } -} diff --git a/packages/core/lib/db-test.ts b/packages/core/lib/db-test.ts deleted file mode 100644 index 26468a1..0000000 --- a/packages/core/lib/db-test.ts +++ /dev/null @@ -1,186 +0,0 @@ -/** - * Database Connection Testing Utility - * - * Tests database connections and validates connection strings. - * Used during setup to verify configurations before saving. - */ - -/** - * Test a PostgreSQL connection string - * Returns connection status and any errors - */ -export async function testDatabaseConnection(connectionString: string): Promise<{ - success: boolean - error?: string - database?: string - latency?: number -}> { - if (!connectionString) { - return { - success: false, - error: "Connection string is required", - } - } - - // Validate basic PostgreSQL connection string format - if (!connectionString.startsWith("postgresql://") && !connectionString.startsWith("postgres://")) { - return { - success: false, - error: "Invalid connection string format. Must start with postgresql:// or postgres://", - } - } - - try { - const startTime = Date.now() - - // Dynamically import pg to avoid build-time errors - const { Client } = await import("pg") - const client = new Client({ connectionString }) - - // Try to connect - await client.connect() - - // Get database name for verification - const result = await client.query("SELECT current_database() as database") - const database = result.rows[0]?.database - - // Close connection - await client.end() - - const latency = Date.now() - startTime - - return { - success: true, - database, - latency, - } - } catch (error) { - const errorMessage = error instanceof Error ? error.message : "Unknown error" - - // Provide helpful error messages - let userFriendlyError = errorMessage - - if (errorMessage.includes("ECONNREFUSED")) { - userFriendlyError = "Cannot connect to database server. Check host and port." - } else if (errorMessage.includes("password authentication failed")) { - userFriendlyError = "Authentication failed. Check username and password." - } else if (errorMessage.includes("database")) { - userFriendlyError = "Database error. Check database name exists." - } else if (errorMessage.includes("timeout")) { - userFriendlyError = "Connection timeout. Check host is reachable." - } - - return { - success: false, - error: userFriendlyError, - } - } -} - -/** - * Test a panel API connection (Pterodactyl/Virtfusion) - * Returns connection status and panel information - */ -export async function testPanelConnection( - panelUrl: string, - apiKey: string, - panelType: "pterodactyl" | "virtfusion" = "pterodactyl" -): Promise<{ - success: boolean - error?: string - panelVersion?: string - latency?: number - serverCount?: number -}> { - if (!panelUrl || !apiKey) { - return { - success: false, - error: "Panel URL and API key are required", - } - } - - try { - // Normalize URL - const normalizedUrl = panelUrl.endsWith("/") ? panelUrl.slice(0, -1) : panelUrl - const startTime = Date.now() - - // Different endpoints for different panel types - let endpoint = "" - if (panelType === "pterodactyl") { - endpoint = `${normalizedUrl}/api/application/servers?per_page=1` - } else { - // Virtfusion uses a different API structure - endpoint = `${normalizedUrl}/api/servers?limit=1` - } - - // Test connection to panel API by listing servers - const response = await fetch(endpoint, { - method: "GET", - headers: { - Authorization: `Bearer ${apiKey}`, - "Content-Type": "application/json", - Accept: "application/json", - }, - timeout: 10000, // 10 second timeout - }) - - const latency = Date.now() - startTime - - if (!response.ok) { - let error = `API responded with status ${response.status}` - - if (response.status === 401) { - error = "Authentication failed. Check API key is correct." - } else if (response.status === 403) { - error = "Access denied. Check API key has required permissions." - } else if (response.status === 404) { - error = "Panel endpoint not found. Check URL and panel type." - } - - return { - success: false, - error, - latency, - } - } - - // Parse response to count servers - const data = await response.json() - let serverCount = 0 - let panelVersion = undefined - - if (panelType === "pterodactyl") { - // Pterodactyl response structure - serverCount = data.meta?.pagination?.total || 0 - panelVersion = "Pterodactyl v1.x" - } else { - // Virtfusion response structure - serverCount = Array.isArray(data.data) ? data.data.length : 0 - panelVersion = "Virtfusion" - } - - return { - success: true, - panelVersion, - latency, - serverCount, - } - } catch (error) { - const errorMessage = error instanceof Error ? error.message : "Unknown error" - - let userFriendlyError = errorMessage - - if (errorMessage.includes("ECONNREFUSED")) { - userFriendlyError = "Cannot connect to panel server. Check URL is correct." - } else if (errorMessage.includes("ETIMEDOUT") || errorMessage.includes("timeout")) { - userFriendlyError = "Connection timeout. Panel server may be down or unreachable." - } else if (errorMessage.includes("fetch")) { - userFriendlyError = `Failed to connect: ${errorMessage}` - } - - return { - success: false, - error: userFriendlyError, - } - } -} diff --git a/packages/core/lib/prisma.ts b/packages/core/lib/prisma.ts deleted file mode 100644 index f095b07..0000000 --- a/packages/core/lib/prisma.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { PrismaClient } from "../../../prisma/generated/prisma/client" -import { PrismaPg } from "@prisma/adapter-pg" - -const globalForPrisma = globalThis as unknown as { - prisma: PrismaClient | undefined -} - -// Create the PostgreSQL adapter -const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL! }) - -export const prisma = - globalForPrisma.prisma ?? - new PrismaClient({ - adapter, - log: process.env.NODE_ENV === "development" ? ["query", "error", "warn"] : ["error"], - }) - -if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma - -export default prisma diff --git a/packages/core/lib/query-client.tsx b/packages/core/lib/query-client.tsx new file mode 100644 index 0000000..bd5c668 --- /dev/null +++ b/packages/core/lib/query-client.tsx @@ -0,0 +1,28 @@ +"use client" + +import React from "react" +import { QueryClient, QueryClientProvider as TanStackQueryClientProvider } from "@tanstack/react-query" +import { ReactQueryDevtools } from "@tanstack/react-query-devtools" + +const queryClient = new QueryClient({ + defaultOptions: { + queries: { + staleTime: 1000 * 60 * 5, // 5 minutes + gcTime: 1000 * 60 * 10, // 10 minutes (formerly cacheTime) + retry: 1, + refetchOnWindowFocus: false, + }, + mutations: { + retry: 1, + }, + }, +}) + +export function QueryClientProvider({ children }: { children: React.ReactNode }) { + return ( + + {children} + + + ) +} diff --git a/packages/core/lib/scheduler.ts b/packages/core/lib/scheduler.ts deleted file mode 100644 index 9137a76..0000000 --- a/packages/core/lib/scheduler.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { getConfigs } from "./config" -import { getSyncStatus, runFullSync } from "./sync" - -let started = false -let timer: NodeJS.Timeout | null = null - -export async function startScheduler(): Promise { - if (started) return - started = true - - async function scheduleOnce() { - try { - const cfg = await getConfigs("auto_sync_enabled", "sync_interval") - const enabled = cfg.auto_sync_enabled === "true" - const intervalSec = cfg.sync_interval ? parseInt(cfg.sync_interval, 10) || 3600 : 3600 - - if (!enabled) return - - const status = await getSyncStatus() - if (status?.lastRunning) { - // If a sync is currently running, skip this tick - return - } - - // Run full sync in background (don't await long blocking here) - runFullSync().catch((err) => console.error("[Scheduler] runFullSync error:", err)) - - // Ensure timer is set with configured interval - if (timer) clearInterval(timer) - timer = setInterval(async () => { - try { - const cfg2 = await getConfigs("auto_sync_enabled", "sync_interval") - const enabled2 = cfg2.auto_sync_enabled === "true" - if (!enabled2) return - const status2 = await getSyncStatus() - if (status2?.lastRunning) return - await runFullSync() - } catch (e) { - console.error("[Scheduler] interval run error:", e) - } - }, Math.max(1000, intervalSec * 1000)) - } catch (e) { - console.error("[Scheduler] scheduleOnce error:", e) - } - } - - // Initial delayed trigger to allow server startup to settle - setTimeout(() => { - scheduleOnce() - }, 10_000) -} diff --git a/packages/core/lib/setup.ts b/packages/core/lib/setup.ts deleted file mode 100644 index 58d8d8b..0000000 --- a/packages/core/lib/setup.ts +++ /dev/null @@ -1,93 +0,0 @@ -/** - * Setup Initialization Service - * - * Handles setup detection and initialization on app startup. - * Checks if the system has been configured and provides setup status. - */ - -import { getConfig, getPterodactylSettings, getVirtfusionSettings } from "./config" - -export interface SetupStatusDetails { - isComplete: boolean - components: { - siteInfo: boolean - pterodactylConfig: boolean - virtfusionConfig: boolean - } - configured: { - siteName?: string - siteUrl?: string - faviconUrl?: string | null - pterodactylUrl?: string | null - virtfusionUrl?: string | null - } -} - -/** - * Check if setup is complete - * At least one panel (Pterodactyl or Virtfusion) must be configured - */ -export async function isSetupComplete(): Promise { - try { - const pteroSettings = await getPterodactylSettings() - const virtfusionSettings = await getVirtfusionSettings() - - // At least one panel must be configured - const hasPterodactyl = pteroSettings.url && pteroSettings.apiKey - const hasVirtfusion = virtfusionSettings.url && virtfusionSettings.apiKey - - return hasPterodactyl || hasVirtfusion - } catch (error) { - console.error("[Setup] Failed to check setup status:", error) - return false - } -} - -/** - * Check if minimum setup is done (at least one panel configured) - */ -export async function hasMinimumSetup(): Promise { - return isSetupComplete() -} - -/** - * Get current setup status details including what's configured - */ -export async function getSetupStatus(): Promise { - try { - const config = await getConfig('pterodactyl_url') - const pteroSettings = await getPterodactylSettings() - const virtfusionSettings = await getVirtfusionSettings() - - const hasSiteInfo = !!(await getConfig('site_name')) - const hasPterodactyl = !!(pteroSettings.url && pteroSettings.apiKey) - const hasVirtfusion = !!(virtfusionSettings.url && virtfusionSettings.apiKey) - - return { - isComplete: hasPterodactyl || hasVirtfusion, - components: { - siteInfo: hasSiteInfo, - pterodactylConfig: hasPterodactyl, - virtfusionConfig: hasVirtfusion, - }, - configured: { - siteName: await getConfig('site_name') || undefined, - siteUrl: await getConfig('site_url') || undefined, - faviconUrl: await getConfig('favicon_url') || undefined, - pterodactylUrl: pteroSettings.url || undefined, - virtfusionUrl: virtfusionSettings.url || undefined, - }, - } - } catch (error) { - console.error("[Setup] Failed to get setup status:", error) - return { - isComplete: false, - components: { - siteInfo: false, - pterodactylConfig: false, - virtfusionConfig: false, - }, - configured: {}, - } - } -} diff --git a/packages/core/lib/sync.ts b/packages/core/lib/sync.ts deleted file mode 100644 index 77570cb..0000000 --- a/packages/core/lib/sync.ts +++ /dev/null @@ -1,1104 +0,0 @@ -/** - * Pterodactyl Sync Service - * - * This service handles synchronizing data from the Pterodactyl panel - * to our local database. This allows us to: - * 1. Cache data locally for faster access - * 2. Build custom features without hitting the panel API constantly - * 3. Prepare for potential migration away from Pterodactyl - */ - -import { prisma } from "./prisma" -import type { SyncStatus } from "../../../prisma/generated/prisma" -import { dispatchSyncCompletion } from "../dispatchers/webhooks" -import { getPterodactylSettings } from "./config" -import { setServerProperties } from "../../panels/properties/server" -import { setEggProperties } from "../../panels/properties/egg" - -// Configurable batch size for allocation syncing (can be overridden via env) -const ALLOCATION_BATCH_SIZE = Number(process.env.SYNC_ALLOCATION_BATCH_SIZE) || 100 - -interface PterodactylPagination { - total: number - count: number - per_page: number - current_page: number - total_pages: number -} - -interface PterodactylResponse { - object: "list" - data: T[] - meta: { - pagination: PterodactylPagination - } -} - -interface PterodactylSingleResponse { - object: string - attributes: T -} - -// Get panel credentials -async function getPanelCredentials(): Promise<{ panelUrl: string; apiKey: string } | null> { - const settings = await getPterodactylSettings() - - if (settings.url && settings.apiKey) { - return { - panelUrl: settings.url, - apiKey: settings.apiKey, - } - } - - console.error("[Sync] Pterodactyl panel not configured") - return null -} - -// ============================================================================ -// API HELPERS -// ============================================================================ - -async function fetchFromPanel( - endpoint: string, - options: { include?: string[] } = {} -): Promise { - const credentials = await getPanelCredentials() - if (!credentials) { - console.error("[Sync] Missing panel credentials") - return null - } - - const { panelUrl, apiKey } = credentials - const url = new URL(`${panelUrl}/api/application${endpoint}`) - if (options.include?.length) { - url.searchParams.set("include", options.include.join(",")) - } - - try { - const response = await fetch(url.toString(), { - headers: { - Authorization: `Bearer ${apiKey}`, - Accept: "application/json", - "Content-Type": "application/json", - "User-Agent": "NodeByte-Sync/1.0", - }, - }) - - if (!response.ok) { - console.error(`[Sync] API error: ${response.status} ${response.statusText}`) - return null - } - - return await response.json() - } catch (error) { - console.error("[Sync] Fetch error:", error) - return null - } -} - -// Check whether cancellation has been requested for a given sync log -async function isCancellationRequested(logId: string): Promise { - try { - const log = await prisma.syncLog.findUnique({ where: { id: logId } }) - const meta: any = (log as any)?.metadata || {} - return !!meta.cancelRequested - } catch (e) { - return false - } -} - -async function fetchAllPages( - endpoint: string, - options: { include?: string[] } = {} -): Promise { - const items: T[] = [] - let page = 1 - let hasMore = true - - while (hasMore) { - const url = `${endpoint}${endpoint.includes("?") ? "&" : "?"}page=${page}` - const response = await fetchFromPanel>(url, options) - - if (!response) { - break - } - - items.push(...response.data.map((item) => item.attributes)) - - hasMore = page < response.meta.pagination.total_pages - page++ - } - - return items -} - -// ============================================================================ -// SYNC LOG HELPERS -// ============================================================================ - -async function createSyncLog(type: string) { - return prisma.syncLog.create({ - data: { - type, - status: "RUNNING", - startedAt: new Date(), - }, - }) -} - -async function updateSyncLog( - id: string, - data: { - status?: SyncStatus - itemsTotal?: number - itemsSynced?: number - itemsFailed?: number - error?: string - completedAt?: Date - } -) { - return prisma.syncLog.update({ - where: { id }, - data, - }) -} - -// ============================================================================ -// LOCATION SYNC -// ============================================================================ - -interface PteroLocation { - id: number - short: string - long: string - created_at: string - updated_at: string -} - -export async function syncLocations(): Promise<{ success: boolean; synced: number; error?: string }> { - const log = await createSyncLog("locations") - - try { - const locations = await fetchAllPages("/locations") - - await updateSyncLog(log.id, { itemsTotal: locations.length }) - - let synced = 0 - for (const location of locations) { - try { - await prisma.location.upsert({ - where: { id: location.id }, - update: { - shortCode: location.short, - description: location.long, - updatedAt: new Date(), - }, - create: { - id: location.id, - shortCode: location.short, - description: location.long, - }, - }) - synced++ - if (synced % 5 === 0) { - await updateSyncLog(log.id, { - itemsSynced: synced, - itemsFailed: locations.length - synced, - metadata: { lastMessage: `Synced ${synced} locations` }, - }) - - if (await isCancellationRequested(log.id)) { - await updateSyncLog(log.id, { - status: "FAILED", - error: "Cancelled by user", - completedAt: new Date(), - metadata: { cancelled: true }, - }) - return { success: false, synced: synced, error: "Cancelled by user" } - } - } - } catch (error) { - console.error(`[Sync] Failed to sync location ${location.id}:`, error) - } - } - - await updateSyncLog(log.id, { - status: "COMPLETED", - itemsSynced: synced, - itemsFailed: locations.length - synced, - completedAt: new Date(), - }) - - return { success: true, synced } - } catch (error) { - const errorMsg = error instanceof Error ? error.message : "Unknown error" - await updateSyncLog(log.id, { - status: "FAILED", - error: errorMsg, - completedAt: new Date(), - }) - return { success: false, synced: 0, error: errorMsg } - } -} - -// ============================================================================ -// NODE SYNC -// ============================================================================ - -interface PteroNode { - id: number - uuid: string - name: string - description: string | null - location_id: number - fqdn: string - scheme: string - behind_proxy: boolean - maintenance_mode: boolean - memory: number - memory_overallocate: number - disk: number - disk_overallocate: number - upload_size: number - daemon_listen: number - daemon_sftp: number - daemon_base: string - created_at: string - updated_at: string -} - -interface PteroAllocation { - id: number - ip: string - alias: string | null - port: number - notes: string | null - assigned: boolean -} - -export async function syncNodes(): Promise<{ success: boolean; synced: number; error?: string }> { - const log = await createSyncLog("nodes") - - try { - const nodes = await fetchAllPages("/nodes") - - await updateSyncLog(log.id, { itemsTotal: nodes.length }) - - let synced = 0 - for (const node of nodes) { - try { - await prisma.node.upsert({ - where: { id: node.id }, - update: { - uuid: node.uuid, - name: node.name, - description: node.description, - fqdn: node.fqdn, - scheme: node.scheme, - behindProxy: node.behind_proxy, - memory: BigInt(node.memory), - memoryOverallocate: node.memory_overallocate, - disk: BigInt(node.disk), - diskOverallocate: node.disk_overallocate, - isMaintenanceMode: node.maintenance_mode, - daemonListenPort: node.daemon_listen, - daemonSftpPort: node.daemon_sftp, - daemonBase: node.daemon_base, - locationId: node.location_id, - updatedAt: new Date(), - }, - create: { - id: node.id, - uuid: node.uuid, - name: node.name, - description: node.description, - fqdn: node.fqdn, - scheme: node.scheme, - behindProxy: node.behind_proxy, - memory: BigInt(node.memory), - memoryOverallocate: node.memory_overallocate, - disk: BigInt(node.disk), - diskOverallocate: node.disk_overallocate, - isMaintenanceMode: node.maintenance_mode, - daemonListenPort: node.daemon_listen, - daemonSftpPort: node.daemon_sftp, - daemonBase: node.daemon_base, - locationId: node.location_id, - }, - }) - synced++ - if (synced % 5 === 0) { - await updateSyncLog(log.id, { - itemsSynced: synced, - itemsFailed: nodes.length - synced, - metadata: { lastMessage: `Synced ${synced} nodes` }, - }) - - if (await isCancellationRequested(log.id)) { - await updateSyncLog(log.id, { - status: "FAILED", - error: "Cancelled by user", - completedAt: new Date(), - metadata: { cancelled: true }, - }) - return { success: false, synced: synced, error: "Cancelled by user" } - } - } - } catch (error) { - console.error(`[Sync] Failed to sync node ${node.id}:`, error) - } - } - - await updateSyncLog(log.id, { - status: "COMPLETED", - itemsSynced: synced, - itemsFailed: nodes.length - synced, - completedAt: new Date(), - }) - - return { success: true, synced } - } catch (error) { - const errorMsg = error instanceof Error ? error.message : "Unknown error" - await updateSyncLog(log.id, { - status: "FAILED", - error: errorMsg, - completedAt: new Date(), - }) - return { success: false, synced: 0, error: errorMsg } - } -} - -// ============================================================================ -// ALLOCATION SYNC -// ============================================================================ - -export async function syncAllocations(): Promise<{ success: boolean; synced: number; error?: string }> { - const log = await createSyncLog("allocations") - - try { - // Get all nodes first - const nodes = await prisma.node.findMany({ select: { id: true } }) - - let totalSynced = 0 - let totalAllocations = 0 - - for (const node of nodes) { - // Fetch allocations for each node - let page = 1 - let hasMore = true - - while (hasMore) { - const response = await fetchFromPanel>( - `/nodes/${node.id}/allocations?page=${page}` - ) - - if (!response) { - hasMore = false - continue - } - - totalAllocations += response.data.length - - - // Process allocations in configurable batches to avoid long blocking loops - const batchSize = ALLOCATION_BATCH_SIZE - for (let i = 0; i < response.data.length; i += batchSize) { - const batch = response.data.slice(i, i + batchSize) - - for (const allocData of batch) { - const alloc = allocData.attributes - try { - await prisma.allocation.upsert({ - where: { id: alloc.id }, - update: { - ip: alloc.ip, - port: alloc.port, - alias: alloc.alias, - notes: alloc.notes, - isAssigned: alloc.assigned, - nodeId: node.id, - updatedAt: new Date(), - }, - create: { - id: alloc.id, - ip: alloc.ip, - port: alloc.port, - alias: alloc.alias, - notes: alloc.notes, - isAssigned: alloc.assigned, - nodeId: node.id, - }, - }) - totalSynced++ - } catch (error) { - console.error(`[Sync] Failed to sync allocation ${alloc.id}:`, error) - } - } - - // Update progress after each batch - await updateSyncLog(log.id, { - itemsTotal: totalAllocations, - itemsSynced: totalSynced, - itemsFailed: totalAllocations - totalSynced, - metadata: { lastMessage: `Node ${node.id} - processed page ${page} batch ${Math.floor(i / batchSize) + 1}` }, - }) - - // Check for cancellation - if (await isCancellationRequested(log.id)) { - await updateSyncLog(log.id, { - status: "FAILED", - error: "Cancelled by user", - completedAt: new Date(), - metadata: { cancelled: true }, - }) - return { success: false, synced: totalSynced, error: "Cancelled by user" } - } - } - - hasMore = page < response.meta.pagination.total_pages - page++ - } - } - - await updateSyncLog(log.id, { - status: "COMPLETED", - itemsTotal: totalAllocations, - itemsSynced: totalSynced, - itemsFailed: totalAllocations - totalSynced, - completedAt: new Date(), - }) - - return { success: true, synced: totalSynced } - } catch (error) { - const errorMsg = error instanceof Error ? error.message : "Unknown error" - await updateSyncLog(log.id, { - status: "FAILED", - error: errorMsg, - completedAt: new Date(), - }) - return { success: false, synced: 0, error: errorMsg } - } -} - -// ============================================================================ -// NEST & EGG SYNC -// ============================================================================ - -interface PteroNest { - id: number - uuid: string - name: string - description: string | null - author: string - created_at: string - updated_at: string -} - -interface PteroEgg { - id: number - uuid: string - name: string - description: string | null - author: string - nest: number - docker_image: string - docker_images: Record - startup: string - script: { - privileged: boolean - install: string - entry: string - container: string - extends: string | null - } - created_at: string - updated_at: string -} - -interface PteroEggVariable { - id: number - egg_id: number - name: string - description: string - env_variable: string - default_value: string - user_viewable: boolean - user_editable: boolean - rules: string - created_at: string - updated_at: string -} - -export async function syncNestsAndEggs(): Promise<{ success: boolean; nests: number; eggs: number; variables: number; error?: string }> { - const log = await createSyncLog("nests_eggs") - - try { - // Sync nests first - const nests = await fetchAllPages("/nests") - - let nestsSynced = 0 - for (const nest of nests) { - try { - await prisma.nest.upsert({ - where: { id: nest.id }, - update: { - uuid: nest.uuid, - name: nest.name, - description: nest.description, - author: nest.author, - updatedAt: new Date(), - }, - create: { - id: nest.id, - uuid: nest.uuid, - name: nest.name, - description: nest.description, - author: nest.author, - }, - }) - nestsSynced++ - if (nestsSynced % 5 === 0) { - await updateSyncLog(log.id, { - itemsSynced: nestsSynced, - metadata: { lastMessage: `Synced ${nestsSynced} nests` }, - }) - } - } catch (error) { - console.error(`[Sync] Failed to sync nest ${nest.id}:`, error) - } - } - - // Sync eggs for each nest - let eggsSynced = 0 - let variablesSynced = 0 - - for (const nest of nests) { - const eggsResponse = await fetchFromPanel>( - `/nests/${nest.id}/eggs`, - { include: ["variables"] } - ) - - if (!eggsResponse) continue - - for (const eggData of eggsResponse.data) { - const egg = eggData.attributes - try { - const eggRecord = await prisma.egg.upsert({ - where: { id: egg.id }, - update: { - uuid: egg.uuid, - name: egg.name, - nestId: nest.id, - updatedAt: new Date(), - }, - create: { - id: egg.id, - uuid: egg.uuid, - name: egg.name, - nestId: nest.id, - }, - }) - - // Save all egg metadata as properties - await setEggProperties(eggRecord.id, { - description: egg.description, - author: egg.author, - dockerImage: egg.docker_image, - dockerImages: egg.docker_images, - startup: egg.startup, - scriptPrivileged: egg.script?.privileged ?? false, - scriptInstall: egg.script?.install, - scriptEntry: egg.script?.entry, - scriptContainer: egg.script?.container, - scriptExtends: egg.script?.extends || null, - panelId: egg.id.toString(), - nestId: nest.id, - }) - - eggsSynced++ - - // Sync egg variables if included - const variables = egg.relationships?.variables?.data || [] - for (const varData of variables) { - const variable = varData.attributes - try { - await prisma.eggVariable.upsert({ - where: { id: variable.id }, - update: { - name: variable.name, - description: variable.description || null, - envVariable: variable.env_variable, - defaultValue: variable.default_value || null, - userViewable: variable.user_viewable, - userEditable: variable.user_editable, - rules: variable.rules || null, - eggId: egg.id, - updatedAt: new Date(), - }, - create: { - id: variable.id, - name: variable.name, - description: variable.description || null, - envVariable: variable.env_variable, - defaultValue: variable.default_value || null, - userViewable: variable.user_viewable, - userEditable: variable.user_editable, - rules: variable.rules || null, - eggId: egg.id, - }, - }) - variablesSynced++ - } catch (error) { - console.error(`[Sync] Failed to sync egg variable ${variable.id}:`, error) - } - } - // Update progress periodically for eggs/variables - if ((eggsSynced + variablesSynced) % 10 === 0) { - await updateSyncLog(log.id, { - itemsSynced: nestsSynced + eggsSynced + variablesSynced, - metadata: { lastMessage: `Synced ${eggsSynced} eggs and ${variablesSynced} variables so far` }, - }) - - if (await isCancellationRequested(log.id)) { - await updateSyncLog(log.id, { - status: "FAILED", - error: "Cancelled by user", - completedAt: new Date(), - metadata: { cancelled: true }, - }) - return { success: false, nests: nestsSynced, eggs: eggsSynced, variables: variablesSynced, error: "Cancelled by user" } - } - } - } catch (error) { - console.error(`[Sync] Failed to sync egg ${egg.id}:`, error) - } - } - } - - await updateSyncLog(log.id, { - status: "COMPLETED", - itemsSynced: nestsSynced + eggsSynced + variablesSynced, - metadata: { nests: nestsSynced, eggs: eggsSynced, variables: variablesSynced }, - completedAt: new Date(), - }) - - return { success: true, nests: nestsSynced, eggs: eggsSynced, variables: variablesSynced } - } catch (error) { - const errorMsg = error instanceof Error ? error.message : "Unknown error" - await updateSyncLog(log.id, { - status: "FAILED", - error: errorMsg, - completedAt: new Date(), - }) - return { success: false, nests: 0, eggs: 0, variables: 0, error: errorMsg } - } -} - -// ============================================================================ -// SERVER SYNC -// ============================================================================ - -interface PteroServer { - id: number - uuid: string - identifier: string - external_id: string | null - name: string - description: string - status: string | null - suspended: boolean - limits: { - memory: number - swap: number - disk: number - io: number - cpu: number - threads: string | null - oom_disabled: boolean - } - feature_limits: { - databases: number - allocations: number - backups: number - } - user: number - node: number - egg: number - container: { - startup_command: string - image: string - installed: number - environment: Record - } - created_at: string - updated_at: string -} - -export async function syncServers(): Promise<{ success: boolean; synced: number; error?: string }> { - const log = await createSyncLog("servers") - - try { - const servers = await fetchAllPages("/servers", { - include: ["allocations"], - }) - - await updateSyncLog(log.id, { itemsTotal: servers.length }) - - let synced = 0 - for (const server of servers) { - try { - // Find the local user by pterodactylId - const user = await prisma.user.findFirst({ - where: { pterodactylId: server.user }, - }) - - if (!user) { - console.warn(`[Sync] No local user found for Pterodactyl user ${server.user}, skipping server ${server.name}`) - continue - } - - // Map Pterodactyl status to our enum - const statusMap: Record = { - installing: "INSTALLING", - install_failed: "INSTALL_FAILED", - suspended: "SUSPENDED", - restoring_backup: "RESTORING_BACKUP", - } - const status = server.suspended - ? "SUSPENDED" - : statusMap[server.status || ""] || "OFFLINE" - - // Upsert server record (minimal columns) - const serverRecord = await prisma.server.upsert({ - where: { pterodactylId: server.id }, - update: { - uuid: server.uuid, - uuidShort: server.identifier, - name: server.name, - description: server.description, - status, - isSuspended: server.suspended, - ownerId: user.id, - nodeId: server.node, - eggId: server.egg, - lastSyncedAt: new Date(), - updatedAt: new Date(), - }, - create: { - pterodactylId: server.id, - uuid: server.uuid, - uuidShort: server.identifier, - name: server.name, - description: server.description, - status, - isSuspended: server.suspended, - ownerId: user.id, - nodeId: server.node, - eggId: server.egg, - installedAt: server.container.installed === 1 ? new Date() : null, - }, - }) - - // Save all server specifications as properties - await setServerProperties(serverRecord.id, { - panelId: server.id.toString(), - externalId: server.external_id, - status, - suspended: server.suspended, - memory: server.limits.memory, - swap: server.limits.swap, - disk: server.limits.disk, - io: server.limits.io, - cpu: server.limits.cpu, - threads: server.limits.threads, - oomDisabled: server.limits.oom_disabled, - databaseLimit: server.feature_limits.databases, - allocationLimit: server.feature_limits.allocations, - backupLimit: server.feature_limits.backups, - dockerImage: server.container.image, - startupCommand: server.container.startup_command, - }) - - synced++ - if (synced % 10 === 0) { - await updateSyncLog(log.id, { - itemsSynced: synced, - itemsFailed: servers.length - synced, - metadata: { lastMessage: `Synced ${synced} servers` }, - }) - - if (await isCancellationRequested(log.id)) { - await updateSyncLog(log.id, { - status: "FAILED", - error: "Cancelled by user", - completedAt: new Date(), - metadata: { cancelled: true }, - }) - return { success: false, synced, error: "Cancelled by user" } - } - } - } catch (error) { - console.error(`[Sync] Failed to sync server ${server.id}:`, error) - } - } - - await updateSyncLog(log.id, { - status: "COMPLETED", - itemsSynced: synced, - itemsFailed: servers.length - synced, - completedAt: new Date(), - }) - - return { success: true, synced } - } catch (error) { - const errorMsg = error instanceof Error ? error.message : "Unknown error" - await updateSyncLog(log.id, { - status: "FAILED", - error: errorMsg, - completedAt: new Date(), - }) - return { success: false, synced: 0, error: errorMsg } - } -} - -// ============================================================================ -// SERVER DATABASE SYNC -// ============================================================================ - -interface PteroServerDatabase { - id: number - server: number - host: number - database: string - username: string - remote: string - max_connections: number - created_at: string - updated_at: string - relationships?: { - host?: { - attributes: { - id: number - name: string - host: string - port: number - } - } - } -} - -export async function syncServerDatabases(): Promise<{ success: boolean; synced: number; error?: string }> { - const log = await createSyncLog("databases") - - try { - // Get all servers from our database - const servers = await prisma.server.findMany({ - select: { id: true, pterodactylId: true }, - }) - - let totalSynced = 0 - - for (const server of servers) { - // Fetch databases for each server - const response = await fetchFromPanel>( - `/servers/${server.pterodactylId}/databases`, - { include: ["host"] } - ) - - if (!response) continue - - for (const dbData of response.data) { - const db = dbData.attributes - try { - const hostInfo = db.relationships?.host?.attributes - - await prisma.serverDatabase.upsert({ - where: { id: db.id }, - update: { - name: db.database, - username: db.username, - host: hostInfo?.host || "localhost", - port: hostInfo?.port || 3306, - maxConnections: db.max_connections, - serverId: server.id, - updatedAt: new Date(), - }, - create: { - id: db.id, - name: db.database, - username: db.username, - host: hostInfo?.host || "localhost", - port: hostInfo?.port || 3306, - maxConnections: db.max_connections, - serverId: server.id, - }, - }) - totalSynced++ - } catch (error) { - console.error(`[Sync] Failed to sync database ${db.id}:`, error) - } - } - } - - await updateSyncLog(log.id, { - status: "COMPLETED", - itemsSynced: totalSynced, - completedAt: new Date(), - }) - - return { success: true, synced: totalSynced } - } catch (error) { - const errorMsg = error instanceof Error ? error.message : "Unknown error" - await updateSyncLog(log.id, { - status: "FAILED", - error: errorMsg, - completedAt: new Date(), - }) - return { success: false, synced: 0, error: errorMsg } - } -} - -// ============================================================================ -// SERVER BACKUP SYNC (uses Client API, not Application API) -// Note: The Application API doesn't expose backups directly -// We'll skip this for now as it requires per-user client API keys -// ============================================================================ - -// ============================================================================ -// USER SYNC (sync user data from panel to our database) -// ============================================================================ - -interface PteroUser { - id: number - uuid: string - username: string - email: string - first_name: string - last_name: string - language: string - root_admin: boolean - "2fa": boolean - created_at: string - updated_at: string -} - -export async function syncUserFromPanel(userId: string): Promise<{ success: boolean; error?: string }> { - try { - const user = await prisma.user.findUnique({ - where: { id: userId }, - }) - - if (!user || !user.pterodactylId) { - return { success: false, error: "User not found or no pterodactyl ID" } - } - - const pteroUser = await fetchFromPanel>( - `/users/${user.pterodactylId}` - ) - - if (!pteroUser) { - return { success: false, error: "Could not fetch user from panel" } - } - - const { attributes } = pteroUser - - await prisma.user.update({ - where: { id: userId }, - data: { - username: attributes.username, - firstName: attributes.first_name, - lastName: attributes.last_name, - isPterodactylAdmin: attributes.root_admin, - lastSyncedAt: new Date(), - }, - }) - - return { success: true } - } catch (error) { - const errorMsg = error instanceof Error ? error.message : "Unknown error" - return { success: false, error: errorMsg } - } -} - -// ============================================================================ -// FULL SYNC -// ============================================================================ - -export async function runFullSync(): Promise<{ - success: boolean - results: { - locations: { success: boolean; synced: number } - nodes: { success: boolean; synced: number } - allocations: { success: boolean; synced: number } - nests: { success: boolean; nests: number; eggs: number; variables: number } - servers: { success: boolean; synced: number } - databases: { success: boolean; synced: number } - } -}> { - const startTime = Date.now() - console.log("[Sync] Starting full sync...") - - // Sync in order (dependencies first) - const locations = await syncLocations() - console.log(`[Sync] Locations: ${locations.synced} synced`) - - const nodes = await syncNodes() - console.log(`[Sync] Nodes: ${nodes.synced} synced`) - - const allocations = await syncAllocations() - console.log(`[Sync] Allocations: ${allocations.synced} synced`) - - const nests = await syncNestsAndEggs() - console.log(`[Sync] Nests: ${nests.nests}, Eggs: ${nests.eggs}, Variables: ${nests.variables}`) - - const servers = await syncServers() - console.log(`[Sync] Servers: ${servers.synced} synced`) - - const databases = await syncServerDatabases() - console.log(`[Sync] Databases: ${databases.synced} synced`) - - const allSuccess = locations.success && nodes.success && allocations.success && nests.success && servers.success && databases.success - const duration = Date.now() - startTime - const durationSeconds = (duration / 1000).toFixed(2) - - console.log(`[Sync] Full sync ${allSuccess ? "completed" : "completed with errors"} in ${durationSeconds}s`) - - // Dispatch webhook notification for sync completion (async, non-blocking) - const syncSummary = `Locations: ${locations.synced}, Nodes: ${nodes.synced}, Allocations: ${allocations.synced}, Servers: ${servers.synced}, Databases: ${databases.synced}` - dispatchSyncCompletion(allSuccess, syncSummary, `${durationSeconds}s`).catch((error) => { - console.error("[Sync] Failed to dispatch sync completion webhook:", error) - }) - - return { - success: allSuccess, - results: { - locations, - nodes, - allocations, - nests, - servers, - databases, - }, - } -} - -// ============================================================================ -// GET SYNC STATUS -// ============================================================================ - -export async function getSyncStatus() { - const latestLogs = await prisma.syncLog.findMany({ - orderBy: { startedAt: "desc" }, - take: 10, - }) - - const lastFullSync = await prisma.syncLog.findFirst({ - where: { type: "servers", status: "COMPLETED" }, - orderBy: { completedAt: "desc" }, - }) - - return { - recentLogs: latestLogs, - lastFullSync: lastFullSync?.completedAt, - } -} diff --git a/packages/core/lib/system-settings.ts b/packages/core/lib/system-settings.ts deleted file mode 100644 index 295de97..0000000 --- a/packages/core/lib/system-settings.ts +++ /dev/null @@ -1,69 +0,0 @@ -import { getConfig, getPterodactylSettings as getConfigPterodactyl, getVirtfusionSettings as getConfigVirtfusion, getSystemState as getConfigState } from "./config" - -export interface SystemState { - maintenanceMode: boolean - registrationEnabled: boolean -} - -export interface PterodactylSettings { - url: string | null - apiKey: string | null - clientapiKey: string | null - api: string | null -} - -export interface VirtfusionSettings { - url: string | null - apiKey: string | null - api: string | null -} - -export interface PanelSettings { - pterodactyl: PterodactylSettings - virtfusion: VirtfusionSettings -} - -/** - * DEPRECATED: Use config.ts directly instead - * - * This module is kept for backward compatibility. - * All new code should import from config.ts - */ - -export async function getSystemState(): Promise { - return getConfigState() -} - -/** - * Get panel connection settings from Config store - */ -export async function getPanelSettings(): Promise { - const pterodactyl = await getConfigPterodactyl() - const virtfusion = await getConfigVirtfusion() - - return { - pterodactyl, - virtfusion, - } -} - -/** - * Get Pterodactyl settings only - */ -export async function getPterodactylSettings(): Promise { - return getConfigPterodactyl() -} - -/** - * Get Virtfusion settings only - */ -export async function getVirtfusionSettings(): Promise { - return getConfigVirtfusion() -} - -/** - * Clear the panel settings cache (call after updating settings) - */ -export function clearPanelSettingsCache(): void { - // Cache clearing is now handled in config.ts -} diff --git a/packages/core/middleware/setup.ts b/packages/core/middleware/setup.ts index b4fd749..a1114eb 100644 --- a/packages/core/middleware/setup.ts +++ b/packages/core/middleware/setup.ts @@ -1,49 +1,14 @@ /** * Setup Middleware * - * Redirects users to setup page if system hasn't been configured yet. - * Runs on every request to check setup status. + * DISABLED: Setup is now handled by Go backend at /api/v1/setup + * The Go backend manages setup status and initialization. */ import { NextRequest, NextResponse } from "next/server" -import { isSetupComplete } from "@/packages/core/lib/setup" - -// Routes that should bypass setup check -const BYPASS_ROUTES = [ - "/api/setup", // Setup API endpoint - "/setup", // Setup page itself - "/api/health", // Health checks - "/_next", // Next.js internals -] export async function setupMiddleware(request: NextRequest) { - const pathname = request.nextUrl.pathname - - // Skip setup check for bypass routes - if (BYPASS_ROUTES.some((route) => pathname.startsWith(route))) { - return null // Continue with next middleware - } - - try { - const setupComplete = await isSetupComplete() - - // If setup is not complete, redirect to setup page (except API routes) - if (!setupComplete) { - if (pathname.startsWith("/api/")) { - // For API routes, return 503 Service Unavailable - return NextResponse.json( - { error: "System is not configured. Please complete setup at /setup" }, - { status: 503 } - ) - } - - // For regular routes, redirect to setup - return NextResponse.redirect(new URL("/setup", request.url)) - } - } catch (error) { - console.error("[Setup Middleware] Error checking setup status:", error) - // On error, continue without blocking - } - - return null // Continue with next middleware + // Setup is now handled entirely by Go backend + // This middleware is kept for backwards compatibility but does nothing + return null } diff --git a/packages/panels/properties/egg.ts b/packages/panels/properties/egg.ts deleted file mode 100644 index bdbd7df..0000000 --- a/packages/panels/properties/egg.ts +++ /dev/null @@ -1,143 +0,0 @@ -/** - * Egg Properties Helper - * - * Manages egg metadata/properties that can vary between panels - * (Pterodactyl, Virtfusion, or future panels) - */ - -import { prisma } from "../../core/lib/prisma" - -export interface EggMetadata { - description?: string - author?: string - dockerImage?: string - dockerImages?: Record - startup?: string - scriptPrivileged?: boolean - scriptInstall?: string - scriptEntry?: string - scriptContainer?: string - scriptExtends?: string | null - // Panel-specific identifiers - panelId?: string | number - nestId?: number -} - -/** - * Set an egg property/metadata - */ -export async function setEggProperty( - eggId: string | number, - key: string, - value: string -): Promise { - const numericEggId = typeof eggId === "string" ? Number(eggId) : eggId - - const existing = await prisma.eggProperty.findFirst({ - where: { eggId: numericEggId as number, key, panelType: null }, - }) - - if (existing) { - await prisma.eggProperty.update({ where: { id: existing.id }, data: { value } }) - } else { - await prisma.eggProperty.create({ data: { eggId: numericEggId as number, key, value, panelType: null } }) - } -} - -/** - * Get an egg property by key - */ -export async function getEggProperty( - eggId: string | number, - key: string -): Promise { - const numericEggId = typeof eggId === "string" ? Number(eggId) : eggId - const prop = await prisma.eggProperty.findFirst({ where: { eggId: numericEggId as number, key, panelType: null } }) - return prop?.value || null -} - -/** - * Get all properties for an egg - */ -export async function getEggProperties(eggId: string): Promise> { - const numericEggId = typeof eggId === "string" ? Number(eggId) : eggId - const props = await prisma.eggProperty.findMany({ where: { eggId: numericEggId as number } }) - - const result: Record = {} - for (const prop of props) { - result[prop.key] = prop.value - } - return result -} - -/** - * Set multiple egg properties at once - */ -export async function setEggProperties( - eggId: string, - metadata: EggMetadata -): Promise { - const updates: Array<{ key: string; value: string }> = [] - - Object.entries(metadata).forEach(([key, value]) => { - if (value !== undefined && value !== null) { - updates.push({ - key, - value: typeof value === "string" ? value : JSON.stringify(value), - }) - } - }) - - // Batch upsert all properties - for (const update of updates) { - await setEggProperty(eggId, update.key, update.value) - } -} - -/** - * Delete an egg property - */ -export async function deleteEggProperty( - eggId: string | number, - key: string -): Promise { - const numericEggId = typeof eggId === "string" ? Number(eggId) : eggId - await prisma.eggProperty.deleteMany({ where: { eggId: numericEggId as number, key } }).catch(() => {}) -} - -/** - * Delete all properties for an egg - */ -export async function deleteEggProperties(eggId: string): Promise { - await prisma.eggProperty.deleteMany({ - where: { eggId }, - }) -} - -/** - * Parse egg metadata from properties - */ -export async function parseEggMetadata(eggId: string): Promise { - const props = await getEggProperties(eggId) - const metadata: EggMetadata = {} - - // String properties - if (props.description) metadata.description = props.description - if (props.author) metadata.author = props.author - if (props.dockerImage) metadata.dockerImage = props.dockerImage - if (props.dockerImages) metadata.dockerImages = JSON.parse(props.dockerImages) - if (props.startup) metadata.startup = props.startup - if (props.scriptInstall) metadata.scriptInstall = props.scriptInstall - if (props.scriptEntry) metadata.scriptEntry = props.scriptEntry - if (props.scriptContainer) metadata.scriptContainer = props.scriptContainer - if (props.scriptExtends) metadata.scriptExtends = props.scriptExtends - - // Boolean properties - if (props.scriptPrivileged !== undefined) metadata.scriptPrivileged = props.scriptPrivileged === "true" - - // Numeric properties - if (props.nestId) metadata.nestId = parseInt(props.nestId, 10) - if (props.panelId) metadata.panelId = props.panelId - - return metadata -} diff --git a/packages/panels/properties/server.ts b/packages/panels/properties/server.ts deleted file mode 100644 index dd1ae7f..0000000 --- a/packages/panels/properties/server.ts +++ /dev/null @@ -1,169 +0,0 @@ -/** - * Server Properties Helper - * - * Manages server metadata/properties that can vary between panels - * (Pterodactyl, Virtfusion, or future panels) - */ - -import { prisma } from "../../core/lib/prisma" - -export interface ServerMetadata { - status?: string | null - suspended?: boolean - memory?: number - disk?: number - cpu?: number - swap?: number - io?: number - threads?: string | null - oomDisabled?: boolean - databaseLimit?: number - allocationLimit?: number - backupLimit?: number - dockerImage?: string - startupCommand?: string - // Panel-specific identifiers - panelId?: string | number - externalId?: string | null -} - -/** - * Set a server property/metadata - */ -export async function setServerProperty( - serverId: string, - key: string, - value: string -): Promise { - await prisma.serverProperty.upsert({ - where: { - serverId_key: { - serverId, - key, - }, - }, - update: { value }, - create: { - serverId, - key, - value, - }, - }) -} - -/** - * Get a server property by key - */ -export async function getServerProperty( - serverId: string, - key: string -): Promise { - const prop = await prisma.serverProperty.findUnique({ - where: { - serverId_key: { - serverId, - key, - }, - }, - }) - return prop?.value || null -} - -/** - * Get all properties for a server - */ -export async function getServerProperties(serverId: string): Promise> { - const props = await prisma.serverProperty.findMany({ - where: { serverId }, - }) - - const result: Record = {} - for (const prop of props) { - result[prop.key] = prop.value - } - return result -} - -/** - * Set multiple server properties at once - */ -export async function setServerProperties( - serverId: string, - metadata: ServerMetadata -): Promise { - const updates: Array<{ key: string; value: string }> = [] - - Object.entries(metadata).forEach(([key, value]) => { - if (value !== undefined && value !== null) { - updates.push({ - key, - value: typeof value === "string" ? value : JSON.stringify(value), - }) - } - }) - - // Batch upsert all properties - for (const update of updates) { - await setServerProperty(serverId, update.key, update.value) - } -} - -/** - * Delete a server property - */ -export async function deleteServerProperty( - serverId: string, - key: string -): Promise { - await prisma.serverProperty.delete({ - where: { - serverId_key: { - serverId, - key, - }, - }, - }).catch(() => { - // Ignore if doesn't exist - }) -} - -/** - * Delete all properties for a server - */ -export async function deleteServerProperties(serverId: string): Promise { - await prisma.serverProperty.deleteMany({ - where: { serverId }, - }) -} - -/** - * Parse server metadata from properties - */ -export async function parseServerMetadata(serverId: string): Promise { - const props = await getServerProperties(serverId) - const metadata: ServerMetadata = {} - - // Parse numeric properties - if (props.memory) metadata.memory = parseInt(props.memory, 10) - if (props.disk) metadata.disk = parseInt(props.disk, 10) - if (props.cpu) metadata.cpu = parseInt(props.cpu, 10) - if (props.swap) metadata.swap = parseInt(props.swap, 10) - if (props.io) metadata.io = parseInt(props.io, 10) - if (props.databaseLimit) metadata.databaseLimit = parseInt(props.databaseLimit, 10) - if (props.allocationLimit) metadata.allocationLimit = parseInt(props.allocationLimit, 10) - if (props.backupLimit) metadata.backupLimit = parseInt(props.backupLimit, 10) - - // Parse boolean properties - if (props.suspended !== undefined) metadata.suspended = props.suspended === "true" - if (props.oomDisabled !== undefined) metadata.oomDisabled = props.oomDisabled === "true" - - // String properties - if (props.status) metadata.status = props.status - if (props.threads) metadata.threads = props.threads - if (props.dockerImage) metadata.dockerImage = props.dockerImage - if (props.startupCommand) metadata.startupCommand = props.startupCommand - if (props.panelId) metadata.panelId = props.panelId - if (props.externalId) metadata.externalId = props.externalId - - return metadata -} diff --git a/packages/panels/pterodactyl.ts b/packages/panels/pterodactyl.ts deleted file mode 100644 index bc937d1..0000000 --- a/packages/panels/pterodactyl.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./pterodactyl/index" diff --git a/packages/panels/pterodactyl/application.ts b/packages/panels/pterodactyl/application.ts deleted file mode 100644 index fe5041f..0000000 --- a/packages/panels/pterodactyl/application.ts +++ /dev/null @@ -1,102 +0,0 @@ -import { - fetchFromPterodactyl, -} from "./core" -import { - PterodactylPaginatedResponse, - PterodactylServer, - PterodactylUser, - PterodactylNode, -} from "./types" - -export async function getServers(page = 1, perPage = 50): Promise> { - return fetchFromPterodactyl(`/application/servers?page=${page}&per_page=${perPage}`) -} - -export async function getServerCount(): Promise { - const response = await getServers(1, 1) - return response.meta.pagination.total -} - -export async function getUsers(page = 1, perPage = 50): Promise> { - return fetchFromPterodactyl(`/application/users?page=${page}&per_page=${perPage}`) -} - -export async function getUserCount(): Promise { - const response = await getUsers(1, 1) - return response.meta.pagination.total -} - -export async function getNodes(): Promise> { - return fetchFromPterodactyl(`/application/nodes?include=allocated_resources`) -} - -export async function getNodeCount(): Promise { - const response = await getNodes() - return response.meta.pagination.total -} - -export async function getStats(): Promise<{ - servers: number - users: number - nodes: number - totalMemory: number - totalDisk: number - allocatedMemory: number - allocatedDisk: number -}> { - const [serversData, usersData, nodesData] = await Promise.all([ - getServers(1, 1), - getUsers(1, 1), - getNodes(), - ]) - - let totalMemory = 0 - let totalDisk = 0 - let allocatedMemory = 0 - let allocatedDisk = 0 - - for (const node of nodesData.data) { - const attrs = node.attributes - totalMemory += attrs.memory - totalDisk += attrs.disk - if (attrs.allocated_resources) { - allocatedMemory += attrs.allocated_resources.memory - allocatedDisk += attrs.allocated_resources.disk - } - } - - return { - servers: serversData.meta.pagination.total, - users: usersData.meta.pagination.total, - nodes: nodesData.meta.pagination.total, - totalMemory, - totalDisk, - allocatedMemory, - allocatedDisk, - } -} - -// Databases -export async function getDatabases(page = 1, perPage = 50) { - return fetchFromPterodactyl(`/application/databases?page=${page}&per_page=${perPage}`) -} - -export async function getDatabaseCount(): Promise { - const response = await getDatabases(1, 1) - return response.meta.pagination.total -} - -// Locations -export async function getLocations() { - return fetchFromPterodactyl(`/application/locations`) -} - -// Nests & Eggs -export async function getNests(page = 1, perPage = 50) { - return fetchFromPterodactyl(`/application/nests?page=${page}&per_page=${perPage}`) -} - -export async function getEggsForNest(nestId: number) { - return fetchFromPterodactyl(`/application/nests/${nestId}/eggs`) -} - diff --git a/packages/panels/pterodactyl/client.ts b/packages/panels/pterodactyl/client.ts deleted file mode 100644 index d8932cb..0000000 --- a/packages/panels/pterodactyl/client.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { fetchClientFromPterodactyl } from "./core" - -/** - * Client API helpers — these endpoints are intended to be used with per-user - * client tokens (not the application admin key). See Pterodactyl Client API docs. - */ -export async function getClientServerDetails(serverId: string, clientToken: string, apiBase?: string) { - return fetchClientFromPterodactyl(`/client/servers/${serverId}`, clientToken, apiBase) -} - -export async function getClientServerLogs(serverId: string, clientToken: string, lines = 100, apiBase?: string) { - return fetchClientFromPterodactyl(`/client/servers/${serverId}/files/contents?file=console.log&lines=${lines}`, clientToken, apiBase) -} - -// Add more client-facing helper functions here as needed. diff --git a/packages/panels/pterodactyl/core.ts b/packages/panels/pterodactyl/core.ts deleted file mode 100644 index fa8e8bc..0000000 --- a/packages/panels/pterodactyl/core.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { getPterodactylSettings } from "../../core/lib/system-settings" - -export async function fetchFromPterodactyl(endpoint: string): Promise { - const settings = await getPterodactylSettings() - - if (!settings.api || !settings.apiKey) { - throw new Error("Pterodactyl API not configured") - } - - const response = await fetch(`${settings.api}${endpoint}`, { - headers: { - Authorization: `Bearer ${settings.apiKey}`, - "Content-Type": "application/json", - Accept: "application/json", - // Headers to bypass Cloudflare bot protection - "User-Agent": "NodeByte-Website/1.0 (https://nodebyte.host)", - "CF-Access-Client-Id": process.env.CF_ACCESS_CLIENT_ID || "", - "CF-Access-Client-Secret": process.env.CF_ACCESS_CLIENT_SECRET || "", - }, - next: { revalidate: 60 }, - }) - - if (!response.ok) { - throw new Error(`Pterodactyl API error: ${response.status} ${response.statusText}`) - } - - return response.json() -} - -// Helper for client API calls which require a per-user/client token -export async function fetchClientFromPterodactyl(endpoint: string, token: string, apiBase?: string): Promise { - const base = apiBase || (await getPterodactylSettings()).api - if (!base) throw new Error("Pterodactyl API base URL not configured") - if (!token) throw new Error("Client token required for client API endpoints") - - const response = await fetch(`${base}${endpoint}`, { - headers: { - Authorization: `Bearer ${token}`, - "Content-Type": "application/json", - Accept: "application/json", - "User-Agent": "NodeByte-Website/1.0 (https://nodebyte.host)", - }, - }) - - if (!response.ok) { - throw new Error(`Pterodactyl Client API error: ${response.status} ${response.statusText}`) - } - - return response.json() -} diff --git a/packages/panels/pterodactyl/index.ts b/packages/panels/pterodactyl/index.ts deleted file mode 100644 index 249136e..0000000 --- a/packages/panels/pterodactyl/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "./core" -export * from "./application" -export * from "./client" -export * from "./types" diff --git a/packages/panels/pterodactyl/types.ts b/packages/panels/pterodactyl/types.ts deleted file mode 100644 index b583dd4..0000000 --- a/packages/panels/pterodactyl/types.ts +++ /dev/null @@ -1,151 +0,0 @@ -export interface PterodactylPaginatedResponse { - object: string - data: T[] - meta: { - pagination: { - total: number - count: number - per_page: number - current_page: number - total_pages: number - links: Record - } - } -} - -export interface PterodactylServer { - object: "server" - attributes: { - id: number - external_id: string | null - uuid: string - identifier: string - name: string - description: string - status: string | null - suspended: boolean - limits: { - memory: number - swap: number - disk: number - io: number - cpu: number - threads: string | null - oom_disabled: boolean - } - feature_limits: { - databases: number - allocations: number - backups: number - } - user: number - node: number - allocation: number - nest: number - egg: number - container: { - startup_command: string - image: string - installed: number - environment: Record - } - created_at: string - updated_at: string - } -} - -export interface PterodactylUser { - object: "user" - attributes: { - id: number - external_id: string | null - uuid: string - username: string - email: string - first_name: string - last_name: string - language: string - root_admin: boolean - "2fa": boolean - created_at: string - updated_at: string - } -} - -export interface PterodactylNode { - object: "node" - attributes: { - id: number - uuid: string - public: boolean - name: string - description: string | null - location_id: number - fqdn: string - scheme: string - behind_proxy: boolean - maintenance_mode: boolean - memory: number - memory_overallocate: number - disk: number - disk_overallocate: number - upload_size: number - daemon_listen: number - daemon_sftp: number - daemon_base: string - created_at: string - updated_at: string - allocated_resources?: { - memory: number - disk: number - } - } -} - -export interface PterodactylDatabase { - object: "database" - attributes: { - id: number - server: number - database: string - remote: string - created_at: string - updated_at: string - } -} - -export interface PterodactylLocation { - object: "location" - attributes: { - id: number - short: string - long: string - created_at: string - updated_at: string - } -} - -export interface PterodactylNest { - object: "nest" - attributes: { - id: number - name: string - author: string - description?: string - created_at: string - updated_at: string - } -} - -export interface PterodactylEgg { - object: "egg" - attributes: { - id: number - nest: number - name: string - description?: string - docker_image?: string - created_at: string - updated_at: string - } -} \ No newline at end of file diff --git a/packages/panels/pterodactyl/websocket.ts b/packages/panels/pterodactyl/websocket.ts deleted file mode 100644 index e69de29..0000000 diff --git a/packages/panels/virtfusion.ts b/packages/panels/virtfusion.ts deleted file mode 100644 index e17bc02..0000000 --- a/packages/panels/virtfusion.ts +++ /dev/null @@ -1,242 +0,0 @@ -// Virtfusion API helper functions -// Virtfusion is a VPS management panel - -import { getVirtfusionSettings } from "../core/lib/system-settings" - -interface VirtfusionPaginatedResponse { - data: T[] - links: { - first: string | null - last: string | null - prev: string | null - next: string | null - } - meta: { - current_page: number - from: number | null - last_page: number - path: string - per_page: number - to: number | null - total: number - } -} - -interface VirtfusionServer { - id: number - uuid: string - name: string - hostname: string - status: string - state: string - suspended: boolean - user_id: number - node_id: number - package_id: number | null - ipv4_address: string | null - ipv6_address: string | null - memory: number - disk: number - cpu: number - bandwidth: number - bandwidth_used: number - created_at: string - updated_at: string -} - -interface VirtfusionUser { - id: number - uuid: string - name: string - email: string - email_verified_at: string | null - is_admin: boolean - status: string - created_at: string - updated_at: string -} - -interface VirtfusionNode { - id: number - uuid: string - name: string - fqdn: string - status: string - memory: number - memory_allocated: number - disk: number - disk_allocated: number - cpu: number - cpu_allocated: number - maintenance_mode: boolean - created_at: string - updated_at: string -} - -interface VirtfusionStats { - servers: number - users: number - nodes: number - totalMemory: number - totalDisk: number - allocatedMemory: number - allocatedDisk: number -} - -async function fetchFromVirtfusion(endpoint: string): Promise { - const settings = await getVirtfusionSettings() - - if (!settings.api || !settings.apiKey) { - throw new Error("Virtfusion API not configured") - } - - const response = await fetch(`${settings.api}${endpoint}`, { - headers: { - "Authorization": `Bearer ${settings.apiKey}`, - "Content-Type": "application/json", - "Accept": "application/json", - "User-Agent": "NodeByte-Website/1.0 (https://nodebyte.host)", - }, - next: { revalidate: 60 }, // Cache for 60 seconds - }) - - if (!response.ok) { - throw new Error(`Virtfusion API error: ${response.status} ${response.statusText}`) - } - - return response.json() -} - -export async function getVirtfusionServers(page = 1, perPage = 50): Promise> { - return fetchFromVirtfusion(`/api/servers?page=${page}&per_page=${perPage}`) -} - -export async function getVirtfusionServerCount(): Promise { - try { - const response = await getVirtfusionServers(1, 1) - return response.meta.total - } catch { - return 0 - } -} - -export async function getVirtfusionUsers(page = 1, perPage = 50): Promise> { - return fetchFromVirtfusion(`/api/users?page=${page}&per_page=${perPage}`) -} - -export async function getVirtfusionUserCount(): Promise { - try { - const response = await getVirtfusionUsers(1, 1) - return response.meta.total - } catch { - return 0 - } -} - -export async function getVirtfusionNodes(): Promise> { - return fetchFromVirtfusion(`/api/nodes`) -} - -export async function getVirtfusionNodeCount(): Promise { - try { - const response = await getVirtfusionNodes() - return response.meta.total - } catch { - return 0 - } -} - -export async function getVirtfusionStats(): Promise { - try { - const [serversData, usersData, nodesData] = await Promise.all([ - getVirtfusionServers(1, 1), - getVirtfusionUsers(1, 1), - getVirtfusionNodes(), - ]) - - let totalMemory = 0 - let totalDisk = 0 - let allocatedMemory = 0 - let allocatedDisk = 0 - - for (const node of nodesData.data) { - totalMemory += node.memory - totalDisk += node.disk - allocatedMemory += node.memory_allocated - allocatedDisk += node.disk_allocated - } - - return { - servers: serversData.meta.total, - users: usersData.meta.total, - nodes: nodesData.meta.total, - totalMemory, - totalDisk, - allocatedMemory, - allocatedDisk, - } - } catch (error) { - console.error("[Virtfusion] Failed to get stats:", error) - return { - servers: 0, - users: 0, - nodes: 0, - totalMemory: 0, - totalDisk: 0, - allocatedMemory: 0, - allocatedDisk: 0, - } - } -} - -/** - * Verify a user exists in Virtfusion by email - */ -export async function verifyVirtfusionUser(email: string): Promise { - const settings = await getVirtfusionSettings() - - if (!settings.api || !settings.apiKey) { - console.error("[Virtfusion] API not configured") - return null - } - - try { - // Search for user by email - const response = await fetch( - `${settings.api}/api/users?filter[email]=${encodeURIComponent(email)}`, - { - headers: { - "Authorization": `Bearer ${settings.apiKey}`, - "Accept": "application/json", - "Content-Type": "application/json", - "User-Agent": "NodeByte-Website/1.0 (https://nodebyte.host)", - }, - } - ) - - if (!response.ok) { - console.error(`[Virtfusion] API error: ${response.status}`) - return null - } - - const data: VirtfusionPaginatedResponse = await response.json() - - // Find exact email match - const user = data.data.find( - (u) => u.email.toLowerCase() === email.toLowerCase() - ) - - return user || null - } catch (error) { - console.error("[Virtfusion] Error verifying user:", error) - return null - } -} - -export type { - VirtfusionPaginatedResponse, - VirtfusionServer, - VirtfusionUser, - VirtfusionNode, - VirtfusionStats, -} diff --git a/packages/ui/components/Layouts/About/about-page.tsx b/packages/ui/components/Layouts/About/about-page.tsx index 273fb2a..0347c2a 100644 --- a/packages/ui/components/Layouts/About/about-page.tsx +++ b/packages/ui/components/Layouts/About/about-page.tsx @@ -51,7 +51,7 @@ export function AboutPage() { { value: "99.6%", label: t("aboutPage.stats.uptime"), icon: Server }, { value: "50ms", label: t("aboutPage.stats.latency"), icon: Zap }, { value: "24/7", label: t("aboutPage.stats.support"), icon: Clock }, - { value: "1000+", label: t("aboutPage.stats.servers"), icon: Globe }, + { value: "100+", label: t("aboutPage.stats.servers"), icon: Globe }, ] const timeline = [ @@ -77,7 +77,7 @@ export function AboutPage() { {/* Hero Section */}
{/* Background gradients */} -
+
{/* Animated background orbs */}
@@ -87,7 +87,7 @@ export function AboutPage() {
{/* Grid pattern overlay */} -
+
diff --git a/packages/ui/components/Layouts/Home/about.tsx b/packages/ui/components/Layouts/Home/about.tsx index f259f14..a4b49a3 100644 --- a/packages/ui/components/Layouts/Home/about.tsx +++ b/packages/ui/components/Layouts/Home/about.tsx @@ -8,6 +8,7 @@ import { Button } from "@/packages/ui/components/ui/button" import Link from "next/link" import { cn } from "@/lib/utils" import { useTranslations } from "next-intl" +import { api } from "@/packages/core/lib/api" interface Stats { totalServers?: number @@ -41,20 +42,18 @@ export function About() { const fetchStats = async () => { try { - const response = await fetch("/api/stats") - if (response.ok) { - const result = await response.json() - // Stats are nested under 'data' key in the API response - const apiData = result.data || {} - setStats({ - totalServers: apiData.totalServers || 0, - totalUsers: apiData.totalUsers || 0, - activeUsers: apiData.activeUsers || 0, - uptime: "99.6%", - }) - } - } catch (error) { - console.error("Failed to fetch stats:", error) + const result = await api.get<{data: any}>("/api/stats") + // Stats are nested under 'data' key in the API response + const apiData = result.data || {} + setStats({ + totalServers: apiData.totalServers || 0, + totalUsers: apiData.totalUsers || 0, + activeUsers: apiData.activeUsers || 0, + uptime: "99.6%", + }) + } catch (err) { + console.error("Failed to fetch stats:", err) + // Keep default stats on error } } diff --git a/packages/ui/components/Layouts/Home/games.tsx b/packages/ui/components/Layouts/Home/games.tsx index d9211ce..c913573 100644 --- a/packages/ui/components/Layouts/Home/games.tsx +++ b/packages/ui/components/Layouts/Home/games.tsx @@ -50,7 +50,7 @@ export function Download() { description: t("games.hytale.description"), banner: "/hytale.png", tag: t("games.hytale.tag"), - tagColor: "bg-muted text-muted-foreground", + tagColor: "bg-primary text-accent-foreground", features: [ t("games.hytale.features.0"), t("games.hytale.features.1"), diff --git a/packages/ui/components/Layouts/Home/hero.tsx b/packages/ui/components/Layouts/Home/hero.tsx index 2dedbae..5fe7ee3 100644 --- a/packages/ui/components/Layouts/Home/hero.tsx +++ b/packages/ui/components/Layouts/Home/hero.tsx @@ -73,7 +73,7 @@ export function Hero() { return (
{/* Background gradients */} -
+
{/* Animated background orbs */}
@@ -83,7 +83,7 @@ export function Hero() {
{/* Grid pattern overlay */} -
+
@@ -100,11 +100,11 @@ export function Hero() { {/* Main Heading */}

- + {t("hero.title")}
- + {t("hero.titleHighlight")}

@@ -176,7 +176,7 @@ export function Hero() {
{/* Glow effect behind graphic */} -
+
{/* Main graphic container */}
diff --git a/packages/ui/components/Static/navigation.tsx b/packages/ui/components/Static/navigation.tsx index e3f0df0..04fe134 100644 --- a/packages/ui/components/Static/navigation.tsx +++ b/packages/ui/components/Static/navigation.tsx @@ -1,7 +1,7 @@ "use client" import { useState, useEffect, useRef, useMemo } from "react" -import { useSession } from "next-auth/react" +import { useAuth, canAccessAdmin, isStaffUser } from "@/packages/auth" import { Button } from "@/packages/ui/components/ui/button" import { DropdownMenu, @@ -22,7 +22,7 @@ import { useTranslations } from "next-intl" export function Navigation() { const t = useTranslations() - const { data: session, status } = useSession() + const { user, isLoading, logout } = useAuth() const mountedRef = useRef(false) // Memoize menu items to prevent recreation on every render @@ -115,6 +115,7 @@ export function Navigation() { // Memoize translations to avoid recreating objects const userMenuTranslations = useMemo(() => ({ + myAccount: t("auth.userMenu.myAccount"), dashboard: t("auth.userMenu.myAccount"), viewPanel: t("auth.userMenu.viewPanel"), admin: t("auth.userMenu.admin"), @@ -409,8 +410,9 @@ export function Navigation() { - {(session.user.isSystemAdmin || session.user.roles.includes('SUPER_ADMIN') || session.user.roles.includes('ADMINISTRATOR')) && ( + {canAccessAdmin(user) && (
- {isSelected && } + {isSelected && }
{!Icon && (
t.value), ...allThemes.base.map(t => t.value), + ...allThemes.catppuccin.map(t => t.value), + ...allThemes.popular.map(t => t.value), ...allThemes.cool.map(t => t.value), ...allThemes.warm.map(t => t.value), ...allThemes.nature.map(t => t.value), @@ -191,7 +208,7 @@ export function ThemeToggle() { {/* Featured Themes (Top 3) */} @@ -228,6 +245,40 @@ export function ThemeToggle() {
+ {/* Catppuccin */} +
+ + Catppuccin + +
+ {allThemes.catppuccin.map((themeOption) => ( + handleThemeChange(themeOption.value)} + /> + ))} +
+
+ + {/* Popular Themes */} +
+ + Popular + +
+ {allThemes.popular.map((themeOption) => ( + handleThemeChange(themeOption.value)} + /> + ))} +
+
+ {/* Cool Tones */}
diff --git a/prisma.config.ts b/prisma.config.ts deleted file mode 100644 index 69edbe9..0000000 --- a/prisma.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import "dotenv/config"; -import { defineConfig } from "prisma/config"; - -export default defineConfig({ - schema: "prisma/schema.prisma", - migrations: { - path: "prisma/migrations", - }, - datasource: { - url: process.env["DATABASE_URL"], - }, -}); diff --git a/prisma/generated/prisma/browser.ts b/prisma/generated/prisma/browser.ts deleted file mode 100644 index 95f7fea..0000000 --- a/prisma/generated/prisma/browser.ts +++ /dev/null @@ -1,139 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file should be your main import to use Prisma-related types and utilities in a browser. - * Use it to get access to models, enums, and input types. - * - * This file does not contain a `PrismaClient` class, nor several other helpers that are intended as server-side only. - * See `client.ts` for the standard, server-side entry point. - * - * 🟢 You can import this file directly. - */ - -import * as Prisma from './internal/prismaNamespaceBrowser' -export { Prisma } -export * as $Enums from './enums' -export * from './enums'; -/** - * Model User - * - */ -export type User = Prisma.UserModel -/** - * Model Session - * - */ -export type Session = Prisma.SessionModel -/** - * Model VerificationToken - * - */ -export type VerificationToken = Prisma.VerificationTokenModel -/** - * Model Location - * - */ -export type Location = Prisma.LocationModel -/** - * Model Node - * - */ -export type Node = Prisma.NodeModel -/** - * Model Allocation - * - */ -export type Allocation = Prisma.AllocationModel -/** - * Model Nest - * - */ -export type Nest = Prisma.NestModel -/** - * Model Egg - * - */ -export type Egg = Prisma.EggModel -/** - * Model EggProperty - * - */ -export type EggProperty = Prisma.EggPropertyModel -/** - * Model EggVariable - * - */ -export type EggVariable = Prisma.EggVariableModel -/** - * Model Server - * - */ -export type Server = Prisma.ServerModel -/** - * Model ServerProperty - * - */ -export type ServerProperty = Prisma.ServerPropertyModel -/** - * Model ServerVariable - * - */ -export type ServerVariable = Prisma.ServerVariableModel -/** - * Model ServerDatabase - * - */ -export type ServerDatabase = Prisma.ServerDatabaseModel -/** - * Model ServerBackup - * - */ -export type ServerBackup = Prisma.ServerBackupModel -/** - * Model SyncLog - * - */ -export type SyncLog = Prisma.SyncLogModel -/** - * Model Product - * - */ -export type Product = Prisma.ProductModel -/** - * Model Invoice - * - */ -export type Invoice = Prisma.InvoiceModel -/** - * Model InvoiceItem - * - */ -export type InvoiceItem = Prisma.InvoiceItemModel -/** - * Model Payment - * - */ -export type Payment = Prisma.PaymentModel -/** - * Model SupportTicket - * - */ -export type SupportTicket = Prisma.SupportTicketModel -/** - * Model SupportTicketReply - * - */ -export type SupportTicketReply = Prisma.SupportTicketReplyModel -/** - * Model DiscordWebhook - * - */ -export type DiscordWebhook = Prisma.DiscordWebhookModel -/** - * Model Config - * - */ -export type Config = Prisma.ConfigModel diff --git a/prisma/generated/prisma/client.ts b/prisma/generated/prisma/client.ts deleted file mode 100644 index ebb4d2f..0000000 --- a/prisma/generated/prisma/client.ts +++ /dev/null @@ -1,161 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file should be your main import to use Prisma. Through it you get access to all the models, enums, and input types. - * If you're looking for something you can import in the client-side of your application, please refer to the `browser.ts` file instead. - * - * 🟢 You can import this file directly. - */ - -import * as process from 'node:process' -import * as path from 'node:path' -import { fileURLToPath } from 'node:url' -globalThis['__dirname'] = path.dirname(fileURLToPath(import.meta.url)) - -import * as runtime from "@prisma/client/runtime/client" -import * as $Enums from "./enums" -import * as $Class from "./internal/class" -import * as Prisma from "./internal/prismaNamespace" - -export * as $Enums from './enums' -export * from "./enums" -/** - * ## Prisma Client - * - * Type-safe database client for TypeScript - * @example - * ``` - * const prisma = new PrismaClient() - * // Fetch zero or more Users - * const users = await prisma.user.findMany() - * ``` - * - * Read more in our [docs](https://pris.ly/d/client). - */ -export const PrismaClient = $Class.getPrismaClientClass() -export type PrismaClient = $Class.PrismaClient -export { Prisma } - -/** - * Model User - * - */ -export type User = Prisma.UserModel -/** - * Model Session - * - */ -export type Session = Prisma.SessionModel -/** - * Model VerificationToken - * - */ -export type VerificationToken = Prisma.VerificationTokenModel -/** - * Model Location - * - */ -export type Location = Prisma.LocationModel -/** - * Model Node - * - */ -export type Node = Prisma.NodeModel -/** - * Model Allocation - * - */ -export type Allocation = Prisma.AllocationModel -/** - * Model Nest - * - */ -export type Nest = Prisma.NestModel -/** - * Model Egg - * - */ -export type Egg = Prisma.EggModel -/** - * Model EggProperty - * - */ -export type EggProperty = Prisma.EggPropertyModel -/** - * Model EggVariable - * - */ -export type EggVariable = Prisma.EggVariableModel -/** - * Model Server - * - */ -export type Server = Prisma.ServerModel -/** - * Model ServerProperty - * - */ -export type ServerProperty = Prisma.ServerPropertyModel -/** - * Model ServerVariable - * - */ -export type ServerVariable = Prisma.ServerVariableModel -/** - * Model ServerDatabase - * - */ -export type ServerDatabase = Prisma.ServerDatabaseModel -/** - * Model ServerBackup - * - */ -export type ServerBackup = Prisma.ServerBackupModel -/** - * Model SyncLog - * - */ -export type SyncLog = Prisma.SyncLogModel -/** - * Model Product - * - */ -export type Product = Prisma.ProductModel -/** - * Model Invoice - * - */ -export type Invoice = Prisma.InvoiceModel -/** - * Model InvoiceItem - * - */ -export type InvoiceItem = Prisma.InvoiceItemModel -/** - * Model Payment - * - */ -export type Payment = Prisma.PaymentModel -/** - * Model SupportTicket - * - */ -export type SupportTicket = Prisma.SupportTicketModel -/** - * Model SupportTicketReply - * - */ -export type SupportTicketReply = Prisma.SupportTicketReplyModel -/** - * Model DiscordWebhook - * - */ -export type DiscordWebhook = Prisma.DiscordWebhookModel -/** - * Model Config - * - */ -export type Config = Prisma.ConfigModel diff --git a/prisma/generated/prisma/commonInputTypes.ts b/prisma/generated/prisma/commonInputTypes.ts deleted file mode 100644 index b16e6bd..0000000 --- a/prisma/generated/prisma/commonInputTypes.ts +++ /dev/null @@ -1,725 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports various common sort, input & filter types that are not directly linked to a particular model. - * - * 🟢 You can import this file directly. - */ - -import type * as runtime from "@prisma/client/runtime/client" -import * as $Enums from "./enums" -import type * as Prisma from "./internal/prismaNamespace" - - -export type StringFilter<$PrismaModel = never> = { - equals?: string | Prisma.StringFieldRefInput<$PrismaModel> - in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> - notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> - lt?: string | Prisma.StringFieldRefInput<$PrismaModel> - lte?: string | Prisma.StringFieldRefInput<$PrismaModel> - gt?: string | Prisma.StringFieldRefInput<$PrismaModel> - gte?: string | Prisma.StringFieldRefInput<$PrismaModel> - contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - mode?: Prisma.QueryMode - not?: Prisma.NestedStringFilter<$PrismaModel> | string -} - -export type StringNullableFilter<$PrismaModel = never> = { - equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null - in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null - notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null - lt?: string | Prisma.StringFieldRefInput<$PrismaModel> - lte?: string | Prisma.StringFieldRefInput<$PrismaModel> - gt?: string | Prisma.StringFieldRefInput<$PrismaModel> - gte?: string | Prisma.StringFieldRefInput<$PrismaModel> - contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - mode?: Prisma.QueryMode - not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null -} - -export type BoolFilter<$PrismaModel = never> = { - equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> - not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean -} - -export type IntNullableFilter<$PrismaModel = never> = { - equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null - in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null - notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null - lt?: number | Prisma.IntFieldRefInput<$PrismaModel> - lte?: number | Prisma.IntFieldRefInput<$PrismaModel> - gt?: number | Prisma.IntFieldRefInput<$PrismaModel> - gte?: number | Prisma.IntFieldRefInput<$PrismaModel> - not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null -} - -export type DateTimeNullableFilter<$PrismaModel = never> = { - equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null - in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null - notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null - lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - not?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null -} - -export type DecimalFilter<$PrismaModel = never> = { - equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - not?: Prisma.NestedDecimalFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type DateTimeFilter<$PrismaModel = never> = { - equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - not?: Prisma.NestedDateTimeFilter<$PrismaModel> | Date | string -} - -export type SortOrderInput = { - sort: Prisma.SortOrder - nulls?: Prisma.NullsOrder -} - -export type StringWithAggregatesFilter<$PrismaModel = never> = { - equals?: string | Prisma.StringFieldRefInput<$PrismaModel> - in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> - notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> - lt?: string | Prisma.StringFieldRefInput<$PrismaModel> - lte?: string | Prisma.StringFieldRefInput<$PrismaModel> - gt?: string | Prisma.StringFieldRefInput<$PrismaModel> - gte?: string | Prisma.StringFieldRefInput<$PrismaModel> - contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - mode?: Prisma.QueryMode - not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedStringFilter<$PrismaModel> - _max?: Prisma.NestedStringFilter<$PrismaModel> -} - -export type StringNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null - in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null - notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null - lt?: string | Prisma.StringFieldRefInput<$PrismaModel> - lte?: string | Prisma.StringFieldRefInput<$PrismaModel> - gt?: string | Prisma.StringFieldRefInput<$PrismaModel> - gte?: string | Prisma.StringFieldRefInput<$PrismaModel> - contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - mode?: Prisma.QueryMode - not?: Prisma.NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null - _count?: Prisma.NestedIntNullableFilter<$PrismaModel> - _min?: Prisma.NestedStringNullableFilter<$PrismaModel> - _max?: Prisma.NestedStringNullableFilter<$PrismaModel> -} - -export type BoolWithAggregatesFilter<$PrismaModel = never> = { - equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> - not?: Prisma.NestedBoolWithAggregatesFilter<$PrismaModel> | boolean - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedBoolFilter<$PrismaModel> - _max?: Prisma.NestedBoolFilter<$PrismaModel> -} - -export type IntNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null - in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null - notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null - lt?: number | Prisma.IntFieldRefInput<$PrismaModel> - lte?: number | Prisma.IntFieldRefInput<$PrismaModel> - gt?: number | Prisma.IntFieldRefInput<$PrismaModel> - gte?: number | Prisma.IntFieldRefInput<$PrismaModel> - not?: Prisma.NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null - _count?: Prisma.NestedIntNullableFilter<$PrismaModel> - _avg?: Prisma.NestedFloatNullableFilter<$PrismaModel> - _sum?: Prisma.NestedIntNullableFilter<$PrismaModel> - _min?: Prisma.NestedIntNullableFilter<$PrismaModel> - _max?: Prisma.NestedIntNullableFilter<$PrismaModel> -} - -export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null - in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null - notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null - lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - not?: Prisma.NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null - _count?: Prisma.NestedIntNullableFilter<$PrismaModel> - _min?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> - _max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> -} - -export type DecimalWithAggregatesFilter<$PrismaModel = never> = { - equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - not?: Prisma.NestedDecimalWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string - _count?: Prisma.NestedIntFilter<$PrismaModel> - _avg?: Prisma.NestedDecimalFilter<$PrismaModel> - _sum?: Prisma.NestedDecimalFilter<$PrismaModel> - _min?: Prisma.NestedDecimalFilter<$PrismaModel> - _max?: Prisma.NestedDecimalFilter<$PrismaModel> -} - -export type DateTimeWithAggregatesFilter<$PrismaModel = never> = { - equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - not?: Prisma.NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedDateTimeFilter<$PrismaModel> - _max?: Prisma.NestedDateTimeFilter<$PrismaModel> -} - -export type IntFilter<$PrismaModel = never> = { - equals?: number | Prisma.IntFieldRefInput<$PrismaModel> - in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> - notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> - lt?: number | Prisma.IntFieldRefInput<$PrismaModel> - lte?: number | Prisma.IntFieldRefInput<$PrismaModel> - gt?: number | Prisma.IntFieldRefInput<$PrismaModel> - gte?: number | Prisma.IntFieldRefInput<$PrismaModel> - not?: Prisma.NestedIntFilter<$PrismaModel> | number -} - -export type IntWithAggregatesFilter<$PrismaModel = never> = { - equals?: number | Prisma.IntFieldRefInput<$PrismaModel> - in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> - notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> - lt?: number | Prisma.IntFieldRefInput<$PrismaModel> - lte?: number | Prisma.IntFieldRefInput<$PrismaModel> - gt?: number | Prisma.IntFieldRefInput<$PrismaModel> - gte?: number | Prisma.IntFieldRefInput<$PrismaModel> - not?: Prisma.NestedIntWithAggregatesFilter<$PrismaModel> | number - _count?: Prisma.NestedIntFilter<$PrismaModel> - _avg?: Prisma.NestedFloatFilter<$PrismaModel> - _sum?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedIntFilter<$PrismaModel> - _max?: Prisma.NestedIntFilter<$PrismaModel> -} - -export type BigIntFilter<$PrismaModel = never> = { - equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - in?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> - notIn?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> - lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - gte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - not?: Prisma.NestedBigIntFilter<$PrismaModel> | bigint | number -} - -export type BigIntWithAggregatesFilter<$PrismaModel = never> = { - equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - in?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> - notIn?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> - lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - gte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - not?: Prisma.NestedBigIntWithAggregatesFilter<$PrismaModel> | bigint | number - _count?: Prisma.NestedIntFilter<$PrismaModel> - _avg?: Prisma.NestedFloatFilter<$PrismaModel> - _sum?: Prisma.NestedBigIntFilter<$PrismaModel> - _min?: Prisma.NestedBigIntFilter<$PrismaModel> - _max?: Prisma.NestedBigIntFilter<$PrismaModel> -} - -export type EnumServerStatusFilter<$PrismaModel = never> = { - equals?: $Enums.ServerStatus | Prisma.EnumServerStatusFieldRefInput<$PrismaModel> - in?: $Enums.ServerStatus[] | Prisma.ListEnumServerStatusFieldRefInput<$PrismaModel> - notIn?: $Enums.ServerStatus[] | Prisma.ListEnumServerStatusFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumServerStatusFilter<$PrismaModel> | $Enums.ServerStatus -} - -export type EnumServerStatusWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.ServerStatus | Prisma.EnumServerStatusFieldRefInput<$PrismaModel> - in?: $Enums.ServerStatus[] | Prisma.ListEnumServerStatusFieldRefInput<$PrismaModel> - notIn?: $Enums.ServerStatus[] | Prisma.ListEnumServerStatusFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumServerStatusWithAggregatesFilter<$PrismaModel> | $Enums.ServerStatus - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedEnumServerStatusFilter<$PrismaModel> - _max?: Prisma.NestedEnumServerStatusFilter<$PrismaModel> -} - -export type JsonNullableFilter<$PrismaModel = never> = -| Prisma.PatchUndefined< - Prisma.Either>, Exclude>, 'path'>>, - Required> - > -| Prisma.OptionalFlat>, 'path'>> - -export type JsonNullableFilterBase<$PrismaModel = never> = { - equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter - path?: string[] - mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> - string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> - string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> - array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter -} - -export type JsonNullableWithAggregatesFilter<$PrismaModel = never> = -| Prisma.PatchUndefined< - Prisma.Either>, Exclude>, 'path'>>, - Required> - > -| Prisma.OptionalFlat>, 'path'>> - -export type JsonNullableWithAggregatesFilterBase<$PrismaModel = never> = { - equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter - path?: string[] - mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> - string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> - string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> - array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter - _count?: Prisma.NestedIntNullableFilter<$PrismaModel> - _min?: Prisma.NestedJsonNullableFilter<$PrismaModel> - _max?: Prisma.NestedJsonNullableFilter<$PrismaModel> -} - -export type EnumSyncStatusFilter<$PrismaModel = never> = { - equals?: $Enums.SyncStatus | Prisma.EnumSyncStatusFieldRefInput<$PrismaModel> - in?: $Enums.SyncStatus[] | Prisma.ListEnumSyncStatusFieldRefInput<$PrismaModel> - notIn?: $Enums.SyncStatus[] | Prisma.ListEnumSyncStatusFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumSyncStatusFilter<$PrismaModel> | $Enums.SyncStatus -} - -export type EnumSyncStatusWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.SyncStatus | Prisma.EnumSyncStatusFieldRefInput<$PrismaModel> - in?: $Enums.SyncStatus[] | Prisma.ListEnumSyncStatusFieldRefInput<$PrismaModel> - notIn?: $Enums.SyncStatus[] | Prisma.ListEnumSyncStatusFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumSyncStatusWithAggregatesFilter<$PrismaModel> | $Enums.SyncStatus - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedEnumSyncStatusFilter<$PrismaModel> - _max?: Prisma.NestedEnumSyncStatusFilter<$PrismaModel> -} - -export type EnumDiscordWebhookTypeFilter<$PrismaModel = never> = { - equals?: $Enums.DiscordWebhookType | Prisma.EnumDiscordWebhookTypeFieldRefInput<$PrismaModel> - in?: $Enums.DiscordWebhookType[] | Prisma.ListEnumDiscordWebhookTypeFieldRefInput<$PrismaModel> - notIn?: $Enums.DiscordWebhookType[] | Prisma.ListEnumDiscordWebhookTypeFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumDiscordWebhookTypeFilter<$PrismaModel> | $Enums.DiscordWebhookType -} - -export type EnumDiscordWebhookScopeFilter<$PrismaModel = never> = { - equals?: $Enums.DiscordWebhookScope | Prisma.EnumDiscordWebhookScopeFieldRefInput<$PrismaModel> - in?: $Enums.DiscordWebhookScope[] | Prisma.ListEnumDiscordWebhookScopeFieldRefInput<$PrismaModel> - notIn?: $Enums.DiscordWebhookScope[] | Prisma.ListEnumDiscordWebhookScopeFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumDiscordWebhookScopeFilter<$PrismaModel> | $Enums.DiscordWebhookScope -} - -export type EnumDiscordWebhookTypeWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.DiscordWebhookType | Prisma.EnumDiscordWebhookTypeFieldRefInput<$PrismaModel> - in?: $Enums.DiscordWebhookType[] | Prisma.ListEnumDiscordWebhookTypeFieldRefInput<$PrismaModel> - notIn?: $Enums.DiscordWebhookType[] | Prisma.ListEnumDiscordWebhookTypeFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumDiscordWebhookTypeWithAggregatesFilter<$PrismaModel> | $Enums.DiscordWebhookType - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedEnumDiscordWebhookTypeFilter<$PrismaModel> - _max?: Prisma.NestedEnumDiscordWebhookTypeFilter<$PrismaModel> -} - -export type EnumDiscordWebhookScopeWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.DiscordWebhookScope | Prisma.EnumDiscordWebhookScopeFieldRefInput<$PrismaModel> - in?: $Enums.DiscordWebhookScope[] | Prisma.ListEnumDiscordWebhookScopeFieldRefInput<$PrismaModel> - notIn?: $Enums.DiscordWebhookScope[] | Prisma.ListEnumDiscordWebhookScopeFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumDiscordWebhookScopeWithAggregatesFilter<$PrismaModel> | $Enums.DiscordWebhookScope - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedEnumDiscordWebhookScopeFilter<$PrismaModel> - _max?: Prisma.NestedEnumDiscordWebhookScopeFilter<$PrismaModel> -} - -export type NestedStringFilter<$PrismaModel = never> = { - equals?: string | Prisma.StringFieldRefInput<$PrismaModel> - in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> - notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> - lt?: string | Prisma.StringFieldRefInput<$PrismaModel> - lte?: string | Prisma.StringFieldRefInput<$PrismaModel> - gt?: string | Prisma.StringFieldRefInput<$PrismaModel> - gte?: string | Prisma.StringFieldRefInput<$PrismaModel> - contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - not?: Prisma.NestedStringFilter<$PrismaModel> | string -} - -export type NestedStringNullableFilter<$PrismaModel = never> = { - equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null - in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null - notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null - lt?: string | Prisma.StringFieldRefInput<$PrismaModel> - lte?: string | Prisma.StringFieldRefInput<$PrismaModel> - gt?: string | Prisma.StringFieldRefInput<$PrismaModel> - gte?: string | Prisma.StringFieldRefInput<$PrismaModel> - contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null -} - -export type NestedBoolFilter<$PrismaModel = never> = { - equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> - not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean -} - -export type NestedIntNullableFilter<$PrismaModel = never> = { - equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null - in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null - notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null - lt?: number | Prisma.IntFieldRefInput<$PrismaModel> - lte?: number | Prisma.IntFieldRefInput<$PrismaModel> - gt?: number | Prisma.IntFieldRefInput<$PrismaModel> - gte?: number | Prisma.IntFieldRefInput<$PrismaModel> - not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null -} - -export type NestedDateTimeNullableFilter<$PrismaModel = never> = { - equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null - in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null - notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null - lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - not?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null -} - -export type NestedDecimalFilter<$PrismaModel = never> = { - equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - not?: Prisma.NestedDecimalFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type NestedDateTimeFilter<$PrismaModel = never> = { - equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - not?: Prisma.NestedDateTimeFilter<$PrismaModel> | Date | string -} - -export type NestedStringWithAggregatesFilter<$PrismaModel = never> = { - equals?: string | Prisma.StringFieldRefInput<$PrismaModel> - in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> - notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> - lt?: string | Prisma.StringFieldRefInput<$PrismaModel> - lte?: string | Prisma.StringFieldRefInput<$PrismaModel> - gt?: string | Prisma.StringFieldRefInput<$PrismaModel> - gte?: string | Prisma.StringFieldRefInput<$PrismaModel> - contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedStringFilter<$PrismaModel> - _max?: Prisma.NestedStringFilter<$PrismaModel> -} - -export type NestedIntFilter<$PrismaModel = never> = { - equals?: number | Prisma.IntFieldRefInput<$PrismaModel> - in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> - notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> - lt?: number | Prisma.IntFieldRefInput<$PrismaModel> - lte?: number | Prisma.IntFieldRefInput<$PrismaModel> - gt?: number | Prisma.IntFieldRefInput<$PrismaModel> - gte?: number | Prisma.IntFieldRefInput<$PrismaModel> - not?: Prisma.NestedIntFilter<$PrismaModel> | number -} - -export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null - in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null - notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null - lt?: string | Prisma.StringFieldRefInput<$PrismaModel> - lte?: string | Prisma.StringFieldRefInput<$PrismaModel> - gt?: string | Prisma.StringFieldRefInput<$PrismaModel> - gte?: string | Prisma.StringFieldRefInput<$PrismaModel> - contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> - not?: Prisma.NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null - _count?: Prisma.NestedIntNullableFilter<$PrismaModel> - _min?: Prisma.NestedStringNullableFilter<$PrismaModel> - _max?: Prisma.NestedStringNullableFilter<$PrismaModel> -} - -export type NestedBoolWithAggregatesFilter<$PrismaModel = never> = { - equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel> - not?: Prisma.NestedBoolWithAggregatesFilter<$PrismaModel> | boolean - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedBoolFilter<$PrismaModel> - _max?: Prisma.NestedBoolFilter<$PrismaModel> -} - -export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null - in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null - notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null - lt?: number | Prisma.IntFieldRefInput<$PrismaModel> - lte?: number | Prisma.IntFieldRefInput<$PrismaModel> - gt?: number | Prisma.IntFieldRefInput<$PrismaModel> - gte?: number | Prisma.IntFieldRefInput<$PrismaModel> - not?: Prisma.NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null - _count?: Prisma.NestedIntNullableFilter<$PrismaModel> - _avg?: Prisma.NestedFloatNullableFilter<$PrismaModel> - _sum?: Prisma.NestedIntNullableFilter<$PrismaModel> - _min?: Prisma.NestedIntNullableFilter<$PrismaModel> - _max?: Prisma.NestedIntNullableFilter<$PrismaModel> -} - -export type NestedFloatNullableFilter<$PrismaModel = never> = { - equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null - in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null - notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null - lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> - lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> - gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> - gte?: number | Prisma.FloatFieldRefInput<$PrismaModel> - not?: Prisma.NestedFloatNullableFilter<$PrismaModel> | number | null -} - -export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { - equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null - in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null - notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null - lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - not?: Prisma.NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null - _count?: Prisma.NestedIntNullableFilter<$PrismaModel> - _min?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> - _max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel> -} - -export type NestedDecimalWithAggregatesFilter<$PrismaModel = never> = { - equals?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - in?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - notIn?: runtime.Decimal[] | runtime.DecimalJsLike[] | number[] | string[] | Prisma.ListDecimalFieldRefInput<$PrismaModel> - lt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - lte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gt?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - gte?: runtime.Decimal | runtime.DecimalJsLike | number | string | Prisma.DecimalFieldRefInput<$PrismaModel> - not?: Prisma.NestedDecimalWithAggregatesFilter<$PrismaModel> | runtime.Decimal | runtime.DecimalJsLike | number | string - _count?: Prisma.NestedIntFilter<$PrismaModel> - _avg?: Prisma.NestedDecimalFilter<$PrismaModel> - _sum?: Prisma.NestedDecimalFilter<$PrismaModel> - _min?: Prisma.NestedDecimalFilter<$PrismaModel> - _max?: Prisma.NestedDecimalFilter<$PrismaModel> -} - -export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = { - equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> - lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> - not?: Prisma.NestedDateTimeWithAggregatesFilter<$PrismaModel> | Date | string - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedDateTimeFilter<$PrismaModel> - _max?: Prisma.NestedDateTimeFilter<$PrismaModel> -} - -export type NestedIntWithAggregatesFilter<$PrismaModel = never> = { - equals?: number | Prisma.IntFieldRefInput<$PrismaModel> - in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> - notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> - lt?: number | Prisma.IntFieldRefInput<$PrismaModel> - lte?: number | Prisma.IntFieldRefInput<$PrismaModel> - gt?: number | Prisma.IntFieldRefInput<$PrismaModel> - gte?: number | Prisma.IntFieldRefInput<$PrismaModel> - not?: Prisma.NestedIntWithAggregatesFilter<$PrismaModel> | number - _count?: Prisma.NestedIntFilter<$PrismaModel> - _avg?: Prisma.NestedFloatFilter<$PrismaModel> - _sum?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedIntFilter<$PrismaModel> - _max?: Prisma.NestedIntFilter<$PrismaModel> -} - -export type NestedFloatFilter<$PrismaModel = never> = { - equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> - in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> - notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> - lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> - lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> - gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> - gte?: number | Prisma.FloatFieldRefInput<$PrismaModel> - not?: Prisma.NestedFloatFilter<$PrismaModel> | number -} - -export type NestedBigIntFilter<$PrismaModel = never> = { - equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - in?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> - notIn?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> - lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - gte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - not?: Prisma.NestedBigIntFilter<$PrismaModel> | bigint | number -} - -export type NestedBigIntWithAggregatesFilter<$PrismaModel = never> = { - equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - in?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> - notIn?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel> - lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - gte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> - not?: Prisma.NestedBigIntWithAggregatesFilter<$PrismaModel> | bigint | number - _count?: Prisma.NestedIntFilter<$PrismaModel> - _avg?: Prisma.NestedFloatFilter<$PrismaModel> - _sum?: Prisma.NestedBigIntFilter<$PrismaModel> - _min?: Prisma.NestedBigIntFilter<$PrismaModel> - _max?: Prisma.NestedBigIntFilter<$PrismaModel> -} - -export type NestedEnumServerStatusFilter<$PrismaModel = never> = { - equals?: $Enums.ServerStatus | Prisma.EnumServerStatusFieldRefInput<$PrismaModel> - in?: $Enums.ServerStatus[] | Prisma.ListEnumServerStatusFieldRefInput<$PrismaModel> - notIn?: $Enums.ServerStatus[] | Prisma.ListEnumServerStatusFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumServerStatusFilter<$PrismaModel> | $Enums.ServerStatus -} - -export type NestedEnumServerStatusWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.ServerStatus | Prisma.EnumServerStatusFieldRefInput<$PrismaModel> - in?: $Enums.ServerStatus[] | Prisma.ListEnumServerStatusFieldRefInput<$PrismaModel> - notIn?: $Enums.ServerStatus[] | Prisma.ListEnumServerStatusFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumServerStatusWithAggregatesFilter<$PrismaModel> | $Enums.ServerStatus - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedEnumServerStatusFilter<$PrismaModel> - _max?: Prisma.NestedEnumServerStatusFilter<$PrismaModel> -} - -export type NestedJsonNullableFilter<$PrismaModel = never> = -| Prisma.PatchUndefined< - Prisma.Either>, Exclude>, 'path'>>, - Required> - > -| Prisma.OptionalFlat>, 'path'>> - -export type NestedJsonNullableFilterBase<$PrismaModel = never> = { - equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter - path?: string[] - mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> - string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> - string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> - string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> - array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null - lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> - not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter -} - -export type NestedEnumSyncStatusFilter<$PrismaModel = never> = { - equals?: $Enums.SyncStatus | Prisma.EnumSyncStatusFieldRefInput<$PrismaModel> - in?: $Enums.SyncStatus[] | Prisma.ListEnumSyncStatusFieldRefInput<$PrismaModel> - notIn?: $Enums.SyncStatus[] | Prisma.ListEnumSyncStatusFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumSyncStatusFilter<$PrismaModel> | $Enums.SyncStatus -} - -export type NestedEnumSyncStatusWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.SyncStatus | Prisma.EnumSyncStatusFieldRefInput<$PrismaModel> - in?: $Enums.SyncStatus[] | Prisma.ListEnumSyncStatusFieldRefInput<$PrismaModel> - notIn?: $Enums.SyncStatus[] | Prisma.ListEnumSyncStatusFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumSyncStatusWithAggregatesFilter<$PrismaModel> | $Enums.SyncStatus - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedEnumSyncStatusFilter<$PrismaModel> - _max?: Prisma.NestedEnumSyncStatusFilter<$PrismaModel> -} - -export type NestedEnumDiscordWebhookTypeFilter<$PrismaModel = never> = { - equals?: $Enums.DiscordWebhookType | Prisma.EnumDiscordWebhookTypeFieldRefInput<$PrismaModel> - in?: $Enums.DiscordWebhookType[] | Prisma.ListEnumDiscordWebhookTypeFieldRefInput<$PrismaModel> - notIn?: $Enums.DiscordWebhookType[] | Prisma.ListEnumDiscordWebhookTypeFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumDiscordWebhookTypeFilter<$PrismaModel> | $Enums.DiscordWebhookType -} - -export type NestedEnumDiscordWebhookScopeFilter<$PrismaModel = never> = { - equals?: $Enums.DiscordWebhookScope | Prisma.EnumDiscordWebhookScopeFieldRefInput<$PrismaModel> - in?: $Enums.DiscordWebhookScope[] | Prisma.ListEnumDiscordWebhookScopeFieldRefInput<$PrismaModel> - notIn?: $Enums.DiscordWebhookScope[] | Prisma.ListEnumDiscordWebhookScopeFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumDiscordWebhookScopeFilter<$PrismaModel> | $Enums.DiscordWebhookScope -} - -export type NestedEnumDiscordWebhookTypeWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.DiscordWebhookType | Prisma.EnumDiscordWebhookTypeFieldRefInput<$PrismaModel> - in?: $Enums.DiscordWebhookType[] | Prisma.ListEnumDiscordWebhookTypeFieldRefInput<$PrismaModel> - notIn?: $Enums.DiscordWebhookType[] | Prisma.ListEnumDiscordWebhookTypeFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumDiscordWebhookTypeWithAggregatesFilter<$PrismaModel> | $Enums.DiscordWebhookType - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedEnumDiscordWebhookTypeFilter<$PrismaModel> - _max?: Prisma.NestedEnumDiscordWebhookTypeFilter<$PrismaModel> -} - -export type NestedEnumDiscordWebhookScopeWithAggregatesFilter<$PrismaModel = never> = { - equals?: $Enums.DiscordWebhookScope | Prisma.EnumDiscordWebhookScopeFieldRefInput<$PrismaModel> - in?: $Enums.DiscordWebhookScope[] | Prisma.ListEnumDiscordWebhookScopeFieldRefInput<$PrismaModel> - notIn?: $Enums.DiscordWebhookScope[] | Prisma.ListEnumDiscordWebhookScopeFieldRefInput<$PrismaModel> - not?: Prisma.NestedEnumDiscordWebhookScopeWithAggregatesFilter<$PrismaModel> | $Enums.DiscordWebhookScope - _count?: Prisma.NestedIntFilter<$PrismaModel> - _min?: Prisma.NestedEnumDiscordWebhookScopeFilter<$PrismaModel> - _max?: Prisma.NestedEnumDiscordWebhookScopeFilter<$PrismaModel> -} - - diff --git a/prisma/generated/prisma/enums.ts b/prisma/generated/prisma/enums.ts deleted file mode 100644 index fed9cf0..0000000 --- a/prisma/generated/prisma/enums.ts +++ /dev/null @@ -1,68 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* -* This file exports all enum related types from the schema. -* -* 🟢 You can import this file directly. -*/ - -export const ServerStatus = { - INSTALLING: 'INSTALLING', - INSTALL_FAILED: 'INSTALL_FAILED', - SUSPENDED: 'SUSPENDED', - RESTORING_BACKUP: 'RESTORING_BACKUP', - RUNNING: 'RUNNING', - OFFLINE: 'OFFLINE', - STARTING: 'STARTING', - STOPPING: 'STOPPING' -} as const - -export type ServerStatus = (typeof ServerStatus)[keyof typeof ServerStatus] - - -export const DiscordWebhookType = { - GAME_SERVER: 'GAME_SERVER', - VPS: 'VPS', - SYSTEM: 'SYSTEM', - BILLING: 'BILLING', - SECURITY: 'SECURITY', - SUPPORT: 'SUPPORT', - CUSTOM: 'CUSTOM' -} as const - -export type DiscordWebhookType = (typeof DiscordWebhookType)[keyof typeof DiscordWebhookType] - - -export const DiscordWebhookScope = { - ADMIN: 'ADMIN', - USER: 'USER', - PUBLIC: 'PUBLIC' -} as const - -export type DiscordWebhookScope = (typeof DiscordWebhookScope)[keyof typeof DiscordWebhookScope] - - -export const SyncStatus = { - PENDING: 'PENDING', - RUNNING: 'RUNNING', - COMPLETED: 'COMPLETED', - FAILED: 'FAILED' -} as const - -export type SyncStatus = (typeof SyncStatus)[keyof typeof SyncStatus] - - -export const Role = { - MEMBER: 'MEMBER', - PARTNER: 'PARTNER', - SPONSOR: 'SPONSOR', - TECH_TEAM: 'TECH_TEAM', - SUPPORT_TEAM: 'SUPPORT_TEAM', - ADMINISTRATOR: 'ADMINISTRATOR', - SUPER_ADMIN: 'SUPER_ADMIN' -} as const - -export type Role = (typeof Role)[keyof typeof Role] diff --git a/prisma/generated/prisma/internal/class.ts b/prisma/generated/prisma/internal/class.ts deleted file mode 100644 index 2ebc574..0000000 --- a/prisma/generated/prisma/internal/class.ts +++ /dev/null @@ -1,420 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * WARNING: This is an internal file that is subject to change! - * - * 🛑 Under no circumstances should you import this file directly! 🛑 - * - * Please import the `PrismaClient` class from the `client.ts` file instead. - */ - -import * as runtime from "@prisma/client/runtime/client" -import type * as Prisma from "./prismaNamespace" - - -const config: runtime.GetPrismaClientConfig = { - "previewFeatures": [], - "clientVersion": "7.2.0", - "engineVersion": "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", - "activeProvider": "postgresql", - "inlineSchema": "// This is your Prisma schema file for NodeByte authentication\n// Docs: https://pris.ly/d/prisma-schema\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"./generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\n// ============================================================================\n// USER & AUTH MODELS\n// ============================================================================\n\n// User model for authentication\nmodel User {\n id String @id @default(cuid())\n email String @unique\n password String?\n username String?\n firstName String?\n lastName String?\n\n roles Role[] @default([MEMBER])\n isPterodactylAdmin Boolean @default(false) // Can manage Pterodactyl panel\n isVirtfusionAdmin Boolean @default(false) // Can manage Virtfusion panel\n isSystemAdmin Boolean @default(false) // Full system access (billing, users, settings)\n\n // Panel IDs - support multiple panels\n pterodactylId Int? // Link to Pterodactyl panel user ID\n virtfusionId Int? // Link to Virtfusion panel user ID\n\n // Migration status\n isMigrated Boolean @default(false) // True once user registers/sets password on our site\n\n // Email verification\n emailVerified DateTime?\n\n // Account status\n isActive Boolean @default(true)\n\n // Profile & billing\n avatarUrl String?\n companyName String?\n phoneNumber String?\n billingEmail String? // May differ from primary email\n\n // Billing & account\n accountBalance Decimal @default(0) @db.Decimal(10, 2) // Account credit balance\n accountStatus String @default(\"active\") // active, suspended, cancelled\n\n // Timestamps\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n lastLoginAt DateTime?\n lastSyncedAt DateTime? // Last time data was synced from panels\n\n // Relations\n sessions Session[]\n servers Server[] // Servers owned by this user\n discordWebhooks DiscordWebhook[] // Webhooks created by this user\n invoices Invoice[]\n tickets SupportTicket[] // Support tickets created by this user\n ticketReplies SupportTicketReply[] // Replies to tickets\n products Product[] // Products this user has created/selling\n\n @@map(\"users\")\n}\n\n// Session model for auth tokens\nmodel Session {\n id String @id @default(cuid())\n sessionToken String @unique\n userId String\n expires DateTime\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n\n @@map(\"sessions\")\n}\n\n// Verification tokens for email verification, password reset, etc.\nmodel VerificationToken {\n identifier String\n token String @unique\n expires DateTime\n type String @default(\"email\") // email, password_reset, etc.\n\n @@unique([identifier, token])\n @@map(\"verification_tokens\")\n}\n\n// ============================================================================\n// PTERODACTYL SYNC MODELS - These mirror Pterodactyl data for local access\n// ============================================================================\n\n// Location (data center region)\nmodel Location {\n id Int @id // Pterodactyl location ID\n shortCode String @unique\n description String?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n nodes Node[]\n\n @@map(\"locations\")\n}\n\n// Node (physical/virtual server hosting game servers)\nmodel Node {\n id Int @id // Pterodactyl node ID\n uuid String @unique\n name String\n description String?\n fqdn String // Fully qualified domain name\n scheme String @default(\"https\") // http or https\n behindProxy Boolean @default(false)\n\n // Panel type\n panelType String @default(\"pterodactyl\") // pterodactyl or virtfusion\n\n // Resources\n memory BigInt // Total memory in MB\n memoryOverallocate Int @default(0) // Percentage\n disk BigInt // Total disk in MB\n diskOverallocate Int @default(0) // Percentage\n\n // Status\n isPublic Boolean @default(true)\n isMaintenanceMode Boolean @default(false)\n\n // Connection info (for internal use)\n daemonListenPort Int @default(8080)\n daemonSftpPort Int @default(2022)\n daemonBase String @default(\"/var/lib/pterodactyl/volumes\")\n\n // Location relation\n locationId Int\n location Location @relation(fields: [locationId], references: [id])\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n allocations Allocation[]\n servers Server[]\n\n @@index([panelType])\n @@map(\"nodes\")\n}\n\n// Allocation (IP:Port combination on a node)\nmodel Allocation {\n id Int @id // Pterodactyl allocation ID\n ip String\n port Int\n alias String? // Optional friendly name/hostname\n notes String?\n isAssigned Boolean @default(false)\n\n nodeId Int\n node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade)\n\n // Server relation (null if unassigned)\n serverId String?\n server Server? @relation(fields: [serverId], references: [id], onDelete: SetNull)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([ip, port])\n @@map(\"allocations\")\n}\n\n// Nest (category of eggs, e.g., \"Minecraft\", \"Rust\")\nmodel Nest {\n id Int @id // Pterodactyl nest ID\n uuid String @unique\n name String\n description String?\n author String?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n eggs Egg[]\n\n @@map(\"nests\")\n}\n\n// Egg (server type template, e.g., \"Paper\", \"Vanilla\", \"Forge\")\nmodel Egg {\n id Int @id // Pterodactyl egg ID\n uuid String @unique\n name String\n description String?\n author String?\n\n // Panel type support\n panelType String @default(\"pterodactyl\") // pterodactyl, virtfusion, etc.\n\n nestId Int\n nest Nest @relation(fields: [nestId], references: [id], onDelete: Cascade)\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n servers Server[]\n variables EggVariable[]\n properties EggProperty[] // Flexible key-value for panel-specific config\n\n @@index([panelType])\n @@map(\"eggs\")\n}\n\n// Egg Property - Key-value store for egg-specific configurations\nmodel EggProperty {\n id String @id @default(cuid())\n eggId Int\n egg Egg @relation(fields: [eggId], references: [id], onDelete: Cascade)\n\n key String // e.g., \"docker_image\", \"startup_command\", \"docker_images_json\"\n value String // Stored as JSON if needed\n panelType String? // null = applies to all panels, \"pterodactyl\" or \"virtfusion\" for specific panels\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([eggId, key, panelType])\n @@index([eggId])\n @@map(\"egg_properties\")\n}\n\n// Egg Variable (configuration options for an egg)\nmodel EggVariable {\n id Int @id // Pterodactyl variable ID\n eggId Int\n egg Egg @relation(fields: [eggId], references: [id], onDelete: Cascade)\n\n name String\n description String?\n envVariable String // Environment variable name\n defaultValue String?\n userViewable Boolean @default(true)\n userEditable Boolean @default(true)\n rules String? // Validation rules\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n serverVariables ServerVariable[]\n\n @@map(\"egg_variables\")\n}\n\n// ============================================================================\n// SERVER MODEL - Core game server data\n// ============================================================================\n\nmodel Server {\n id String @id @default(cuid()) // Our internal ID\n pterodactylId Int? @unique // Pterodactyl server ID (null if virtfusion)\n virtfusionId Int? @unique // Virtfusion server ID (null if pterodactyl)\n uuid String @unique // Pterodactyl UUID\n uuidShort String? // Short UUID for panel URLs\n externalId String? @unique // External ID (e.g., billing system ID)\n\n // Panel identification\n panelType String @default(\"pterodactyl\") // pterodactyl or virtfusion\n\n name String\n description String?\n\n // Status\n status ServerStatus @default(INSTALLING)\n isSuspended Boolean @default(false)\n\n // Billing\n productId String? // Link to billing product\n product Product? @relation(\"ServerProduct\", fields: [productId], references: [id], onDelete: SetNull)\n\n // Relations\n ownerId String\n owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade)\n\n nodeId Int\n node Node @relation(fields: [nodeId], references: [id], onDelete: Restrict)\n\n eggId Int? // Optional for virtfusion\n egg Egg? @relation(fields: [eggId], references: [id], onDelete: SetNull)\n\n // Timestamps\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n installedAt DateTime?\n lastSyncedAt DateTime?\n\n // Related data\n allocations Allocation[]\n variables ServerVariable[]\n databases ServerDatabase[]\n backups ServerBackup[]\n properties ServerProperty[] // Flexible key-value for specs and config\n tickets SupportTicket[]\n\n @@index([panelType])\n @@index([ownerId])\n @@index([productId])\n @@map(\"servers\")\n}\n\n// Server Property - Key-value store for server specs and configuration\nmodel ServerProperty {\n id String @id @default(cuid())\n serverId String\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n\n key String // e.g., \"memory\", \"disk\", \"cpu\", \"swap\", \"io\", \"oom_disabled\", \"backup_limit\"\n value String // Stored as string - parse as int/bool as needed\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([serverId, key])\n @@index([serverId])\n @@map(\"server_properties\")\n}\n\nenum ServerStatus {\n INSTALLING\n INSTALL_FAILED\n SUSPENDED\n RESTORING_BACKUP\n RUNNING\n OFFLINE\n STARTING\n STOPPING\n}\n\n// Server Variable (runtime configuration)\nmodel ServerVariable {\n id String @id @default(cuid())\n serverId String\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n\n variableId Int\n variable EggVariable @relation(fields: [variableId], references: [id])\n\n value String\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([serverId, variableId])\n @@map(\"server_variables\")\n}\n\n// Server Database\nmodel ServerDatabase {\n id Int @id // Pterodactyl database ID\n serverId String\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n\n name String\n username String\n host String\n port Int @default(3306)\n maxConnections Int @default(0) // 0 = unlimited\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@map(\"server_databases\")\n}\n\n// Server Backup\nmodel ServerBackup {\n id String @id // Pterodactyl backup UUID\n serverId String\n server Server @relation(fields: [serverId], references: [id], onDelete: Cascade)\n\n name String\n ignoredFiles Json? // Files/folders ignored in backup\n sha256Hash String?\n bytes BigInt @default(0)\n\n isSuccessful Boolean @default(false)\n isLocked Boolean @default(false)\n\n completedAt DateTime?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@map(\"server_backups\")\n}\n\n// ============================================================================\n// SYNC LOG - Track synchronization history\n// ============================================================================\n\nmodel SyncLog {\n id String @id @default(cuid())\n type String // users, servers, nodes, etc.\n status SyncStatus @default(PENDING)\n\n itemsTotal Int @default(0)\n itemsSynced Int @default(0)\n itemsFailed Int @default(0)\n\n error String?\n metadata Json?\n\n startedAt DateTime @default(now())\n completedAt DateTime?\n\n @@map(\"sync_logs\")\n}\n\n// ============================================================================\n// BILLING & PRODUCTS - Lightweight WHMCS alternative\n// ============================================================================\n\nmodel Product {\n id String @id @default(cuid())\n name String\n description String?\n category String // game-server, vps, addon, etc.\n\n // Pricing\n basePrice Decimal @db.Decimal(10, 2) // Monthly price\n setupFee Decimal @default(0) @db.Decimal(10, 2)\n currency String @default(\"USD\")\n\n // Billing\n billingCycle String @default(\"monthly\") // monthly, quarterly, semiannual, annual, oneoff\n\n // Availability\n isActive Boolean @default(true)\n displayOrder Int @default(0)\n\n // Creator\n creatorId String\n creator User @relation(fields: [creatorId], references: [id], onDelete: Cascade)\n\n // Customization\n metadata Json? // Additional product metadata\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n // Relations\n servers Server[] @relation(\"ServerProduct\")\n invoices InvoiceItem[]\n\n @@index([category])\n @@index([isActive])\n @@map(\"products\")\n}\n\nmodel Invoice {\n id String @id @default(cuid())\n invoiceNumber String @unique\n\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n // Amounts\n subtotal Decimal @db.Decimal(10, 2)\n tax Decimal @default(0) @db.Decimal(10, 2)\n total Decimal @db.Decimal(10, 2)\n paid Decimal @default(0) @db.Decimal(10, 2)\n\n // Status\n status String @default(\"unpaid\") // unpaid, partially_paid, paid, overdue, cancelled\n\n // Dates\n dueDate DateTime?\n paidDate DateTime?\n\n // Notes\n notes String?\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n // Relations\n items InvoiceItem[]\n payments Payment[]\n\n @@index([userId])\n @@index([status])\n @@index([dueDate])\n @@map(\"invoices\")\n}\n\nmodel InvoiceItem {\n id String @id @default(cuid())\n invoiceId String\n invoice Invoice @relation(fields: [invoiceId], references: [id], onDelete: Cascade)\n\n productId String?\n product Product? @relation(fields: [productId], references: [id], onDelete: SetNull)\n\n description String\n quantity Int @default(1)\n unitPrice Decimal @db.Decimal(10, 2)\n total Decimal @db.Decimal(10, 2)\n\n @@map(\"invoice_items\")\n}\n\nmodel Payment {\n id String @id @default(cuid())\n invoiceId String\n invoice Invoice @relation(fields: [invoiceId], references: [id], onDelete: Cascade)\n\n amount Decimal @db.Decimal(10, 2)\n method String // stripe, paypal, manual, credit, etc.\n reference String? // Transaction/Reference ID\n\n status String @default(\"completed\") // pending, completed, failed, refunded\n notes String?\n\n createdAt DateTime @default(now())\n\n @@index([invoiceId])\n @@index([status])\n @@map(\"payments\")\n}\n\n// ============================================================================\n// SUPPORT TICKETS - Integrated ticket system\n// ============================================================================\n\nmodel SupportTicket {\n id String @id @default(cuid())\n ticketNumber String @unique\n\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n serverId String?\n server Server? @relation(fields: [serverId], references: [id], onDelete: SetNull)\n\n // Ticket info\n subject String\n category String // billing, technical, abuse, general, feature_request, etc.\n priority String @default(\"normal\") // low, normal, high, urgent\n\n // Status\n status String @default(\"open\") // open, pending, in_progress, resolved, closed\n\n // Assignment\n assignedToId String? // Admin user ID if assigned\n\n // Timestamps\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n resolvedAt DateTime?\n\n // Relations\n replies SupportTicketReply[]\n\n @@index([userId])\n @@index([status])\n @@index([priority])\n @@index([category])\n @@index([assignedToId])\n @@map(\"support_tickets\")\n}\n\nmodel SupportTicketReply {\n id String @id @default(cuid())\n ticketId String\n ticket SupportTicket @relation(fields: [ticketId], references: [id], onDelete: Cascade)\n\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n message String\n isInternal Boolean @default(false) // Internal note not visible to user\n\n attachments Json? // File attachment metadata\n\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([ticketId])\n @@index([userId])\n @@map(\"support_ticket_replies\")\n}\n\n// ============================================================================\n// DISCORD WEBHOOKS - Notification webhook management\n// ============================================================================\n\nmodel DiscordWebhook {\n id String @id @default(cuid())\n\n // Webhook identification\n name String\n webhookUrl String\n\n // Webhook categorization\n type DiscordWebhookType\n scope DiscordWebhookScope @default(ADMIN)\n description String?\n\n // Owner information\n userId String?\n user User? @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n // Settings\n enabled Boolean @default(true)\n testSuccessAt DateTime?\n\n // Metadata\n avatarUrl String?\n metadata Json?\n\n // Timestamps\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@unique([webhookUrl, userId])\n @@index([userId])\n @@index([type])\n @@index([scope])\n @@map(\"discord_webhooks\")\n}\n\n// ============================================================================\n// CONFIG - Simple key value store for all system settings\n// ============================================================================\n\nmodel Config {\n id String @id @default(cuid())\n key String @unique\n value String // Stored as JSON string\n updatedAt DateTime @updatedAt\n\n @@index([key])\n @@map(\"config\")\n}\n\n// ============================================================================\n// ENUMS\n// ============================================================================\n\nenum DiscordWebhookType {\n GAME_SERVER // Game server notifications (start, stop, crash, etc.)\n VPS // VPS/Node notifications (resource, status, etc.)\n SYSTEM // System notifications (maintenance, updates, etc.)\n BILLING // Billing/Account notifications\n SECURITY // Security notifications (login attempts, etc.)\n SUPPORT // Support/Ticket notifications\n CUSTOM // User-defined/custom notifications\n}\n\nenum DiscordWebhookScope {\n ADMIN // Admin-only webhook (global system notifications)\n USER // User-specific webhook (their own server/account notifications)\n PUBLIC // Public webhook (shared/testing)\n}\n\nenum SyncStatus {\n PENDING\n RUNNING\n COMPLETED\n FAILED\n}\n\nenum Role {\n MEMBER\n PARTNER\n SPONSOR\n TECH_TEAM\n SUPPORT_TEAM\n ADMINISTRATOR\n SUPER_ADMIN\n}\n", - "runtimeDataModel": { - "models": {}, - "enums": {}, - "types": {} - } -} - -config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"firstName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"lastName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"roles\",\"kind\":\"enum\",\"type\":\"Role\"},{\"name\":\"isPterodactylAdmin\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isVirtfusionAdmin\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isSystemAdmin\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"pterodactylId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"virtfusionId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"isMigrated\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"avatarUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"companyName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phoneNumber\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"billingEmail\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accountBalance\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"accountStatus\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lastLoginAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lastSyncedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"servers\",\"kind\":\"object\",\"type\":\"Server\",\"relationName\":\"ServerToUser\"},{\"name\":\"discordWebhooks\",\"kind\":\"object\",\"type\":\"DiscordWebhook\",\"relationName\":\"DiscordWebhookToUser\"},{\"name\":\"invoices\",\"kind\":\"object\",\"type\":\"Invoice\",\"relationName\":\"InvoiceToUser\"},{\"name\":\"tickets\",\"kind\":\"object\",\"type\":\"SupportTicket\",\"relationName\":\"SupportTicketToUser\"},{\"name\":\"ticketReplies\",\"kind\":\"object\",\"type\":\"SupportTicketReply\",\"relationName\":\"SupportTicketReplyToUser\"},{\"name\":\"products\",\"kind\":\"object\",\"type\":\"Product\",\"relationName\":\"ProductToUser\"}],\"dbName\":\"users\"},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sessionToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"sessions\"},\"VerificationToken\":{\"fields\":[{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"verification_tokens\"},\"Location\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"shortCode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"nodes\",\"kind\":\"object\",\"type\":\"Node\",\"relationName\":\"LocationToNode\"}],\"dbName\":\"locations\"},\"Node\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"uuid\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fqdn\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scheme\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"behindProxy\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"panelType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"memory\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"memoryOverallocate\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"disk\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"diskOverallocate\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"isPublic\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isMaintenanceMode\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"daemonListenPort\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"daemonSftpPort\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"daemonBase\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"locationId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"location\",\"kind\":\"object\",\"type\":\"Location\",\"relationName\":\"LocationToNode\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"allocations\",\"kind\":\"object\",\"type\":\"Allocation\",\"relationName\":\"AllocationToNode\"},{\"name\":\"servers\",\"kind\":\"object\",\"type\":\"Server\",\"relationName\":\"NodeToServer\"}],\"dbName\":\"nodes\"},\"Allocation\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"ip\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"port\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"alias\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"notes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isAssigned\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"node\",\"kind\":\"object\",\"type\":\"Node\",\"relationName\":\"AllocationToNode\"},{\"name\":\"serverId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"server\",\"kind\":\"object\",\"type\":\"Server\",\"relationName\":\"AllocationToServer\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"allocations\"},\"Nest\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"uuid\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"author\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"eggs\",\"kind\":\"object\",\"type\":\"Egg\",\"relationName\":\"EggToNest\"}],\"dbName\":\"nests\"},\"Egg\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"uuid\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"author\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"panelType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"nestId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"nest\",\"kind\":\"object\",\"type\":\"Nest\",\"relationName\":\"EggToNest\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"servers\",\"kind\":\"object\",\"type\":\"Server\",\"relationName\":\"EggToServer\"},{\"name\":\"variables\",\"kind\":\"object\",\"type\":\"EggVariable\",\"relationName\":\"EggToEggVariable\"},{\"name\":\"properties\",\"kind\":\"object\",\"type\":\"EggProperty\",\"relationName\":\"EggToEggProperty\"}],\"dbName\":\"eggs\"},\"EggProperty\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"eggId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"egg\",\"kind\":\"object\",\"type\":\"Egg\",\"relationName\":\"EggToEggProperty\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"panelType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"egg_properties\"},\"EggVariable\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"eggId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"egg\",\"kind\":\"object\",\"type\":\"Egg\",\"relationName\":\"EggToEggVariable\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"envVariable\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"defaultValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userViewable\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"userEditable\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"rules\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"serverVariables\",\"kind\":\"object\",\"type\":\"ServerVariable\",\"relationName\":\"EggVariableToServerVariable\"}],\"dbName\":\"egg_variables\"},\"Server\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"pterodactylId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"virtfusionId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"uuid\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"uuidShort\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"externalId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"panelType\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"ServerStatus\"},{\"name\":\"isSuspended\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"productId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"product\",\"kind\":\"object\",\"type\":\"Product\",\"relationName\":\"ServerProduct\"},{\"name\":\"ownerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"owner\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ServerToUser\"},{\"name\":\"nodeId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"node\",\"kind\":\"object\",\"type\":\"Node\",\"relationName\":\"NodeToServer\"},{\"name\":\"eggId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"egg\",\"kind\":\"object\",\"type\":\"Egg\",\"relationName\":\"EggToServer\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"installedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"lastSyncedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"allocations\",\"kind\":\"object\",\"type\":\"Allocation\",\"relationName\":\"AllocationToServer\"},{\"name\":\"variables\",\"kind\":\"object\",\"type\":\"ServerVariable\",\"relationName\":\"ServerToServerVariable\"},{\"name\":\"databases\",\"kind\":\"object\",\"type\":\"ServerDatabase\",\"relationName\":\"ServerToServerDatabase\"},{\"name\":\"backups\",\"kind\":\"object\",\"type\":\"ServerBackup\",\"relationName\":\"ServerToServerBackup\"},{\"name\":\"properties\",\"kind\":\"object\",\"type\":\"ServerProperty\",\"relationName\":\"ServerToServerProperty\"},{\"name\":\"tickets\",\"kind\":\"object\",\"type\":\"SupportTicket\",\"relationName\":\"ServerToSupportTicket\"}],\"dbName\":\"servers\"},\"ServerProperty\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"serverId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"server\",\"kind\":\"object\",\"type\":\"Server\",\"relationName\":\"ServerToServerProperty\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"server_properties\"},\"ServerVariable\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"serverId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"server\",\"kind\":\"object\",\"type\":\"Server\",\"relationName\":\"ServerToServerVariable\"},{\"name\":\"variableId\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"variable\",\"kind\":\"object\",\"type\":\"EggVariable\",\"relationName\":\"EggVariableToServerVariable\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"server_variables\"},\"ServerDatabase\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"serverId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"server\",\"kind\":\"object\",\"type\":\"Server\",\"relationName\":\"ServerToServerDatabase\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"host\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"port\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"maxConnections\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"server_databases\"},\"ServerBackup\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"serverId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"server\",\"kind\":\"object\",\"type\":\"Server\",\"relationName\":\"ServerToServerBackup\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ignoredFiles\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"sha256Hash\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bytes\",\"kind\":\"scalar\",\"type\":\"BigInt\"},{\"name\":\"isSuccessful\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"isLocked\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"server_backups\"},\"SyncLog\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"SyncStatus\"},{\"name\":\"itemsTotal\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"itemsSynced\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"itemsFailed\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"error\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"metadata\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"sync_logs\"},\"Product\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"basePrice\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"setupFee\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"currency\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"billingCycle\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"displayOrder\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"creatorId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"creator\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ProductToUser\"},{\"name\":\"metadata\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"servers\",\"kind\":\"object\",\"type\":\"Server\",\"relationName\":\"ServerProduct\"},{\"name\":\"invoices\",\"kind\":\"object\",\"type\":\"InvoiceItem\",\"relationName\":\"InvoiceItemToProduct\"}],\"dbName\":\"products\"},\"Invoice\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"invoiceNumber\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"InvoiceToUser\"},{\"name\":\"subtotal\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"tax\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"paid\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"dueDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"paidDate\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"notes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"items\",\"kind\":\"object\",\"type\":\"InvoiceItem\",\"relationName\":\"InvoiceToInvoiceItem\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"Payment\",\"relationName\":\"InvoiceToPayment\"}],\"dbName\":\"invoices\"},\"InvoiceItem\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"invoiceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"invoice\",\"kind\":\"object\",\"type\":\"Invoice\",\"relationName\":\"InvoiceToInvoiceItem\"},{\"name\":\"productId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"product\",\"kind\":\"object\",\"type\":\"Product\",\"relationName\":\"InvoiceItemToProduct\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quantity\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"unitPrice\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total\",\"kind\":\"scalar\",\"type\":\"Decimal\"}],\"dbName\":\"invoice_items\"},\"Payment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"invoiceId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"invoice\",\"kind\":\"object\",\"type\":\"Invoice\",\"relationName\":\"InvoiceToPayment\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"method\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"reference\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"notes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"payments\"},\"SupportTicket\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ticketNumber\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SupportTicketToUser\"},{\"name\":\"serverId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"server\",\"kind\":\"object\",\"type\":\"Server\",\"relationName\":\"ServerToSupportTicket\"},{\"name\":\"subject\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"priority\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"assignedToId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"resolvedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"replies\",\"kind\":\"object\",\"type\":\"SupportTicketReply\",\"relationName\":\"SupportTicketToSupportTicketReply\"}],\"dbName\":\"support_tickets\"},\"SupportTicketReply\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ticketId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"ticket\",\"kind\":\"object\",\"type\":\"SupportTicket\",\"relationName\":\"SupportTicketToSupportTicketReply\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SupportTicketReplyToUser\"},{\"name\":\"message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isInternal\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"attachments\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"support_ticket_replies\"},\"DiscordWebhook\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"webhookUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"DiscordWebhookType\"},{\"name\":\"scope\",\"kind\":\"enum\",\"type\":\"DiscordWebhookScope\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"DiscordWebhookToUser\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"testSuccessAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"avatarUrl\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"metadata\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"discord_webhooks\"},\"Config\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"config\"}},\"enums\":{},\"types\":{}}") - -async function decodeBase64AsWasm(wasmBase64: string): Promise { - const { Buffer } = await import('node:buffer') - const wasmArray = Buffer.from(wasmBase64, 'base64') - return new WebAssembly.Module(wasmArray) -} - -config.compilerWasm = { - getRuntime: async () => await import("@prisma/client/runtime/query_compiler_bg.postgresql.mjs"), - - getQueryCompilerWasmModule: async () => { - const { wasm } = await import("@prisma/client/runtime/query_compiler_bg.postgresql.wasm-base64.mjs") - return await decodeBase64AsWasm(wasm) - } -} - - - -export type LogOptions = - 'log' extends keyof ClientOptions ? ClientOptions['log'] extends Array ? Prisma.GetEvents : never : never - -export interface PrismaClientConstructor { - /** - * ## Prisma Client - * - * Type-safe database client for TypeScript - * @example - * ``` - * const prisma = new PrismaClient() - * // Fetch zero or more Users - * const users = await prisma.user.findMany() - * ``` - * - * Read more in our [docs](https://pris.ly/d/client). - */ - - new < - Options extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions, - LogOpts extends LogOptions = LogOptions, - OmitOpts extends Prisma.PrismaClientOptions['omit'] = Options extends { omit: infer U } ? U : Prisma.PrismaClientOptions['omit'], - ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs - >(options: Prisma.Subset ): PrismaClient -} - -/** - * ## Prisma Client - * - * Type-safe database client for TypeScript - * @example - * ``` - * const prisma = new PrismaClient() - * // Fetch zero or more Users - * const users = await prisma.user.findMany() - * ``` - * - * Read more in our [docs](https://pris.ly/d/client). - */ - -export interface PrismaClient< - in LogOpts extends Prisma.LogLevel = never, - in out OmitOpts extends Prisma.PrismaClientOptions['omit'] = undefined, - in out ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs -> { - [K: symbol]: { types: Prisma.TypeMap['other'] } - - $on(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): PrismaClient; - - /** - * Connect with the database - */ - $connect(): runtime.Types.Utils.JsPromise; - - /** - * Disconnect from the database - */ - $disconnect(): runtime.Types.Utils.JsPromise; - -/** - * Executes a prepared raw query and returns the number of affected rows. - * @example - * ``` - * const result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};` - * ``` - * - * Read more in our [docs](https://pris.ly/d/raw-queries). - */ - $executeRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise; - - /** - * Executes a raw query and returns the number of affected rows. - * Susceptible to SQL injections, see documentation. - * @example - * ``` - * const result = await prisma.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com') - * ``` - * - * Read more in our [docs](https://pris.ly/d/raw-queries). - */ - $executeRawUnsafe(query: string, ...values: any[]): Prisma.PrismaPromise; - - /** - * Performs a prepared raw query and returns the `SELECT` data. - * @example - * ``` - * const result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};` - * ``` - * - * Read more in our [docs](https://pris.ly/d/raw-queries). - */ - $queryRaw(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise; - - /** - * Performs a raw query and returns the `SELECT` data. - * Susceptible to SQL injections, see documentation. - * @example - * ``` - * const result = await prisma.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com') - * ``` - * - * Read more in our [docs](https://pris.ly/d/raw-queries). - */ - $queryRawUnsafe(query: string, ...values: any[]): Prisma.PrismaPromise; - - - /** - * Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole. - * @example - * ``` - * const [george, bob, alice] = await prisma.$transaction([ - * prisma.user.create({ data: { name: 'George' } }), - * prisma.user.create({ data: { name: 'Bob' } }), - * prisma.user.create({ data: { name: 'Alice' } }), - * ]) - * ``` - * - * Read more in our [docs](https://www.prisma.io/docs/concepts/components/prisma-client/transactions). - */ - $transaction

[]>(arg: [...P], options?: { isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise> - - $transaction(fn: (prisma: Omit) => runtime.Types.Utils.JsPromise, options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise - - $extends: runtime.Types.Extensions.ExtendsHook<"extends", Prisma.TypeMapCb, ExtArgs, runtime.Types.Utils.Call, { - extArgs: ExtArgs - }>> - - /** - * `prisma.user`: Exposes CRUD operations for the **User** model. - * Example usage: - * ```ts - * // Fetch zero or more Users - * const users = await prisma.user.findMany() - * ``` - */ - get user(): Prisma.UserDelegate; - - /** - * `prisma.session`: Exposes CRUD operations for the **Session** model. - * Example usage: - * ```ts - * // Fetch zero or more Sessions - * const sessions = await prisma.session.findMany() - * ``` - */ - get session(): Prisma.SessionDelegate; - - /** - * `prisma.verificationToken`: Exposes CRUD operations for the **VerificationToken** model. - * Example usage: - * ```ts - * // Fetch zero or more VerificationTokens - * const verificationTokens = await prisma.verificationToken.findMany() - * ``` - */ - get verificationToken(): Prisma.VerificationTokenDelegate; - - /** - * `prisma.location`: Exposes CRUD operations for the **Location** model. - * Example usage: - * ```ts - * // Fetch zero or more Locations - * const locations = await prisma.location.findMany() - * ``` - */ - get location(): Prisma.LocationDelegate; - - /** - * `prisma.node`: Exposes CRUD operations for the **Node** model. - * Example usage: - * ```ts - * // Fetch zero or more Nodes - * const nodes = await prisma.node.findMany() - * ``` - */ - get node(): Prisma.NodeDelegate; - - /** - * `prisma.allocation`: Exposes CRUD operations for the **Allocation** model. - * Example usage: - * ```ts - * // Fetch zero or more Allocations - * const allocations = await prisma.allocation.findMany() - * ``` - */ - get allocation(): Prisma.AllocationDelegate; - - /** - * `prisma.nest`: Exposes CRUD operations for the **Nest** model. - * Example usage: - * ```ts - * // Fetch zero or more Nests - * const nests = await prisma.nest.findMany() - * ``` - */ - get nest(): Prisma.NestDelegate; - - /** - * `prisma.egg`: Exposes CRUD operations for the **Egg** model. - * Example usage: - * ```ts - * // Fetch zero or more Eggs - * const eggs = await prisma.egg.findMany() - * ``` - */ - get egg(): Prisma.EggDelegate; - - /** - * `prisma.eggProperty`: Exposes CRUD operations for the **EggProperty** model. - * Example usage: - * ```ts - * // Fetch zero or more EggProperties - * const eggProperties = await prisma.eggProperty.findMany() - * ``` - */ - get eggProperty(): Prisma.EggPropertyDelegate; - - /** - * `prisma.eggVariable`: Exposes CRUD operations for the **EggVariable** model. - * Example usage: - * ```ts - * // Fetch zero or more EggVariables - * const eggVariables = await prisma.eggVariable.findMany() - * ``` - */ - get eggVariable(): Prisma.EggVariableDelegate; - - /** - * `prisma.server`: Exposes CRUD operations for the **Server** model. - * Example usage: - * ```ts - * // Fetch zero or more Servers - * const servers = await prisma.server.findMany() - * ``` - */ - get server(): Prisma.ServerDelegate; - - /** - * `prisma.serverProperty`: Exposes CRUD operations for the **ServerProperty** model. - * Example usage: - * ```ts - * // Fetch zero or more ServerProperties - * const serverProperties = await prisma.serverProperty.findMany() - * ``` - */ - get serverProperty(): Prisma.ServerPropertyDelegate; - - /** - * `prisma.serverVariable`: Exposes CRUD operations for the **ServerVariable** model. - * Example usage: - * ```ts - * // Fetch zero or more ServerVariables - * const serverVariables = await prisma.serverVariable.findMany() - * ``` - */ - get serverVariable(): Prisma.ServerVariableDelegate; - - /** - * `prisma.serverDatabase`: Exposes CRUD operations for the **ServerDatabase** model. - * Example usage: - * ```ts - * // Fetch zero or more ServerDatabases - * const serverDatabases = await prisma.serverDatabase.findMany() - * ``` - */ - get serverDatabase(): Prisma.ServerDatabaseDelegate; - - /** - * `prisma.serverBackup`: Exposes CRUD operations for the **ServerBackup** model. - * Example usage: - * ```ts - * // Fetch zero or more ServerBackups - * const serverBackups = await prisma.serverBackup.findMany() - * ``` - */ - get serverBackup(): Prisma.ServerBackupDelegate; - - /** - * `prisma.syncLog`: Exposes CRUD operations for the **SyncLog** model. - * Example usage: - * ```ts - * // Fetch zero or more SyncLogs - * const syncLogs = await prisma.syncLog.findMany() - * ``` - */ - get syncLog(): Prisma.SyncLogDelegate; - - /** - * `prisma.product`: Exposes CRUD operations for the **Product** model. - * Example usage: - * ```ts - * // Fetch zero or more Products - * const products = await prisma.product.findMany() - * ``` - */ - get product(): Prisma.ProductDelegate; - - /** - * `prisma.invoice`: Exposes CRUD operations for the **Invoice** model. - * Example usage: - * ```ts - * // Fetch zero or more Invoices - * const invoices = await prisma.invoice.findMany() - * ``` - */ - get invoice(): Prisma.InvoiceDelegate; - - /** - * `prisma.invoiceItem`: Exposes CRUD operations for the **InvoiceItem** model. - * Example usage: - * ```ts - * // Fetch zero or more InvoiceItems - * const invoiceItems = await prisma.invoiceItem.findMany() - * ``` - */ - get invoiceItem(): Prisma.InvoiceItemDelegate; - - /** - * `prisma.payment`: Exposes CRUD operations for the **Payment** model. - * Example usage: - * ```ts - * // Fetch zero or more Payments - * const payments = await prisma.payment.findMany() - * ``` - */ - get payment(): Prisma.PaymentDelegate; - - /** - * `prisma.supportTicket`: Exposes CRUD operations for the **SupportTicket** model. - * Example usage: - * ```ts - * // Fetch zero or more SupportTickets - * const supportTickets = await prisma.supportTicket.findMany() - * ``` - */ - get supportTicket(): Prisma.SupportTicketDelegate; - - /** - * `prisma.supportTicketReply`: Exposes CRUD operations for the **SupportTicketReply** model. - * Example usage: - * ```ts - * // Fetch zero or more SupportTicketReplies - * const supportTicketReplies = await prisma.supportTicketReply.findMany() - * ``` - */ - get supportTicketReply(): Prisma.SupportTicketReplyDelegate; - - /** - * `prisma.discordWebhook`: Exposes CRUD operations for the **DiscordWebhook** model. - * Example usage: - * ```ts - * // Fetch zero or more DiscordWebhooks - * const discordWebhooks = await prisma.discordWebhook.findMany() - * ``` - */ - get discordWebhook(): Prisma.DiscordWebhookDelegate; - - /** - * `prisma.config`: Exposes CRUD operations for the **Config** model. - * Example usage: - * ```ts - * // Fetch zero or more Configs - * const configs = await prisma.config.findMany() - * ``` - */ - get config(): Prisma.ConfigDelegate; -} - -export function getPrismaClientClass(): PrismaClientConstructor { - return runtime.getPrismaClient(config) as unknown as PrismaClientConstructor -} diff --git a/prisma/generated/prisma/internal/prismaNamespace.ts b/prisma/generated/prisma/internal/prismaNamespace.ts deleted file mode 100644 index 956a572..0000000 --- a/prisma/generated/prisma/internal/prismaNamespace.ts +++ /dev/null @@ -1,3034 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * WARNING: This is an internal file that is subject to change! - * - * 🛑 Under no circumstances should you import this file directly! 🛑 - * - * All exports from this file are wrapped under a `Prisma` namespace object in the client.ts file. - * While this enables partial backward compatibility, it is not part of the stable public API. - * - * If you are looking for your Models, Enums, and Input Types, please import them from the respective - * model files in the `model` directory! - */ - -import * as runtime from "@prisma/client/runtime/client" -import type * as Prisma from "../models" -import { type PrismaClient } from "./class" - -export type * from '../models' - -export type DMMF = typeof runtime.DMMF - -export type PrismaPromise = runtime.Types.Public.PrismaPromise - -/** - * Prisma Errors - */ - -export const PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError -export type PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError - -export const PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError -export type PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError - -export const PrismaClientRustPanicError = runtime.PrismaClientRustPanicError -export type PrismaClientRustPanicError = runtime.PrismaClientRustPanicError - -export const PrismaClientInitializationError = runtime.PrismaClientInitializationError -export type PrismaClientInitializationError = runtime.PrismaClientInitializationError - -export const PrismaClientValidationError = runtime.PrismaClientValidationError -export type PrismaClientValidationError = runtime.PrismaClientValidationError - -/** - * Re-export of sql-template-tag - */ -export const sql = runtime.sqltag -export const empty = runtime.empty -export const join = runtime.join -export const raw = runtime.raw -export const Sql = runtime.Sql -export type Sql = runtime.Sql - - - -/** - * Decimal.js - */ -export const Decimal = runtime.Decimal -export type Decimal = runtime.Decimal - -export type DecimalJsLike = runtime.DecimalJsLike - -/** -* Extensions -*/ -export type Extension = runtime.Types.Extensions.UserArgs -export const getExtensionContext = runtime.Extensions.getExtensionContext -export type Args = runtime.Types.Public.Args -export type Payload = runtime.Types.Public.Payload -export type Result = runtime.Types.Public.Result -export type Exact = runtime.Types.Public.Exact - -export type PrismaVersion = { - client: string - engine: string -} - -/** - * Prisma Client JS version: 7.2.0 - * Query Engine version: 0c8ef2ce45c83248ab3df073180d5eda9e8be7a3 - */ -export const prismaVersion: PrismaVersion = { - client: "7.2.0", - engine: "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3" -} - -/** - * Utility Types - */ - -export type Bytes = runtime.Bytes -export type JsonObject = runtime.JsonObject -export type JsonArray = runtime.JsonArray -export type JsonValue = runtime.JsonValue -export type InputJsonObject = runtime.InputJsonObject -export type InputJsonArray = runtime.InputJsonArray -export type InputJsonValue = runtime.InputJsonValue - - -export const NullTypes = { - DbNull: runtime.NullTypes.DbNull as (new (secret: never) => typeof runtime.DbNull), - JsonNull: runtime.NullTypes.JsonNull as (new (secret: never) => typeof runtime.JsonNull), - AnyNull: runtime.NullTypes.AnyNull as (new (secret: never) => typeof runtime.AnyNull), -} -/** - * Helper for filtering JSON entries that have `null` on the database (empty on the db) - * - * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field - */ -export const DbNull = runtime.DbNull - -/** - * Helper for filtering JSON entries that have JSON `null` values (not empty on the db) - * - * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field - */ -export const JsonNull = runtime.JsonNull - -/** - * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull` - * - * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field - */ -export const AnyNull = runtime.AnyNull - - -type SelectAndInclude = { - select: any - include: any -} - -type SelectAndOmit = { - select: any - omit: any -} - -/** - * From T, pick a set of properties whose keys are in the union K - */ -type Prisma__Pick = { - [P in K]: T[P]; -}; - -export type Enumerable = T | Array; - -/** - * Subset - * @desc From `T` pick properties that exist in `U`. Simple version of Intersection - */ -export type Subset = { - [key in keyof T]: key extends keyof U ? T[key] : never; -}; - -/** - * SelectSubset - * @desc From `T` pick properties that exist in `U`. Simple version of Intersection. - * Additionally, it validates, if both select and include are present. If the case, it errors. - */ -export type SelectSubset = { - [key in keyof T]: key extends keyof U ? T[key] : never -} & - (T extends SelectAndInclude - ? 'Please either choose `select` or `include`.' - : T extends SelectAndOmit - ? 'Please either choose `select` or `omit`.' - : {}) - -/** - * Subset + Intersection - * @desc From `T` pick properties that exist in `U` and intersect `K` - */ -export type SubsetIntersection = { - [key in keyof T]: key extends keyof U ? T[key] : never -} & - K - -type Without = { [P in Exclude]?: never }; - -/** - * XOR is needed to have a real mutually exclusive union type - * https://stackoverflow.com/questions/42123407/does-typescript-support-mutually-exclusive-types - */ -export type XOR = - T extends object ? - U extends object ? - (Without & U) | (Without & T) - : U : T - - -/** - * Is T a Record? - */ -type IsObject = T extends Array -? False -: T extends Date -? False -: T extends Uint8Array -? False -: T extends BigInt -? False -: T extends object -? True -: False - - -/** - * If it's T[], return T - */ -export type UnEnumerate = T extends Array ? U : T - -/** - * From ts-toolbelt - */ - -type __Either = Omit & - { - // Merge all but K - [P in K]: Prisma__Pick // With K possibilities - }[K] - -type EitherStrict = Strict<__Either> - -type EitherLoose = ComputeRaw<__Either> - -type _Either< - O extends object, - K extends Key, - strict extends Boolean -> = { - 1: EitherStrict - 0: EitherLoose -}[strict] - -export type Either< - O extends object, - K extends Key, - strict extends Boolean = 1 -> = O extends unknown ? _Either : never - -export type Union = any - -export type PatchUndefined = { - [K in keyof O]: O[K] extends undefined ? At : O[K] -} & {} - -/** Helper Types for "Merge" **/ -export type IntersectOf = ( - U extends unknown ? (k: U) => void : never -) extends (k: infer I) => void - ? I - : never - -export type Overwrite = { - [K in keyof O]: K extends keyof O1 ? O1[K] : O[K]; -} & {}; - -type _Merge = IntersectOf; -}>>; - -type Key = string | number | symbol; -type AtStrict = O[K & keyof O]; -type AtLoose = O extends unknown ? AtStrict : never; -export type At = { - 1: AtStrict; - 0: AtLoose; -}[strict]; - -export type ComputeRaw = A extends Function ? A : { - [K in keyof A]: A[K]; -} & {}; - -export type OptionalFlat = { - [K in keyof O]?: O[K]; -} & {}; - -type _Record = { - [P in K]: T; -}; - -// cause typescript not to expand types and preserve names -type NoExpand = T extends unknown ? T : never; - -// this type assumes the passed object is entirely optional -export type AtLeast = NoExpand< - O extends unknown - ? | (K extends keyof O ? { [P in K]: O[P] } & O : O) - | {[P in keyof O as P extends K ? P : never]-?: O[P]} & O - : never>; - -type _Strict = U extends unknown ? U & OptionalFlat<_Record, keyof U>, never>> : never; - -export type Strict = ComputeRaw<_Strict>; -/** End Helper Types for "Merge" **/ - -export type Merge = ComputeRaw<_Merge>>; - -export type Boolean = True | False - -export type True = 1 - -export type False = 0 - -export type Not = { - 0: 1 - 1: 0 -}[B] - -export type Extends = [A1] extends [never] - ? 0 // anything `never` is false - : A1 extends A2 - ? 1 - : 0 - -export type Has = Not< - Extends, U1> -> - -export type Or = { - 0: { - 0: 0 - 1: 1 - } - 1: { - 0: 1 - 1: 1 - } -}[B1][B2] - -export type Keys = U extends unknown ? keyof U : never - -export type GetScalarType = O extends object ? { - [P in keyof T]: P extends keyof O - ? O[P] - : never -} : never - -type FieldPaths< - T, - U = Omit -> = IsObject extends True ? U : T - -export type GetHavingFields = { - [K in keyof T]: Or< - Or, Extends<'AND', K>>, - Extends<'NOT', K> - > extends True - ? // infer is only needed to not hit TS limit - // based on the brilliant idea of Pierre-Antoine Mills - // https://github.com/microsoft/TypeScript/issues/30188#issuecomment-478938437 - T[K] extends infer TK - ? GetHavingFields extends object ? Merge> : never> - : never - : {} extends FieldPaths - ? never - : K -}[keyof T] - -/** - * Convert tuple to union - */ -type _TupleToUnion = T extends (infer E)[] ? E : never -type TupleToUnion = _TupleToUnion -export type MaybeTupleToUnion = T extends any[] ? TupleToUnion : T - -/** - * Like `Pick`, but additionally can also accept an array of keys - */ -export type PickEnumerable | keyof T> = Prisma__Pick> - -/** - * Exclude all keys with underscores - */ -export type ExcludeUnderscoreKeys = T extends `_${string}` ? never : T - - -export type FieldRef = runtime.FieldRef - -type FieldRefInputType = Model extends never ? never : FieldRef - - -export const ModelName = { - User: 'User', - Session: 'Session', - VerificationToken: 'VerificationToken', - Location: 'Location', - Node: 'Node', - Allocation: 'Allocation', - Nest: 'Nest', - Egg: 'Egg', - EggProperty: 'EggProperty', - EggVariable: 'EggVariable', - Server: 'Server', - ServerProperty: 'ServerProperty', - ServerVariable: 'ServerVariable', - ServerDatabase: 'ServerDatabase', - ServerBackup: 'ServerBackup', - SyncLog: 'SyncLog', - Product: 'Product', - Invoice: 'Invoice', - InvoiceItem: 'InvoiceItem', - Payment: 'Payment', - SupportTicket: 'SupportTicket', - SupportTicketReply: 'SupportTicketReply', - DiscordWebhook: 'DiscordWebhook', - Config: 'Config' -} as const - -export type ModelName = (typeof ModelName)[keyof typeof ModelName] - - - -export interface TypeMapCb extends runtime.Types.Utils.Fn<{extArgs: runtime.Types.Extensions.InternalArgs }, runtime.Types.Utils.Record> { - returns: TypeMap -} - -export type TypeMap = { - globalOmitOptions: { - omit: GlobalOmitOptions - } - meta: { - modelProps: "user" | "session" | "verificationToken" | "location" | "node" | "allocation" | "nest" | "egg" | "eggProperty" | "eggVariable" | "server" | "serverProperty" | "serverVariable" | "serverDatabase" | "serverBackup" | "syncLog" | "product" | "invoice" | "invoiceItem" | "payment" | "supportTicket" | "supportTicketReply" | "discordWebhook" | "config" - txIsolationLevel: TransactionIsolationLevel - } - model: { - User: { - payload: Prisma.$UserPayload - fields: Prisma.UserFieldRefs - operations: { - findUnique: { - args: Prisma.UserFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.UserFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.UserFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.UserFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.UserFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.UserCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.UserCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.UserCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.UserDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.UserUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.UserDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.UserUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.UserUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.UserUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.UserAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.UserGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.UserCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - Session: { - payload: Prisma.$SessionPayload - fields: Prisma.SessionFieldRefs - operations: { - findUnique: { - args: Prisma.SessionFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.SessionFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.SessionFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.SessionFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.SessionFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.SessionCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.SessionCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.SessionCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.SessionDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.SessionUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.SessionDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.SessionUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.SessionUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.SessionUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.SessionAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.SessionGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.SessionCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - VerificationToken: { - payload: Prisma.$VerificationTokenPayload - fields: Prisma.VerificationTokenFieldRefs - operations: { - findUnique: { - args: Prisma.VerificationTokenFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.VerificationTokenFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.VerificationTokenFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.VerificationTokenFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.VerificationTokenFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.VerificationTokenCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.VerificationTokenCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.VerificationTokenCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.VerificationTokenDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.VerificationTokenUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.VerificationTokenDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.VerificationTokenUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.VerificationTokenUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.VerificationTokenUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.VerificationTokenAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.VerificationTokenGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.VerificationTokenCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - Location: { - payload: Prisma.$LocationPayload - fields: Prisma.LocationFieldRefs - operations: { - findUnique: { - args: Prisma.LocationFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.LocationFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.LocationFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.LocationFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.LocationFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.LocationCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.LocationCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.LocationCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.LocationDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.LocationUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.LocationDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.LocationUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.LocationUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.LocationUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.LocationAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.LocationGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.LocationCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - Node: { - payload: Prisma.$NodePayload - fields: Prisma.NodeFieldRefs - operations: { - findUnique: { - args: Prisma.NodeFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.NodeFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.NodeFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.NodeFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.NodeFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.NodeCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.NodeCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.NodeCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.NodeDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.NodeUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.NodeDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.NodeUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.NodeUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.NodeUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.NodeAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.NodeGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.NodeCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - Allocation: { - payload: Prisma.$AllocationPayload - fields: Prisma.AllocationFieldRefs - operations: { - findUnique: { - args: Prisma.AllocationFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.AllocationFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.AllocationFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.AllocationFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.AllocationFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.AllocationCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.AllocationCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.AllocationCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.AllocationDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.AllocationUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.AllocationDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.AllocationUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.AllocationUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.AllocationUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.AllocationAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.AllocationGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.AllocationCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - Nest: { - payload: Prisma.$NestPayload - fields: Prisma.NestFieldRefs - operations: { - findUnique: { - args: Prisma.NestFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.NestFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.NestFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.NestFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.NestFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.NestCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.NestCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.NestCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.NestDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.NestUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.NestDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.NestUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.NestUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.NestUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.NestAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.NestGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.NestCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - Egg: { - payload: Prisma.$EggPayload - fields: Prisma.EggFieldRefs - operations: { - findUnique: { - args: Prisma.EggFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.EggFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.EggFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.EggFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.EggFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.EggCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.EggCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.EggCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.EggDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.EggUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.EggDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.EggUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.EggUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.EggUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.EggAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.EggGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.EggCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - EggProperty: { - payload: Prisma.$EggPropertyPayload - fields: Prisma.EggPropertyFieldRefs - operations: { - findUnique: { - args: Prisma.EggPropertyFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.EggPropertyFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.EggPropertyFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.EggPropertyFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.EggPropertyFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.EggPropertyCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.EggPropertyCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.EggPropertyCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.EggPropertyDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.EggPropertyUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.EggPropertyDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.EggPropertyUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.EggPropertyUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.EggPropertyUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.EggPropertyAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.EggPropertyGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.EggPropertyCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - EggVariable: { - payload: Prisma.$EggVariablePayload - fields: Prisma.EggVariableFieldRefs - operations: { - findUnique: { - args: Prisma.EggVariableFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.EggVariableFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.EggVariableFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.EggVariableFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.EggVariableFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.EggVariableCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.EggVariableCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.EggVariableCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.EggVariableDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.EggVariableUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.EggVariableDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.EggVariableUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.EggVariableUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.EggVariableUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.EggVariableAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.EggVariableGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.EggVariableCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - Server: { - payload: Prisma.$ServerPayload - fields: Prisma.ServerFieldRefs - operations: { - findUnique: { - args: Prisma.ServerFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.ServerFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.ServerFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.ServerFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.ServerFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.ServerCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.ServerCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.ServerCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.ServerDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.ServerUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.ServerDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.ServerUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.ServerUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.ServerUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.ServerAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.ServerGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.ServerCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - ServerProperty: { - payload: Prisma.$ServerPropertyPayload - fields: Prisma.ServerPropertyFieldRefs - operations: { - findUnique: { - args: Prisma.ServerPropertyFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.ServerPropertyFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.ServerPropertyFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.ServerPropertyFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.ServerPropertyFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.ServerPropertyCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.ServerPropertyCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.ServerPropertyCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.ServerPropertyDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.ServerPropertyUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.ServerPropertyDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.ServerPropertyUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.ServerPropertyUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.ServerPropertyUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.ServerPropertyAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.ServerPropertyGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.ServerPropertyCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - ServerVariable: { - payload: Prisma.$ServerVariablePayload - fields: Prisma.ServerVariableFieldRefs - operations: { - findUnique: { - args: Prisma.ServerVariableFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.ServerVariableFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.ServerVariableFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.ServerVariableFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.ServerVariableFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.ServerVariableCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.ServerVariableCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.ServerVariableCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.ServerVariableDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.ServerVariableUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.ServerVariableDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.ServerVariableUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.ServerVariableUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.ServerVariableUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.ServerVariableAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.ServerVariableGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.ServerVariableCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - ServerDatabase: { - payload: Prisma.$ServerDatabasePayload - fields: Prisma.ServerDatabaseFieldRefs - operations: { - findUnique: { - args: Prisma.ServerDatabaseFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.ServerDatabaseFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.ServerDatabaseFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.ServerDatabaseFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.ServerDatabaseFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.ServerDatabaseCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.ServerDatabaseCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.ServerDatabaseCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.ServerDatabaseDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.ServerDatabaseUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.ServerDatabaseDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.ServerDatabaseUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.ServerDatabaseUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.ServerDatabaseUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.ServerDatabaseAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.ServerDatabaseGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.ServerDatabaseCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - ServerBackup: { - payload: Prisma.$ServerBackupPayload - fields: Prisma.ServerBackupFieldRefs - operations: { - findUnique: { - args: Prisma.ServerBackupFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.ServerBackupFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.ServerBackupFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.ServerBackupFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.ServerBackupFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.ServerBackupCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.ServerBackupCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.ServerBackupCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.ServerBackupDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.ServerBackupUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.ServerBackupDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.ServerBackupUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.ServerBackupUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.ServerBackupUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.ServerBackupAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.ServerBackupGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.ServerBackupCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - SyncLog: { - payload: Prisma.$SyncLogPayload - fields: Prisma.SyncLogFieldRefs - operations: { - findUnique: { - args: Prisma.SyncLogFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.SyncLogFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.SyncLogFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.SyncLogFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.SyncLogFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.SyncLogCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.SyncLogCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.SyncLogCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.SyncLogDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.SyncLogUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.SyncLogDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.SyncLogUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.SyncLogUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.SyncLogUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.SyncLogAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.SyncLogGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.SyncLogCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - Product: { - payload: Prisma.$ProductPayload - fields: Prisma.ProductFieldRefs - operations: { - findUnique: { - args: Prisma.ProductFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.ProductFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.ProductFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.ProductFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.ProductFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.ProductCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.ProductCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.ProductCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.ProductDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.ProductUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.ProductDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.ProductUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.ProductUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.ProductUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.ProductAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.ProductGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.ProductCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - Invoice: { - payload: Prisma.$InvoicePayload - fields: Prisma.InvoiceFieldRefs - operations: { - findUnique: { - args: Prisma.InvoiceFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.InvoiceFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.InvoiceFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.InvoiceFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.InvoiceFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.InvoiceCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.InvoiceCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.InvoiceCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.InvoiceDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.InvoiceUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.InvoiceDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.InvoiceUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.InvoiceUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.InvoiceUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.InvoiceAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.InvoiceGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.InvoiceCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - InvoiceItem: { - payload: Prisma.$InvoiceItemPayload - fields: Prisma.InvoiceItemFieldRefs - operations: { - findUnique: { - args: Prisma.InvoiceItemFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.InvoiceItemFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.InvoiceItemFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.InvoiceItemFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.InvoiceItemFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.InvoiceItemCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.InvoiceItemCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.InvoiceItemCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.InvoiceItemDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.InvoiceItemUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.InvoiceItemDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.InvoiceItemUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.InvoiceItemUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.InvoiceItemUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.InvoiceItemAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.InvoiceItemGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.InvoiceItemCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - Payment: { - payload: Prisma.$PaymentPayload - fields: Prisma.PaymentFieldRefs - operations: { - findUnique: { - args: Prisma.PaymentFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.PaymentFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.PaymentFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.PaymentFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.PaymentFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.PaymentCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.PaymentCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.PaymentCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.PaymentDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.PaymentUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.PaymentDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.PaymentUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.PaymentUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.PaymentUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.PaymentAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.PaymentGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.PaymentCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - SupportTicket: { - payload: Prisma.$SupportTicketPayload - fields: Prisma.SupportTicketFieldRefs - operations: { - findUnique: { - args: Prisma.SupportTicketFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.SupportTicketFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.SupportTicketFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.SupportTicketFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.SupportTicketFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.SupportTicketCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.SupportTicketCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.SupportTicketCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.SupportTicketDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.SupportTicketUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.SupportTicketDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.SupportTicketUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.SupportTicketUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.SupportTicketUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.SupportTicketAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.SupportTicketGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.SupportTicketCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - SupportTicketReply: { - payload: Prisma.$SupportTicketReplyPayload - fields: Prisma.SupportTicketReplyFieldRefs - operations: { - findUnique: { - args: Prisma.SupportTicketReplyFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.SupportTicketReplyFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.SupportTicketReplyFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.SupportTicketReplyFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.SupportTicketReplyFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.SupportTicketReplyCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.SupportTicketReplyCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.SupportTicketReplyCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.SupportTicketReplyDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.SupportTicketReplyUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.SupportTicketReplyDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.SupportTicketReplyUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.SupportTicketReplyUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.SupportTicketReplyUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.SupportTicketReplyAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.SupportTicketReplyGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.SupportTicketReplyCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - DiscordWebhook: { - payload: Prisma.$DiscordWebhookPayload - fields: Prisma.DiscordWebhookFieldRefs - operations: { - findUnique: { - args: Prisma.DiscordWebhookFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.DiscordWebhookFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.DiscordWebhookFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.DiscordWebhookFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.DiscordWebhookFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.DiscordWebhookCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.DiscordWebhookCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.DiscordWebhookCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.DiscordWebhookDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.DiscordWebhookUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.DiscordWebhookDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.DiscordWebhookUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.DiscordWebhookUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.DiscordWebhookUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.DiscordWebhookAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.DiscordWebhookGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.DiscordWebhookCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - Config: { - payload: Prisma.$ConfigPayload - fields: Prisma.ConfigFieldRefs - operations: { - findUnique: { - args: Prisma.ConfigFindUniqueArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findUniqueOrThrow: { - args: Prisma.ConfigFindUniqueOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findFirst: { - args: Prisma.ConfigFindFirstArgs - result: runtime.Types.Utils.PayloadToResult | null - } - findFirstOrThrow: { - args: Prisma.ConfigFindFirstOrThrowArgs - result: runtime.Types.Utils.PayloadToResult - } - findMany: { - args: Prisma.ConfigFindManyArgs - result: runtime.Types.Utils.PayloadToResult[] - } - create: { - args: Prisma.ConfigCreateArgs - result: runtime.Types.Utils.PayloadToResult - } - createMany: { - args: Prisma.ConfigCreateManyArgs - result: BatchPayload - } - createManyAndReturn: { - args: Prisma.ConfigCreateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - delete: { - args: Prisma.ConfigDeleteArgs - result: runtime.Types.Utils.PayloadToResult - } - update: { - args: Prisma.ConfigUpdateArgs - result: runtime.Types.Utils.PayloadToResult - } - deleteMany: { - args: Prisma.ConfigDeleteManyArgs - result: BatchPayload - } - updateMany: { - args: Prisma.ConfigUpdateManyArgs - result: BatchPayload - } - updateManyAndReturn: { - args: Prisma.ConfigUpdateManyAndReturnArgs - result: runtime.Types.Utils.PayloadToResult[] - } - upsert: { - args: Prisma.ConfigUpsertArgs - result: runtime.Types.Utils.PayloadToResult - } - aggregate: { - args: Prisma.ConfigAggregateArgs - result: runtime.Types.Utils.Optional - } - groupBy: { - args: Prisma.ConfigGroupByArgs - result: runtime.Types.Utils.Optional[] - } - count: { - args: Prisma.ConfigCountArgs - result: runtime.Types.Utils.Optional | number - } - } - } - } -} & { - other: { - payload: any - operations: { - $executeRaw: { - args: [query: TemplateStringsArray | Sql, ...values: any[]], - result: any - } - $executeRawUnsafe: { - args: [query: string, ...values: any[]], - result: any - } - $queryRaw: { - args: [query: TemplateStringsArray | Sql, ...values: any[]], - result: any - } - $queryRawUnsafe: { - args: [query: string, ...values: any[]], - result: any - } - } - } -} - -/** - * Enums - */ - -export const TransactionIsolationLevel = runtime.makeStrictEnum({ - ReadUncommitted: 'ReadUncommitted', - ReadCommitted: 'ReadCommitted', - RepeatableRead: 'RepeatableRead', - Serializable: 'Serializable' -} as const) - -export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] - - -export const UserScalarFieldEnum = { - id: 'id', - email: 'email', - password: 'password', - username: 'username', - firstName: 'firstName', - lastName: 'lastName', - roles: 'roles', - isPterodactylAdmin: 'isPterodactylAdmin', - isVirtfusionAdmin: 'isVirtfusionAdmin', - isSystemAdmin: 'isSystemAdmin', - pterodactylId: 'pterodactylId', - virtfusionId: 'virtfusionId', - isMigrated: 'isMigrated', - emailVerified: 'emailVerified', - isActive: 'isActive', - avatarUrl: 'avatarUrl', - companyName: 'companyName', - phoneNumber: 'phoneNumber', - billingEmail: 'billingEmail', - accountBalance: 'accountBalance', - accountStatus: 'accountStatus', - createdAt: 'createdAt', - updatedAt: 'updatedAt', - lastLoginAt: 'lastLoginAt', - lastSyncedAt: 'lastSyncedAt' -} as const - -export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum] - - -export const SessionScalarFieldEnum = { - id: 'id', - sessionToken: 'sessionToken', - userId: 'userId', - expires: 'expires', - createdAt: 'createdAt' -} as const - -export type SessionScalarFieldEnum = (typeof SessionScalarFieldEnum)[keyof typeof SessionScalarFieldEnum] - - -export const VerificationTokenScalarFieldEnum = { - identifier: 'identifier', - token: 'token', - expires: 'expires', - type: 'type' -} as const - -export type VerificationTokenScalarFieldEnum = (typeof VerificationTokenScalarFieldEnum)[keyof typeof VerificationTokenScalarFieldEnum] - - -export const LocationScalarFieldEnum = { - id: 'id', - shortCode: 'shortCode', - description: 'description', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type LocationScalarFieldEnum = (typeof LocationScalarFieldEnum)[keyof typeof LocationScalarFieldEnum] - - -export const NodeScalarFieldEnum = { - id: 'id', - uuid: 'uuid', - name: 'name', - description: 'description', - fqdn: 'fqdn', - scheme: 'scheme', - behindProxy: 'behindProxy', - panelType: 'panelType', - memory: 'memory', - memoryOverallocate: 'memoryOverallocate', - disk: 'disk', - diskOverallocate: 'diskOverallocate', - isPublic: 'isPublic', - isMaintenanceMode: 'isMaintenanceMode', - daemonListenPort: 'daemonListenPort', - daemonSftpPort: 'daemonSftpPort', - daemonBase: 'daemonBase', - locationId: 'locationId', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type NodeScalarFieldEnum = (typeof NodeScalarFieldEnum)[keyof typeof NodeScalarFieldEnum] - - -export const AllocationScalarFieldEnum = { - id: 'id', - ip: 'ip', - port: 'port', - alias: 'alias', - notes: 'notes', - isAssigned: 'isAssigned', - nodeId: 'nodeId', - serverId: 'serverId', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type AllocationScalarFieldEnum = (typeof AllocationScalarFieldEnum)[keyof typeof AllocationScalarFieldEnum] - - -export const NestScalarFieldEnum = { - id: 'id', - uuid: 'uuid', - name: 'name', - description: 'description', - author: 'author', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type NestScalarFieldEnum = (typeof NestScalarFieldEnum)[keyof typeof NestScalarFieldEnum] - - -export const EggScalarFieldEnum = { - id: 'id', - uuid: 'uuid', - name: 'name', - description: 'description', - author: 'author', - panelType: 'panelType', - nestId: 'nestId', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type EggScalarFieldEnum = (typeof EggScalarFieldEnum)[keyof typeof EggScalarFieldEnum] - - -export const EggPropertyScalarFieldEnum = { - id: 'id', - eggId: 'eggId', - key: 'key', - value: 'value', - panelType: 'panelType', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type EggPropertyScalarFieldEnum = (typeof EggPropertyScalarFieldEnum)[keyof typeof EggPropertyScalarFieldEnum] - - -export const EggVariableScalarFieldEnum = { - id: 'id', - eggId: 'eggId', - name: 'name', - description: 'description', - envVariable: 'envVariable', - defaultValue: 'defaultValue', - userViewable: 'userViewable', - userEditable: 'userEditable', - rules: 'rules', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type EggVariableScalarFieldEnum = (typeof EggVariableScalarFieldEnum)[keyof typeof EggVariableScalarFieldEnum] - - -export const ServerScalarFieldEnum = { - id: 'id', - pterodactylId: 'pterodactylId', - virtfusionId: 'virtfusionId', - uuid: 'uuid', - uuidShort: 'uuidShort', - externalId: 'externalId', - panelType: 'panelType', - name: 'name', - description: 'description', - status: 'status', - isSuspended: 'isSuspended', - productId: 'productId', - ownerId: 'ownerId', - nodeId: 'nodeId', - eggId: 'eggId', - createdAt: 'createdAt', - updatedAt: 'updatedAt', - installedAt: 'installedAt', - lastSyncedAt: 'lastSyncedAt' -} as const - -export type ServerScalarFieldEnum = (typeof ServerScalarFieldEnum)[keyof typeof ServerScalarFieldEnum] - - -export const ServerPropertyScalarFieldEnum = { - id: 'id', - serverId: 'serverId', - key: 'key', - value: 'value', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type ServerPropertyScalarFieldEnum = (typeof ServerPropertyScalarFieldEnum)[keyof typeof ServerPropertyScalarFieldEnum] - - -export const ServerVariableScalarFieldEnum = { - id: 'id', - serverId: 'serverId', - variableId: 'variableId', - value: 'value', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type ServerVariableScalarFieldEnum = (typeof ServerVariableScalarFieldEnum)[keyof typeof ServerVariableScalarFieldEnum] - - -export const ServerDatabaseScalarFieldEnum = { - id: 'id', - serverId: 'serverId', - name: 'name', - username: 'username', - host: 'host', - port: 'port', - maxConnections: 'maxConnections', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type ServerDatabaseScalarFieldEnum = (typeof ServerDatabaseScalarFieldEnum)[keyof typeof ServerDatabaseScalarFieldEnum] - - -export const ServerBackupScalarFieldEnum = { - id: 'id', - serverId: 'serverId', - name: 'name', - ignoredFiles: 'ignoredFiles', - sha256Hash: 'sha256Hash', - bytes: 'bytes', - isSuccessful: 'isSuccessful', - isLocked: 'isLocked', - completedAt: 'completedAt', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type ServerBackupScalarFieldEnum = (typeof ServerBackupScalarFieldEnum)[keyof typeof ServerBackupScalarFieldEnum] - - -export const SyncLogScalarFieldEnum = { - id: 'id', - type: 'type', - status: 'status', - itemsTotal: 'itemsTotal', - itemsSynced: 'itemsSynced', - itemsFailed: 'itemsFailed', - error: 'error', - metadata: 'metadata', - startedAt: 'startedAt', - completedAt: 'completedAt' -} as const - -export type SyncLogScalarFieldEnum = (typeof SyncLogScalarFieldEnum)[keyof typeof SyncLogScalarFieldEnum] - - -export const ProductScalarFieldEnum = { - id: 'id', - name: 'name', - description: 'description', - category: 'category', - basePrice: 'basePrice', - setupFee: 'setupFee', - currency: 'currency', - billingCycle: 'billingCycle', - isActive: 'isActive', - displayOrder: 'displayOrder', - creatorId: 'creatorId', - metadata: 'metadata', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type ProductScalarFieldEnum = (typeof ProductScalarFieldEnum)[keyof typeof ProductScalarFieldEnum] - - -export const InvoiceScalarFieldEnum = { - id: 'id', - invoiceNumber: 'invoiceNumber', - userId: 'userId', - subtotal: 'subtotal', - tax: 'tax', - total: 'total', - paid: 'paid', - status: 'status', - dueDate: 'dueDate', - paidDate: 'paidDate', - notes: 'notes', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type InvoiceScalarFieldEnum = (typeof InvoiceScalarFieldEnum)[keyof typeof InvoiceScalarFieldEnum] - - -export const InvoiceItemScalarFieldEnum = { - id: 'id', - invoiceId: 'invoiceId', - productId: 'productId', - description: 'description', - quantity: 'quantity', - unitPrice: 'unitPrice', - total: 'total' -} as const - -export type InvoiceItemScalarFieldEnum = (typeof InvoiceItemScalarFieldEnum)[keyof typeof InvoiceItemScalarFieldEnum] - - -export const PaymentScalarFieldEnum = { - id: 'id', - invoiceId: 'invoiceId', - amount: 'amount', - method: 'method', - reference: 'reference', - status: 'status', - notes: 'notes', - createdAt: 'createdAt' -} as const - -export type PaymentScalarFieldEnum = (typeof PaymentScalarFieldEnum)[keyof typeof PaymentScalarFieldEnum] - - -export const SupportTicketScalarFieldEnum = { - id: 'id', - ticketNumber: 'ticketNumber', - userId: 'userId', - serverId: 'serverId', - subject: 'subject', - category: 'category', - priority: 'priority', - status: 'status', - assignedToId: 'assignedToId', - createdAt: 'createdAt', - updatedAt: 'updatedAt', - resolvedAt: 'resolvedAt' -} as const - -export type SupportTicketScalarFieldEnum = (typeof SupportTicketScalarFieldEnum)[keyof typeof SupportTicketScalarFieldEnum] - - -export const SupportTicketReplyScalarFieldEnum = { - id: 'id', - ticketId: 'ticketId', - userId: 'userId', - message: 'message', - isInternal: 'isInternal', - attachments: 'attachments', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type SupportTicketReplyScalarFieldEnum = (typeof SupportTicketReplyScalarFieldEnum)[keyof typeof SupportTicketReplyScalarFieldEnum] - - -export const DiscordWebhookScalarFieldEnum = { - id: 'id', - name: 'name', - webhookUrl: 'webhookUrl', - type: 'type', - scope: 'scope', - description: 'description', - userId: 'userId', - enabled: 'enabled', - testSuccessAt: 'testSuccessAt', - avatarUrl: 'avatarUrl', - metadata: 'metadata', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type DiscordWebhookScalarFieldEnum = (typeof DiscordWebhookScalarFieldEnum)[keyof typeof DiscordWebhookScalarFieldEnum] - - -export const ConfigScalarFieldEnum = { - id: 'id', - key: 'key', - value: 'value', - updatedAt: 'updatedAt' -} as const - -export type ConfigScalarFieldEnum = (typeof ConfigScalarFieldEnum)[keyof typeof ConfigScalarFieldEnum] - - -export const SortOrder = { - asc: 'asc', - desc: 'desc' -} as const - -export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] - - -export const NullableJsonNullValueInput = { - DbNull: DbNull, - JsonNull: JsonNull -} as const - -export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput] - - -export const QueryMode = { - default: 'default', - insensitive: 'insensitive' -} as const - -export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] - - -export const NullsOrder = { - first: 'first', - last: 'last' -} as const - -export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] - - -export const JsonNullValueFilter = { - DbNull: DbNull, - JsonNull: JsonNull, - AnyNull: AnyNull -} as const - -export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter] - - - -/** - * Field references - */ - - -/** - * Reference to a field of type 'String' - */ -export type StringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String'> - - - -/** - * Reference to a field of type 'String[]' - */ -export type ListStringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String[]'> - - - -/** - * Reference to a field of type 'Role[]' - */ -export type ListEnumRoleFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Role[]'> - - - -/** - * Reference to a field of type 'Role' - */ -export type EnumRoleFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Role'> - - - -/** - * Reference to a field of type 'Boolean' - */ -export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'> - - - -/** - * Reference to a field of type 'Int' - */ -export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int'> - - - -/** - * Reference to a field of type 'Int[]' - */ -export type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int[]'> - - - -/** - * Reference to a field of type 'DateTime' - */ -export type DateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime'> - - - -/** - * Reference to a field of type 'DateTime[]' - */ -export type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime[]'> - - - -/** - * Reference to a field of type 'Decimal' - */ -export type DecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal'> - - - -/** - * Reference to a field of type 'Decimal[]' - */ -export type ListDecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal[]'> - - - -/** - * Reference to a field of type 'BigInt' - */ -export type BigIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'BigInt'> - - - -/** - * Reference to a field of type 'BigInt[]' - */ -export type ListBigIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'BigInt[]'> - - - -/** - * Reference to a field of type 'ServerStatus' - */ -export type EnumServerStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ServerStatus'> - - - -/** - * Reference to a field of type 'ServerStatus[]' - */ -export type ListEnumServerStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'ServerStatus[]'> - - - -/** - * Reference to a field of type 'Json' - */ -export type JsonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Json'> - - - -/** - * Reference to a field of type 'QueryMode' - */ -export type EnumQueryModeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'QueryMode'> - - - -/** - * Reference to a field of type 'SyncStatus' - */ -export type EnumSyncStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'SyncStatus'> - - - -/** - * Reference to a field of type 'SyncStatus[]' - */ -export type ListEnumSyncStatusFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'SyncStatus[]'> - - - -/** - * Reference to a field of type 'DiscordWebhookType' - */ -export type EnumDiscordWebhookTypeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DiscordWebhookType'> - - - -/** - * Reference to a field of type 'DiscordWebhookType[]' - */ -export type ListEnumDiscordWebhookTypeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DiscordWebhookType[]'> - - - -/** - * Reference to a field of type 'DiscordWebhookScope' - */ -export type EnumDiscordWebhookScopeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DiscordWebhookScope'> - - - -/** - * Reference to a field of type 'DiscordWebhookScope[]' - */ -export type ListEnumDiscordWebhookScopeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DiscordWebhookScope[]'> - - - -/** - * Reference to a field of type 'Float' - */ -export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'> - - - -/** - * Reference to a field of type 'Float[]' - */ -export type ListFloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float[]'> - - -/** - * Batch Payload for updateMany & deleteMany & createMany - */ -export type BatchPayload = { - count: number -} - -export const defineExtension = runtime.Extensions.defineExtension as unknown as runtime.Types.Extensions.ExtendsHook<"define", TypeMapCb, runtime.Types.Extensions.DefaultArgs> -export type DefaultPrismaClient = PrismaClient -export type ErrorFormat = 'pretty' | 'colorless' | 'minimal' -export type PrismaClientOptions = ({ - /** - * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-pg`. - */ - adapter: runtime.SqlDriverAdapterFactory - accelerateUrl?: never -} | { - /** - * Prisma Accelerate URL allowing the client to connect through Accelerate instead of a direct database. - */ - accelerateUrl: string - adapter?: never -}) & { - /** - * @default "colorless" - */ - errorFormat?: ErrorFormat - /** - * @example - * ``` - * // Shorthand for `emit: 'stdout'` - * log: ['query', 'info', 'warn', 'error'] - * - * // Emit as events only - * log: [ - * { emit: 'event', level: 'query' }, - * { emit: 'event', level: 'info' }, - * { emit: 'event', level: 'warn' } - * { emit: 'event', level: 'error' } - * ] - * - * / Emit as events and log to stdout - * og: [ - * { emit: 'stdout', level: 'query' }, - * { emit: 'stdout', level: 'info' }, - * { emit: 'stdout', level: 'warn' } - * { emit: 'stdout', level: 'error' } - * - * ``` - * Read more in our [docs](https://pris.ly/d/logging). - */ - log?: (LogLevel | LogDefinition)[] - /** - * The default values for transactionOptions - * maxWait ?= 2000 - * timeout ?= 5000 - */ - transactionOptions?: { - maxWait?: number - timeout?: number - isolationLevel?: TransactionIsolationLevel - } - /** - * Global configuration for omitting model fields by default. - * - * @example - * ``` - * const prisma = new PrismaClient({ - * omit: { - * user: { - * password: true - * } - * } - * }) - * ``` - */ - omit?: GlobalOmitConfig - /** - * SQL commenter plugins that add metadata to SQL queries as comments. - * Comments follow the sqlcommenter format: https://google.github.io/sqlcommenter/ - * - * @example - * ``` - * const prisma = new PrismaClient({ - * adapter, - * comments: [ - * traceContext(), - * queryInsights(), - * ], - * }) - * ``` - */ - comments?: runtime.SqlCommenterPlugin[] -} -export type GlobalOmitConfig = { - user?: Prisma.UserOmit - session?: Prisma.SessionOmit - verificationToken?: Prisma.VerificationTokenOmit - location?: Prisma.LocationOmit - node?: Prisma.NodeOmit - allocation?: Prisma.AllocationOmit - nest?: Prisma.NestOmit - egg?: Prisma.EggOmit - eggProperty?: Prisma.EggPropertyOmit - eggVariable?: Prisma.EggVariableOmit - server?: Prisma.ServerOmit - serverProperty?: Prisma.ServerPropertyOmit - serverVariable?: Prisma.ServerVariableOmit - serverDatabase?: Prisma.ServerDatabaseOmit - serverBackup?: Prisma.ServerBackupOmit - syncLog?: Prisma.SyncLogOmit - product?: Prisma.ProductOmit - invoice?: Prisma.InvoiceOmit - invoiceItem?: Prisma.InvoiceItemOmit - payment?: Prisma.PaymentOmit - supportTicket?: Prisma.SupportTicketOmit - supportTicketReply?: Prisma.SupportTicketReplyOmit - discordWebhook?: Prisma.DiscordWebhookOmit - config?: Prisma.ConfigOmit -} - -/* Types for Logging */ -export type LogLevel = 'info' | 'query' | 'warn' | 'error' -export type LogDefinition = { - level: LogLevel - emit: 'stdout' | 'event' -} - -export type CheckIsLogLevel = T extends LogLevel ? T : never; - -export type GetLogType = CheckIsLogLevel< - T extends LogDefinition ? T['level'] : T ->; - -export type GetEvents = T extends Array - ? GetLogType - : never; - -export type QueryEvent = { - timestamp: Date - query: string - params: string - duration: number - target: string -} - -export type LogEvent = { - timestamp: Date - message: string - target: string -} -/* End Types for Logging */ - - -export type PrismaAction = - | 'findUnique' - | 'findUniqueOrThrow' - | 'findMany' - | 'findFirst' - | 'findFirstOrThrow' - | 'create' - | 'createMany' - | 'createManyAndReturn' - | 'update' - | 'updateMany' - | 'updateManyAndReturn' - | 'upsert' - | 'delete' - | 'deleteMany' - | 'executeRaw' - | 'queryRaw' - | 'aggregate' - | 'count' - | 'runCommandRaw' - | 'findRaw' - | 'groupBy' - -/** - * `PrismaClient` proxy available in interactive transactions. - */ -export type TransactionClient = Omit - diff --git a/prisma/generated/prisma/internal/prismaNamespaceBrowser.ts b/prisma/generated/prisma/internal/prismaNamespaceBrowser.ts deleted file mode 100644 index 80de0b1..0000000 --- a/prisma/generated/prisma/internal/prismaNamespaceBrowser.ts +++ /dev/null @@ -1,522 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * WARNING: This is an internal file that is subject to change! - * - * 🛑 Under no circumstances should you import this file directly! 🛑 - * - * All exports from this file are wrapped under a `Prisma` namespace object in the browser.ts file. - * While this enables partial backward compatibility, it is not part of the stable public API. - * - * If you are looking for your Models, Enums, and Input Types, please import them from the respective - * model files in the `model` directory! - */ - -import * as runtime from "@prisma/client/runtime/index-browser" - -export type * from '../models' -export type * from './prismaNamespace' - -export const Decimal = runtime.Decimal - - -export const NullTypes = { - DbNull: runtime.NullTypes.DbNull as (new (secret: never) => typeof runtime.DbNull), - JsonNull: runtime.NullTypes.JsonNull as (new (secret: never) => typeof runtime.JsonNull), - AnyNull: runtime.NullTypes.AnyNull as (new (secret: never) => typeof runtime.AnyNull), -} -/** - * Helper for filtering JSON entries that have `null` on the database (empty on the db) - * - * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field - */ -export const DbNull = runtime.DbNull - -/** - * Helper for filtering JSON entries that have JSON `null` values (not empty on the db) - * - * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field - */ -export const JsonNull = runtime.JsonNull - -/** - * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull` - * - * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field - */ -export const AnyNull = runtime.AnyNull - - -export const ModelName = { - User: 'User', - Session: 'Session', - VerificationToken: 'VerificationToken', - Location: 'Location', - Node: 'Node', - Allocation: 'Allocation', - Nest: 'Nest', - Egg: 'Egg', - EggProperty: 'EggProperty', - EggVariable: 'EggVariable', - Server: 'Server', - ServerProperty: 'ServerProperty', - ServerVariable: 'ServerVariable', - ServerDatabase: 'ServerDatabase', - ServerBackup: 'ServerBackup', - SyncLog: 'SyncLog', - Product: 'Product', - Invoice: 'Invoice', - InvoiceItem: 'InvoiceItem', - Payment: 'Payment', - SupportTicket: 'SupportTicket', - SupportTicketReply: 'SupportTicketReply', - DiscordWebhook: 'DiscordWebhook', - Config: 'Config' -} as const - -export type ModelName = (typeof ModelName)[keyof typeof ModelName] - -/* - * Enums - */ - -export const TransactionIsolationLevel = { - ReadUncommitted: 'ReadUncommitted', - ReadCommitted: 'ReadCommitted', - RepeatableRead: 'RepeatableRead', - Serializable: 'Serializable' -} as const - -export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel] - - -export const UserScalarFieldEnum = { - id: 'id', - email: 'email', - password: 'password', - username: 'username', - firstName: 'firstName', - lastName: 'lastName', - roles: 'roles', - isPterodactylAdmin: 'isPterodactylAdmin', - isVirtfusionAdmin: 'isVirtfusionAdmin', - isSystemAdmin: 'isSystemAdmin', - pterodactylId: 'pterodactylId', - virtfusionId: 'virtfusionId', - isMigrated: 'isMigrated', - emailVerified: 'emailVerified', - isActive: 'isActive', - avatarUrl: 'avatarUrl', - companyName: 'companyName', - phoneNumber: 'phoneNumber', - billingEmail: 'billingEmail', - accountBalance: 'accountBalance', - accountStatus: 'accountStatus', - createdAt: 'createdAt', - updatedAt: 'updatedAt', - lastLoginAt: 'lastLoginAt', - lastSyncedAt: 'lastSyncedAt' -} as const - -export type UserScalarFieldEnum = (typeof UserScalarFieldEnum)[keyof typeof UserScalarFieldEnum] - - -export const SessionScalarFieldEnum = { - id: 'id', - sessionToken: 'sessionToken', - userId: 'userId', - expires: 'expires', - createdAt: 'createdAt' -} as const - -export type SessionScalarFieldEnum = (typeof SessionScalarFieldEnum)[keyof typeof SessionScalarFieldEnum] - - -export const VerificationTokenScalarFieldEnum = { - identifier: 'identifier', - token: 'token', - expires: 'expires', - type: 'type' -} as const - -export type VerificationTokenScalarFieldEnum = (typeof VerificationTokenScalarFieldEnum)[keyof typeof VerificationTokenScalarFieldEnum] - - -export const LocationScalarFieldEnum = { - id: 'id', - shortCode: 'shortCode', - description: 'description', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type LocationScalarFieldEnum = (typeof LocationScalarFieldEnum)[keyof typeof LocationScalarFieldEnum] - - -export const NodeScalarFieldEnum = { - id: 'id', - uuid: 'uuid', - name: 'name', - description: 'description', - fqdn: 'fqdn', - scheme: 'scheme', - behindProxy: 'behindProxy', - panelType: 'panelType', - memory: 'memory', - memoryOverallocate: 'memoryOverallocate', - disk: 'disk', - diskOverallocate: 'diskOverallocate', - isPublic: 'isPublic', - isMaintenanceMode: 'isMaintenanceMode', - daemonListenPort: 'daemonListenPort', - daemonSftpPort: 'daemonSftpPort', - daemonBase: 'daemonBase', - locationId: 'locationId', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type NodeScalarFieldEnum = (typeof NodeScalarFieldEnum)[keyof typeof NodeScalarFieldEnum] - - -export const AllocationScalarFieldEnum = { - id: 'id', - ip: 'ip', - port: 'port', - alias: 'alias', - notes: 'notes', - isAssigned: 'isAssigned', - nodeId: 'nodeId', - serverId: 'serverId', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type AllocationScalarFieldEnum = (typeof AllocationScalarFieldEnum)[keyof typeof AllocationScalarFieldEnum] - - -export const NestScalarFieldEnum = { - id: 'id', - uuid: 'uuid', - name: 'name', - description: 'description', - author: 'author', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type NestScalarFieldEnum = (typeof NestScalarFieldEnum)[keyof typeof NestScalarFieldEnum] - - -export const EggScalarFieldEnum = { - id: 'id', - uuid: 'uuid', - name: 'name', - description: 'description', - author: 'author', - panelType: 'panelType', - nestId: 'nestId', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type EggScalarFieldEnum = (typeof EggScalarFieldEnum)[keyof typeof EggScalarFieldEnum] - - -export const EggPropertyScalarFieldEnum = { - id: 'id', - eggId: 'eggId', - key: 'key', - value: 'value', - panelType: 'panelType', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type EggPropertyScalarFieldEnum = (typeof EggPropertyScalarFieldEnum)[keyof typeof EggPropertyScalarFieldEnum] - - -export const EggVariableScalarFieldEnum = { - id: 'id', - eggId: 'eggId', - name: 'name', - description: 'description', - envVariable: 'envVariable', - defaultValue: 'defaultValue', - userViewable: 'userViewable', - userEditable: 'userEditable', - rules: 'rules', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type EggVariableScalarFieldEnum = (typeof EggVariableScalarFieldEnum)[keyof typeof EggVariableScalarFieldEnum] - - -export const ServerScalarFieldEnum = { - id: 'id', - pterodactylId: 'pterodactylId', - virtfusionId: 'virtfusionId', - uuid: 'uuid', - uuidShort: 'uuidShort', - externalId: 'externalId', - panelType: 'panelType', - name: 'name', - description: 'description', - status: 'status', - isSuspended: 'isSuspended', - productId: 'productId', - ownerId: 'ownerId', - nodeId: 'nodeId', - eggId: 'eggId', - createdAt: 'createdAt', - updatedAt: 'updatedAt', - installedAt: 'installedAt', - lastSyncedAt: 'lastSyncedAt' -} as const - -export type ServerScalarFieldEnum = (typeof ServerScalarFieldEnum)[keyof typeof ServerScalarFieldEnum] - - -export const ServerPropertyScalarFieldEnum = { - id: 'id', - serverId: 'serverId', - key: 'key', - value: 'value', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type ServerPropertyScalarFieldEnum = (typeof ServerPropertyScalarFieldEnum)[keyof typeof ServerPropertyScalarFieldEnum] - - -export const ServerVariableScalarFieldEnum = { - id: 'id', - serverId: 'serverId', - variableId: 'variableId', - value: 'value', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type ServerVariableScalarFieldEnum = (typeof ServerVariableScalarFieldEnum)[keyof typeof ServerVariableScalarFieldEnum] - - -export const ServerDatabaseScalarFieldEnum = { - id: 'id', - serverId: 'serverId', - name: 'name', - username: 'username', - host: 'host', - port: 'port', - maxConnections: 'maxConnections', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type ServerDatabaseScalarFieldEnum = (typeof ServerDatabaseScalarFieldEnum)[keyof typeof ServerDatabaseScalarFieldEnum] - - -export const ServerBackupScalarFieldEnum = { - id: 'id', - serverId: 'serverId', - name: 'name', - ignoredFiles: 'ignoredFiles', - sha256Hash: 'sha256Hash', - bytes: 'bytes', - isSuccessful: 'isSuccessful', - isLocked: 'isLocked', - completedAt: 'completedAt', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type ServerBackupScalarFieldEnum = (typeof ServerBackupScalarFieldEnum)[keyof typeof ServerBackupScalarFieldEnum] - - -export const SyncLogScalarFieldEnum = { - id: 'id', - type: 'type', - status: 'status', - itemsTotal: 'itemsTotal', - itemsSynced: 'itemsSynced', - itemsFailed: 'itemsFailed', - error: 'error', - metadata: 'metadata', - startedAt: 'startedAt', - completedAt: 'completedAt' -} as const - -export type SyncLogScalarFieldEnum = (typeof SyncLogScalarFieldEnum)[keyof typeof SyncLogScalarFieldEnum] - - -export const ProductScalarFieldEnum = { - id: 'id', - name: 'name', - description: 'description', - category: 'category', - basePrice: 'basePrice', - setupFee: 'setupFee', - currency: 'currency', - billingCycle: 'billingCycle', - isActive: 'isActive', - displayOrder: 'displayOrder', - creatorId: 'creatorId', - metadata: 'metadata', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type ProductScalarFieldEnum = (typeof ProductScalarFieldEnum)[keyof typeof ProductScalarFieldEnum] - - -export const InvoiceScalarFieldEnum = { - id: 'id', - invoiceNumber: 'invoiceNumber', - userId: 'userId', - subtotal: 'subtotal', - tax: 'tax', - total: 'total', - paid: 'paid', - status: 'status', - dueDate: 'dueDate', - paidDate: 'paidDate', - notes: 'notes', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type InvoiceScalarFieldEnum = (typeof InvoiceScalarFieldEnum)[keyof typeof InvoiceScalarFieldEnum] - - -export const InvoiceItemScalarFieldEnum = { - id: 'id', - invoiceId: 'invoiceId', - productId: 'productId', - description: 'description', - quantity: 'quantity', - unitPrice: 'unitPrice', - total: 'total' -} as const - -export type InvoiceItemScalarFieldEnum = (typeof InvoiceItemScalarFieldEnum)[keyof typeof InvoiceItemScalarFieldEnum] - - -export const PaymentScalarFieldEnum = { - id: 'id', - invoiceId: 'invoiceId', - amount: 'amount', - method: 'method', - reference: 'reference', - status: 'status', - notes: 'notes', - createdAt: 'createdAt' -} as const - -export type PaymentScalarFieldEnum = (typeof PaymentScalarFieldEnum)[keyof typeof PaymentScalarFieldEnum] - - -export const SupportTicketScalarFieldEnum = { - id: 'id', - ticketNumber: 'ticketNumber', - userId: 'userId', - serverId: 'serverId', - subject: 'subject', - category: 'category', - priority: 'priority', - status: 'status', - assignedToId: 'assignedToId', - createdAt: 'createdAt', - updatedAt: 'updatedAt', - resolvedAt: 'resolvedAt' -} as const - -export type SupportTicketScalarFieldEnum = (typeof SupportTicketScalarFieldEnum)[keyof typeof SupportTicketScalarFieldEnum] - - -export const SupportTicketReplyScalarFieldEnum = { - id: 'id', - ticketId: 'ticketId', - userId: 'userId', - message: 'message', - isInternal: 'isInternal', - attachments: 'attachments', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type SupportTicketReplyScalarFieldEnum = (typeof SupportTicketReplyScalarFieldEnum)[keyof typeof SupportTicketReplyScalarFieldEnum] - - -export const DiscordWebhookScalarFieldEnum = { - id: 'id', - name: 'name', - webhookUrl: 'webhookUrl', - type: 'type', - scope: 'scope', - description: 'description', - userId: 'userId', - enabled: 'enabled', - testSuccessAt: 'testSuccessAt', - avatarUrl: 'avatarUrl', - metadata: 'metadata', - createdAt: 'createdAt', - updatedAt: 'updatedAt' -} as const - -export type DiscordWebhookScalarFieldEnum = (typeof DiscordWebhookScalarFieldEnum)[keyof typeof DiscordWebhookScalarFieldEnum] - - -export const ConfigScalarFieldEnum = { - id: 'id', - key: 'key', - value: 'value', - updatedAt: 'updatedAt' -} as const - -export type ConfigScalarFieldEnum = (typeof ConfigScalarFieldEnum)[keyof typeof ConfigScalarFieldEnum] - - -export const SortOrder = { - asc: 'asc', - desc: 'desc' -} as const - -export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] - - -export const NullableJsonNullValueInput = { - DbNull: 'DbNull', - JsonNull: 'JsonNull' -} as const - -export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput] - - -export const QueryMode = { - default: 'default', - insensitive: 'insensitive' -} as const - -export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] - - -export const NullsOrder = { - first: 'first', - last: 'last' -} as const - -export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] - - -export const JsonNullValueFilter = { - DbNull: 'DbNull', - JsonNull: 'JsonNull', - AnyNull: 'AnyNull' -} as const - -export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter] - diff --git a/prisma/generated/prisma/models.ts b/prisma/generated/prisma/models.ts deleted file mode 100644 index 7b55f1d..0000000 --- a/prisma/generated/prisma/models.ts +++ /dev/null @@ -1,35 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This is a barrel export file for all models and their related types. - * - * 🟢 You can import this file directly. - */ -export type * from './models/User' -export type * from './models/Session' -export type * from './models/VerificationToken' -export type * from './models/Location' -export type * from './models/Node' -export type * from './models/Allocation' -export type * from './models/Nest' -export type * from './models/Egg' -export type * from './models/EggProperty' -export type * from './models/EggVariable' -export type * from './models/Server' -export type * from './models/ServerProperty' -export type * from './models/ServerVariable' -export type * from './models/ServerDatabase' -export type * from './models/ServerBackup' -export type * from './models/SyncLog' -export type * from './models/Product' -export type * from './models/Invoice' -export type * from './models/InvoiceItem' -export type * from './models/Payment' -export type * from './models/SupportTicket' -export type * from './models/SupportTicketReply' -export type * from './models/DiscordWebhook' -export type * from './models/Config' -export type * from './commonInputTypes' \ No newline at end of file diff --git a/prisma/generated/prisma/models/Allocation.ts b/prisma/generated/prisma/models/Allocation.ts deleted file mode 100644 index 7250c49..0000000 --- a/prisma/generated/prisma/models/Allocation.ts +++ /dev/null @@ -1,1746 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `Allocation` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model Allocation - * - */ -export type AllocationModel = runtime.Types.Result.DefaultSelection - -export type AggregateAllocation = { - _count: AllocationCountAggregateOutputType | null - _avg: AllocationAvgAggregateOutputType | null - _sum: AllocationSumAggregateOutputType | null - _min: AllocationMinAggregateOutputType | null - _max: AllocationMaxAggregateOutputType | null -} - -export type AllocationAvgAggregateOutputType = { - id: number | null - port: number | null - nodeId: number | null -} - -export type AllocationSumAggregateOutputType = { - id: number | null - port: number | null - nodeId: number | null -} - -export type AllocationMinAggregateOutputType = { - id: number | null - ip: string | null - port: number | null - alias: string | null - notes: string | null - isAssigned: boolean | null - nodeId: number | null - serverId: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type AllocationMaxAggregateOutputType = { - id: number | null - ip: string | null - port: number | null - alias: string | null - notes: string | null - isAssigned: boolean | null - nodeId: number | null - serverId: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type AllocationCountAggregateOutputType = { - id: number - ip: number - port: number - alias: number - notes: number - isAssigned: number - nodeId: number - serverId: number - createdAt: number - updatedAt: number - _all: number -} - - -export type AllocationAvgAggregateInputType = { - id?: true - port?: true - nodeId?: true -} - -export type AllocationSumAggregateInputType = { - id?: true - port?: true - nodeId?: true -} - -export type AllocationMinAggregateInputType = { - id?: true - ip?: true - port?: true - alias?: true - notes?: true - isAssigned?: true - nodeId?: true - serverId?: true - createdAt?: true - updatedAt?: true -} - -export type AllocationMaxAggregateInputType = { - id?: true - ip?: true - port?: true - alias?: true - notes?: true - isAssigned?: true - nodeId?: true - serverId?: true - createdAt?: true - updatedAt?: true -} - -export type AllocationCountAggregateInputType = { - id?: true - ip?: true - port?: true - alias?: true - notes?: true - isAssigned?: true - nodeId?: true - serverId?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type AllocationAggregateArgs = { - /** - * Filter which Allocation to aggregate. - */ - where?: Prisma.AllocationWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Allocations to fetch. - */ - orderBy?: Prisma.AllocationOrderByWithRelationInput | Prisma.AllocationOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.AllocationWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Allocations from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Allocations. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned Allocations - **/ - _count?: true | AllocationCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: AllocationAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: AllocationSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: AllocationMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: AllocationMaxAggregateInputType -} - -export type GetAllocationAggregateType = { - [P in keyof T & keyof AggregateAllocation]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type AllocationGroupByArgs = { - where?: Prisma.AllocationWhereInput - orderBy?: Prisma.AllocationOrderByWithAggregationInput | Prisma.AllocationOrderByWithAggregationInput[] - by: Prisma.AllocationScalarFieldEnum[] | Prisma.AllocationScalarFieldEnum - having?: Prisma.AllocationScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: AllocationCountAggregateInputType | true - _avg?: AllocationAvgAggregateInputType - _sum?: AllocationSumAggregateInputType - _min?: AllocationMinAggregateInputType - _max?: AllocationMaxAggregateInputType -} - -export type AllocationGroupByOutputType = { - id: number - ip: string - port: number - alias: string | null - notes: string | null - isAssigned: boolean - nodeId: number - serverId: string | null - createdAt: Date - updatedAt: Date - _count: AllocationCountAggregateOutputType | null - _avg: AllocationAvgAggregateOutputType | null - _sum: AllocationSumAggregateOutputType | null - _min: AllocationMinAggregateOutputType | null - _max: AllocationMaxAggregateOutputType | null -} - -type GetAllocationGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof AllocationGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type AllocationWhereInput = { - AND?: Prisma.AllocationWhereInput | Prisma.AllocationWhereInput[] - OR?: Prisma.AllocationWhereInput[] - NOT?: Prisma.AllocationWhereInput | Prisma.AllocationWhereInput[] - id?: Prisma.IntFilter<"Allocation"> | number - ip?: Prisma.StringFilter<"Allocation"> | string - port?: Prisma.IntFilter<"Allocation"> | number - alias?: Prisma.StringNullableFilter<"Allocation"> | string | null - notes?: Prisma.StringNullableFilter<"Allocation"> | string | null - isAssigned?: Prisma.BoolFilter<"Allocation"> | boolean - nodeId?: Prisma.IntFilter<"Allocation"> | number - serverId?: Prisma.StringNullableFilter<"Allocation"> | string | null - createdAt?: Prisma.DateTimeFilter<"Allocation"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Allocation"> | Date | string - node?: Prisma.XOR - server?: Prisma.XOR | null -} - -export type AllocationOrderByWithRelationInput = { - id?: Prisma.SortOrder - ip?: Prisma.SortOrder - port?: Prisma.SortOrder - alias?: Prisma.SortOrderInput | Prisma.SortOrder - notes?: Prisma.SortOrderInput | Prisma.SortOrder - isAssigned?: Prisma.SortOrder - nodeId?: Prisma.SortOrder - serverId?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - node?: Prisma.NodeOrderByWithRelationInput - server?: Prisma.ServerOrderByWithRelationInput -} - -export type AllocationWhereUniqueInput = Prisma.AtLeast<{ - id?: number - ip_port?: Prisma.AllocationIpPortCompoundUniqueInput - AND?: Prisma.AllocationWhereInput | Prisma.AllocationWhereInput[] - OR?: Prisma.AllocationWhereInput[] - NOT?: Prisma.AllocationWhereInput | Prisma.AllocationWhereInput[] - ip?: Prisma.StringFilter<"Allocation"> | string - port?: Prisma.IntFilter<"Allocation"> | number - alias?: Prisma.StringNullableFilter<"Allocation"> | string | null - notes?: Prisma.StringNullableFilter<"Allocation"> | string | null - isAssigned?: Prisma.BoolFilter<"Allocation"> | boolean - nodeId?: Prisma.IntFilter<"Allocation"> | number - serverId?: Prisma.StringNullableFilter<"Allocation"> | string | null - createdAt?: Prisma.DateTimeFilter<"Allocation"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Allocation"> | Date | string - node?: Prisma.XOR - server?: Prisma.XOR | null -}, "id" | "ip_port"> - -export type AllocationOrderByWithAggregationInput = { - id?: Prisma.SortOrder - ip?: Prisma.SortOrder - port?: Prisma.SortOrder - alias?: Prisma.SortOrderInput | Prisma.SortOrder - notes?: Prisma.SortOrderInput | Prisma.SortOrder - isAssigned?: Prisma.SortOrder - nodeId?: Prisma.SortOrder - serverId?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.AllocationCountOrderByAggregateInput - _avg?: Prisma.AllocationAvgOrderByAggregateInput - _max?: Prisma.AllocationMaxOrderByAggregateInput - _min?: Prisma.AllocationMinOrderByAggregateInput - _sum?: Prisma.AllocationSumOrderByAggregateInput -} - -export type AllocationScalarWhereWithAggregatesInput = { - AND?: Prisma.AllocationScalarWhereWithAggregatesInput | Prisma.AllocationScalarWhereWithAggregatesInput[] - OR?: Prisma.AllocationScalarWhereWithAggregatesInput[] - NOT?: Prisma.AllocationScalarWhereWithAggregatesInput | Prisma.AllocationScalarWhereWithAggregatesInput[] - id?: Prisma.IntWithAggregatesFilter<"Allocation"> | number - ip?: Prisma.StringWithAggregatesFilter<"Allocation"> | string - port?: Prisma.IntWithAggregatesFilter<"Allocation"> | number - alias?: Prisma.StringNullableWithAggregatesFilter<"Allocation"> | string | null - notes?: Prisma.StringNullableWithAggregatesFilter<"Allocation"> | string | null - isAssigned?: Prisma.BoolWithAggregatesFilter<"Allocation"> | boolean - nodeId?: Prisma.IntWithAggregatesFilter<"Allocation"> | number - serverId?: Prisma.StringNullableWithAggregatesFilter<"Allocation"> | string | null - createdAt?: Prisma.DateTimeWithAggregatesFilter<"Allocation"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Allocation"> | Date | string -} - -export type AllocationCreateInput = { - id: number - ip: string - port: number - alias?: string | null - notes?: string | null - isAssigned?: boolean - createdAt?: Date | string - updatedAt?: Date | string - node: Prisma.NodeCreateNestedOneWithoutAllocationsInput - server?: Prisma.ServerCreateNestedOneWithoutAllocationsInput -} - -export type AllocationUncheckedCreateInput = { - id: number - ip: string - port: number - alias?: string | null - notes?: string | null - isAssigned?: boolean - nodeId: number - serverId?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type AllocationUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - ip?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - alias?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - isAssigned?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - node?: Prisma.NodeUpdateOneRequiredWithoutAllocationsNestedInput - server?: Prisma.ServerUpdateOneWithoutAllocationsNestedInput -} - -export type AllocationUncheckedUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - ip?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - alias?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - isAssigned?: Prisma.BoolFieldUpdateOperationsInput | boolean - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - serverId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type AllocationCreateManyInput = { - id: number - ip: string - port: number - alias?: string | null - notes?: string | null - isAssigned?: boolean - nodeId: number - serverId?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type AllocationUpdateManyMutationInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - ip?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - alias?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - isAssigned?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type AllocationUncheckedUpdateManyInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - ip?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - alias?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - isAssigned?: Prisma.BoolFieldUpdateOperationsInput | boolean - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - serverId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type AllocationListRelationFilter = { - every?: Prisma.AllocationWhereInput - some?: Prisma.AllocationWhereInput - none?: Prisma.AllocationWhereInput -} - -export type AllocationOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type AllocationIpPortCompoundUniqueInput = { - ip: string - port: number -} - -export type AllocationCountOrderByAggregateInput = { - id?: Prisma.SortOrder - ip?: Prisma.SortOrder - port?: Prisma.SortOrder - alias?: Prisma.SortOrder - notes?: Prisma.SortOrder - isAssigned?: Prisma.SortOrder - nodeId?: Prisma.SortOrder - serverId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type AllocationAvgOrderByAggregateInput = { - id?: Prisma.SortOrder - port?: Prisma.SortOrder - nodeId?: Prisma.SortOrder -} - -export type AllocationMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - ip?: Prisma.SortOrder - port?: Prisma.SortOrder - alias?: Prisma.SortOrder - notes?: Prisma.SortOrder - isAssigned?: Prisma.SortOrder - nodeId?: Prisma.SortOrder - serverId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type AllocationMinOrderByAggregateInput = { - id?: Prisma.SortOrder - ip?: Prisma.SortOrder - port?: Prisma.SortOrder - alias?: Prisma.SortOrder - notes?: Prisma.SortOrder - isAssigned?: Prisma.SortOrder - nodeId?: Prisma.SortOrder - serverId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type AllocationSumOrderByAggregateInput = { - id?: Prisma.SortOrder - port?: Prisma.SortOrder - nodeId?: Prisma.SortOrder -} - -export type AllocationCreateNestedManyWithoutNodeInput = { - create?: Prisma.XOR | Prisma.AllocationCreateWithoutNodeInput[] | Prisma.AllocationUncheckedCreateWithoutNodeInput[] - connectOrCreate?: Prisma.AllocationCreateOrConnectWithoutNodeInput | Prisma.AllocationCreateOrConnectWithoutNodeInput[] - createMany?: Prisma.AllocationCreateManyNodeInputEnvelope - connect?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] -} - -export type AllocationUncheckedCreateNestedManyWithoutNodeInput = { - create?: Prisma.XOR | Prisma.AllocationCreateWithoutNodeInput[] | Prisma.AllocationUncheckedCreateWithoutNodeInput[] - connectOrCreate?: Prisma.AllocationCreateOrConnectWithoutNodeInput | Prisma.AllocationCreateOrConnectWithoutNodeInput[] - createMany?: Prisma.AllocationCreateManyNodeInputEnvelope - connect?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] -} - -export type AllocationUpdateManyWithoutNodeNestedInput = { - create?: Prisma.XOR | Prisma.AllocationCreateWithoutNodeInput[] | Prisma.AllocationUncheckedCreateWithoutNodeInput[] - connectOrCreate?: Prisma.AllocationCreateOrConnectWithoutNodeInput | Prisma.AllocationCreateOrConnectWithoutNodeInput[] - upsert?: Prisma.AllocationUpsertWithWhereUniqueWithoutNodeInput | Prisma.AllocationUpsertWithWhereUniqueWithoutNodeInput[] - createMany?: Prisma.AllocationCreateManyNodeInputEnvelope - set?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - disconnect?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - delete?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - connect?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - update?: Prisma.AllocationUpdateWithWhereUniqueWithoutNodeInput | Prisma.AllocationUpdateWithWhereUniqueWithoutNodeInput[] - updateMany?: Prisma.AllocationUpdateManyWithWhereWithoutNodeInput | Prisma.AllocationUpdateManyWithWhereWithoutNodeInput[] - deleteMany?: Prisma.AllocationScalarWhereInput | Prisma.AllocationScalarWhereInput[] -} - -export type AllocationUncheckedUpdateManyWithoutNodeNestedInput = { - create?: Prisma.XOR | Prisma.AllocationCreateWithoutNodeInput[] | Prisma.AllocationUncheckedCreateWithoutNodeInput[] - connectOrCreate?: Prisma.AllocationCreateOrConnectWithoutNodeInput | Prisma.AllocationCreateOrConnectWithoutNodeInput[] - upsert?: Prisma.AllocationUpsertWithWhereUniqueWithoutNodeInput | Prisma.AllocationUpsertWithWhereUniqueWithoutNodeInput[] - createMany?: Prisma.AllocationCreateManyNodeInputEnvelope - set?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - disconnect?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - delete?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - connect?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - update?: Prisma.AllocationUpdateWithWhereUniqueWithoutNodeInput | Prisma.AllocationUpdateWithWhereUniqueWithoutNodeInput[] - updateMany?: Prisma.AllocationUpdateManyWithWhereWithoutNodeInput | Prisma.AllocationUpdateManyWithWhereWithoutNodeInput[] - deleteMany?: Prisma.AllocationScalarWhereInput | Prisma.AllocationScalarWhereInput[] -} - -export type AllocationCreateNestedManyWithoutServerInput = { - create?: Prisma.XOR | Prisma.AllocationCreateWithoutServerInput[] | Prisma.AllocationUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.AllocationCreateOrConnectWithoutServerInput | Prisma.AllocationCreateOrConnectWithoutServerInput[] - createMany?: Prisma.AllocationCreateManyServerInputEnvelope - connect?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] -} - -export type AllocationUncheckedCreateNestedManyWithoutServerInput = { - create?: Prisma.XOR | Prisma.AllocationCreateWithoutServerInput[] | Prisma.AllocationUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.AllocationCreateOrConnectWithoutServerInput | Prisma.AllocationCreateOrConnectWithoutServerInput[] - createMany?: Prisma.AllocationCreateManyServerInputEnvelope - connect?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] -} - -export type AllocationUpdateManyWithoutServerNestedInput = { - create?: Prisma.XOR | Prisma.AllocationCreateWithoutServerInput[] | Prisma.AllocationUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.AllocationCreateOrConnectWithoutServerInput | Prisma.AllocationCreateOrConnectWithoutServerInput[] - upsert?: Prisma.AllocationUpsertWithWhereUniqueWithoutServerInput | Prisma.AllocationUpsertWithWhereUniqueWithoutServerInput[] - createMany?: Prisma.AllocationCreateManyServerInputEnvelope - set?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - disconnect?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - delete?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - connect?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - update?: Prisma.AllocationUpdateWithWhereUniqueWithoutServerInput | Prisma.AllocationUpdateWithWhereUniqueWithoutServerInput[] - updateMany?: Prisma.AllocationUpdateManyWithWhereWithoutServerInput | Prisma.AllocationUpdateManyWithWhereWithoutServerInput[] - deleteMany?: Prisma.AllocationScalarWhereInput | Prisma.AllocationScalarWhereInput[] -} - -export type AllocationUncheckedUpdateManyWithoutServerNestedInput = { - create?: Prisma.XOR | Prisma.AllocationCreateWithoutServerInput[] | Prisma.AllocationUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.AllocationCreateOrConnectWithoutServerInput | Prisma.AllocationCreateOrConnectWithoutServerInput[] - upsert?: Prisma.AllocationUpsertWithWhereUniqueWithoutServerInput | Prisma.AllocationUpsertWithWhereUniqueWithoutServerInput[] - createMany?: Prisma.AllocationCreateManyServerInputEnvelope - set?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - disconnect?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - delete?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - connect?: Prisma.AllocationWhereUniqueInput | Prisma.AllocationWhereUniqueInput[] - update?: Prisma.AllocationUpdateWithWhereUniqueWithoutServerInput | Prisma.AllocationUpdateWithWhereUniqueWithoutServerInput[] - updateMany?: Prisma.AllocationUpdateManyWithWhereWithoutServerInput | Prisma.AllocationUpdateManyWithWhereWithoutServerInput[] - deleteMany?: Prisma.AllocationScalarWhereInput | Prisma.AllocationScalarWhereInput[] -} - -export type AllocationCreateWithoutNodeInput = { - id: number - ip: string - port: number - alias?: string | null - notes?: string | null - isAssigned?: boolean - createdAt?: Date | string - updatedAt?: Date | string - server?: Prisma.ServerCreateNestedOneWithoutAllocationsInput -} - -export type AllocationUncheckedCreateWithoutNodeInput = { - id: number - ip: string - port: number - alias?: string | null - notes?: string | null - isAssigned?: boolean - serverId?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type AllocationCreateOrConnectWithoutNodeInput = { - where: Prisma.AllocationWhereUniqueInput - create: Prisma.XOR -} - -export type AllocationCreateManyNodeInputEnvelope = { - data: Prisma.AllocationCreateManyNodeInput | Prisma.AllocationCreateManyNodeInput[] - skipDuplicates?: boolean -} - -export type AllocationUpsertWithWhereUniqueWithoutNodeInput = { - where: Prisma.AllocationWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type AllocationUpdateWithWhereUniqueWithoutNodeInput = { - where: Prisma.AllocationWhereUniqueInput - data: Prisma.XOR -} - -export type AllocationUpdateManyWithWhereWithoutNodeInput = { - where: Prisma.AllocationScalarWhereInput - data: Prisma.XOR -} - -export type AllocationScalarWhereInput = { - AND?: Prisma.AllocationScalarWhereInput | Prisma.AllocationScalarWhereInput[] - OR?: Prisma.AllocationScalarWhereInput[] - NOT?: Prisma.AllocationScalarWhereInput | Prisma.AllocationScalarWhereInput[] - id?: Prisma.IntFilter<"Allocation"> | number - ip?: Prisma.StringFilter<"Allocation"> | string - port?: Prisma.IntFilter<"Allocation"> | number - alias?: Prisma.StringNullableFilter<"Allocation"> | string | null - notes?: Prisma.StringNullableFilter<"Allocation"> | string | null - isAssigned?: Prisma.BoolFilter<"Allocation"> | boolean - nodeId?: Prisma.IntFilter<"Allocation"> | number - serverId?: Prisma.StringNullableFilter<"Allocation"> | string | null - createdAt?: Prisma.DateTimeFilter<"Allocation"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Allocation"> | Date | string -} - -export type AllocationCreateWithoutServerInput = { - id: number - ip: string - port: number - alias?: string | null - notes?: string | null - isAssigned?: boolean - createdAt?: Date | string - updatedAt?: Date | string - node: Prisma.NodeCreateNestedOneWithoutAllocationsInput -} - -export type AllocationUncheckedCreateWithoutServerInput = { - id: number - ip: string - port: number - alias?: string | null - notes?: string | null - isAssigned?: boolean - nodeId: number - createdAt?: Date | string - updatedAt?: Date | string -} - -export type AllocationCreateOrConnectWithoutServerInput = { - where: Prisma.AllocationWhereUniqueInput - create: Prisma.XOR -} - -export type AllocationCreateManyServerInputEnvelope = { - data: Prisma.AllocationCreateManyServerInput | Prisma.AllocationCreateManyServerInput[] - skipDuplicates?: boolean -} - -export type AllocationUpsertWithWhereUniqueWithoutServerInput = { - where: Prisma.AllocationWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type AllocationUpdateWithWhereUniqueWithoutServerInput = { - where: Prisma.AllocationWhereUniqueInput - data: Prisma.XOR -} - -export type AllocationUpdateManyWithWhereWithoutServerInput = { - where: Prisma.AllocationScalarWhereInput - data: Prisma.XOR -} - -export type AllocationCreateManyNodeInput = { - id: number - ip: string - port: number - alias?: string | null - notes?: string | null - isAssigned?: boolean - serverId?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type AllocationUpdateWithoutNodeInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - ip?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - alias?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - isAssigned?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - server?: Prisma.ServerUpdateOneWithoutAllocationsNestedInput -} - -export type AllocationUncheckedUpdateWithoutNodeInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - ip?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - alias?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - isAssigned?: Prisma.BoolFieldUpdateOperationsInput | boolean - serverId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type AllocationUncheckedUpdateManyWithoutNodeInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - ip?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - alias?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - isAssigned?: Prisma.BoolFieldUpdateOperationsInput | boolean - serverId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type AllocationCreateManyServerInput = { - id: number - ip: string - port: number - alias?: string | null - notes?: string | null - isAssigned?: boolean - nodeId: number - createdAt?: Date | string - updatedAt?: Date | string -} - -export type AllocationUpdateWithoutServerInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - ip?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - alias?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - isAssigned?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - node?: Prisma.NodeUpdateOneRequiredWithoutAllocationsNestedInput -} - -export type AllocationUncheckedUpdateWithoutServerInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - ip?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - alias?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - isAssigned?: Prisma.BoolFieldUpdateOperationsInput | boolean - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type AllocationUncheckedUpdateManyWithoutServerInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - ip?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - alias?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - isAssigned?: Prisma.BoolFieldUpdateOperationsInput | boolean - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - - -export type AllocationSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - ip?: boolean - port?: boolean - alias?: boolean - notes?: boolean - isAssigned?: boolean - nodeId?: boolean - serverId?: boolean - createdAt?: boolean - updatedAt?: boolean - node?: boolean | Prisma.NodeDefaultArgs - server?: boolean | Prisma.Allocation$serverArgs -}, ExtArgs["result"]["allocation"]> - -export type AllocationSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - ip?: boolean - port?: boolean - alias?: boolean - notes?: boolean - isAssigned?: boolean - nodeId?: boolean - serverId?: boolean - createdAt?: boolean - updatedAt?: boolean - node?: boolean | Prisma.NodeDefaultArgs - server?: boolean | Prisma.Allocation$serverArgs -}, ExtArgs["result"]["allocation"]> - -export type AllocationSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - ip?: boolean - port?: boolean - alias?: boolean - notes?: boolean - isAssigned?: boolean - nodeId?: boolean - serverId?: boolean - createdAt?: boolean - updatedAt?: boolean - node?: boolean | Prisma.NodeDefaultArgs - server?: boolean | Prisma.Allocation$serverArgs -}, ExtArgs["result"]["allocation"]> - -export type AllocationSelectScalar = { - id?: boolean - ip?: boolean - port?: boolean - alias?: boolean - notes?: boolean - isAssigned?: boolean - nodeId?: boolean - serverId?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type AllocationOmit = runtime.Types.Extensions.GetOmit<"id" | "ip" | "port" | "alias" | "notes" | "isAssigned" | "nodeId" | "serverId" | "createdAt" | "updatedAt", ExtArgs["result"]["allocation"]> -export type AllocationInclude = { - node?: boolean | Prisma.NodeDefaultArgs - server?: boolean | Prisma.Allocation$serverArgs -} -export type AllocationIncludeCreateManyAndReturn = { - node?: boolean | Prisma.NodeDefaultArgs - server?: boolean | Prisma.Allocation$serverArgs -} -export type AllocationIncludeUpdateManyAndReturn = { - node?: boolean | Prisma.NodeDefaultArgs - server?: boolean | Prisma.Allocation$serverArgs -} - -export type $AllocationPayload = { - name: "Allocation" - objects: { - node: Prisma.$NodePayload - server: Prisma.$ServerPayload | null - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: number - ip: string - port: number - alias: string | null - notes: string | null - isAssigned: boolean - nodeId: number - serverId: string | null - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["allocation"]> - composites: {} -} - -export type AllocationGetPayload = runtime.Types.Result.GetResult - -export type AllocationCountArgs = - Omit & { - select?: AllocationCountAggregateInputType | true - } - -export interface AllocationDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['Allocation'], meta: { name: 'Allocation' } } - /** - * Find zero or one Allocation that matches the filter. - * @param {AllocationFindUniqueArgs} args - Arguments to find a Allocation - * @example - * // Get one Allocation - * const allocation = await prisma.allocation.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__AllocationClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one Allocation that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {AllocationFindUniqueOrThrowArgs} args - Arguments to find a Allocation - * @example - * // Get one Allocation - * const allocation = await prisma.allocation.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__AllocationClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Allocation that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {AllocationFindFirstArgs} args - Arguments to find a Allocation - * @example - * // Get one Allocation - * const allocation = await prisma.allocation.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__AllocationClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Allocation that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {AllocationFindFirstOrThrowArgs} args - Arguments to find a Allocation - * @example - * // Get one Allocation - * const allocation = await prisma.allocation.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__AllocationClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more Allocations that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {AllocationFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all Allocations - * const allocations = await prisma.allocation.findMany() - * - * // Get first 10 Allocations - * const allocations = await prisma.allocation.findMany({ take: 10 }) - * - * // Only select the `id` - * const allocationWithIdOnly = await prisma.allocation.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a Allocation. - * @param {AllocationCreateArgs} args - Arguments to create a Allocation. - * @example - * // Create one Allocation - * const Allocation = await prisma.allocation.create({ - * data: { - * // ... data to create a Allocation - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__AllocationClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many Allocations. - * @param {AllocationCreateManyArgs} args - Arguments to create many Allocations. - * @example - * // Create many Allocations - * const allocation = await prisma.allocation.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many Allocations and returns the data saved in the database. - * @param {AllocationCreateManyAndReturnArgs} args - Arguments to create many Allocations. - * @example - * // Create many Allocations - * const allocation = await prisma.allocation.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many Allocations and only return the `id` - * const allocationWithIdOnly = await prisma.allocation.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a Allocation. - * @param {AllocationDeleteArgs} args - Arguments to delete one Allocation. - * @example - * // Delete one Allocation - * const Allocation = await prisma.allocation.delete({ - * where: { - * // ... filter to delete one Allocation - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__AllocationClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one Allocation. - * @param {AllocationUpdateArgs} args - Arguments to update one Allocation. - * @example - * // Update one Allocation - * const allocation = await prisma.allocation.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__AllocationClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more Allocations. - * @param {AllocationDeleteManyArgs} args - Arguments to filter Allocations to delete. - * @example - * // Delete a few Allocations - * const { count } = await prisma.allocation.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Allocations. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {AllocationUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many Allocations - * const allocation = await prisma.allocation.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Allocations and returns the data updated in the database. - * @param {AllocationUpdateManyAndReturnArgs} args - Arguments to update many Allocations. - * @example - * // Update many Allocations - * const allocation = await prisma.allocation.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more Allocations and only return the `id` - * const allocationWithIdOnly = await prisma.allocation.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one Allocation. - * @param {AllocationUpsertArgs} args - Arguments to update or create a Allocation. - * @example - * // Update or create a Allocation - * const allocation = await prisma.allocation.upsert({ - * create: { - * // ... data to create a Allocation - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the Allocation we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__AllocationClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of Allocations. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {AllocationCountArgs} args - Arguments to filter Allocations to count. - * @example - * // Count the number of Allocations - * const count = await prisma.allocation.count({ - * where: { - * // ... the filter for the Allocations we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a Allocation. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {AllocationAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by Allocation. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {AllocationGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends AllocationGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: AllocationGroupByArgs['orderBy'] } - : { orderBy?: AllocationGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetAllocationGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the Allocation model - */ -readonly fields: AllocationFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for Allocation. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__AllocationClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - node = {}>(args?: Prisma.Subset>): Prisma.Prisma__NodeClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - server = {}>(args?: Prisma.Subset>): Prisma.Prisma__ServerClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the Allocation model - */ -export interface AllocationFieldRefs { - readonly id: Prisma.FieldRef<"Allocation", 'Int'> - readonly ip: Prisma.FieldRef<"Allocation", 'String'> - readonly port: Prisma.FieldRef<"Allocation", 'Int'> - readonly alias: Prisma.FieldRef<"Allocation", 'String'> - readonly notes: Prisma.FieldRef<"Allocation", 'String'> - readonly isAssigned: Prisma.FieldRef<"Allocation", 'Boolean'> - readonly nodeId: Prisma.FieldRef<"Allocation", 'Int'> - readonly serverId: Prisma.FieldRef<"Allocation", 'String'> - readonly createdAt: Prisma.FieldRef<"Allocation", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"Allocation", 'DateTime'> -} - - -// Custom InputTypes -/** - * Allocation findUnique - */ -export type AllocationFindUniqueArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelect | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationInclude | null - /** - * Filter, which Allocation to fetch. - */ - where: Prisma.AllocationWhereUniqueInput -} - -/** - * Allocation findUniqueOrThrow - */ -export type AllocationFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelect | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationInclude | null - /** - * Filter, which Allocation to fetch. - */ - where: Prisma.AllocationWhereUniqueInput -} - -/** - * Allocation findFirst - */ -export type AllocationFindFirstArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelect | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationInclude | null - /** - * Filter, which Allocation to fetch. - */ - where?: Prisma.AllocationWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Allocations to fetch. - */ - orderBy?: Prisma.AllocationOrderByWithRelationInput | Prisma.AllocationOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Allocations. - */ - cursor?: Prisma.AllocationWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Allocations from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Allocations. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Allocations. - */ - distinct?: Prisma.AllocationScalarFieldEnum | Prisma.AllocationScalarFieldEnum[] -} - -/** - * Allocation findFirstOrThrow - */ -export type AllocationFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelect | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationInclude | null - /** - * Filter, which Allocation to fetch. - */ - where?: Prisma.AllocationWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Allocations to fetch. - */ - orderBy?: Prisma.AllocationOrderByWithRelationInput | Prisma.AllocationOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Allocations. - */ - cursor?: Prisma.AllocationWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Allocations from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Allocations. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Allocations. - */ - distinct?: Prisma.AllocationScalarFieldEnum | Prisma.AllocationScalarFieldEnum[] -} - -/** - * Allocation findMany - */ -export type AllocationFindManyArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelect | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationInclude | null - /** - * Filter, which Allocations to fetch. - */ - where?: Prisma.AllocationWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Allocations to fetch. - */ - orderBy?: Prisma.AllocationOrderByWithRelationInput | Prisma.AllocationOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing Allocations. - */ - cursor?: Prisma.AllocationWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Allocations from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Allocations. - */ - skip?: number - distinct?: Prisma.AllocationScalarFieldEnum | Prisma.AllocationScalarFieldEnum[] -} - -/** - * Allocation create - */ -export type AllocationCreateArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelect | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationInclude | null - /** - * The data needed to create a Allocation. - */ - data: Prisma.XOR -} - -/** - * Allocation createMany - */ -export type AllocationCreateManyArgs = { - /** - * The data used to create many Allocations. - */ - data: Prisma.AllocationCreateManyInput | Prisma.AllocationCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Allocation createManyAndReturn - */ -export type AllocationCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelectCreateManyAndReturn | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * The data used to create many Allocations. - */ - data: Prisma.AllocationCreateManyInput | Prisma.AllocationCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationIncludeCreateManyAndReturn | null -} - -/** - * Allocation update - */ -export type AllocationUpdateArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelect | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationInclude | null - /** - * The data needed to update a Allocation. - */ - data: Prisma.XOR - /** - * Choose, which Allocation to update. - */ - where: Prisma.AllocationWhereUniqueInput -} - -/** - * Allocation updateMany - */ -export type AllocationUpdateManyArgs = { - /** - * The data used to update Allocations. - */ - data: Prisma.XOR - /** - * Filter which Allocations to update - */ - where?: Prisma.AllocationWhereInput - /** - * Limit how many Allocations to update. - */ - limit?: number -} - -/** - * Allocation updateManyAndReturn - */ -export type AllocationUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * The data used to update Allocations. - */ - data: Prisma.XOR - /** - * Filter which Allocations to update - */ - where?: Prisma.AllocationWhereInput - /** - * Limit how many Allocations to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationIncludeUpdateManyAndReturn | null -} - -/** - * Allocation upsert - */ -export type AllocationUpsertArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelect | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationInclude | null - /** - * The filter to search for the Allocation to update in case it exists. - */ - where: Prisma.AllocationWhereUniqueInput - /** - * In case the Allocation found by the `where` argument doesn't exist, create a new Allocation with this data. - */ - create: Prisma.XOR - /** - * In case the Allocation was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * Allocation delete - */ -export type AllocationDeleteArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelect | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationInclude | null - /** - * Filter which Allocation to delete. - */ - where: Prisma.AllocationWhereUniqueInput -} - -/** - * Allocation deleteMany - */ -export type AllocationDeleteManyArgs = { - /** - * Filter which Allocations to delete - */ - where?: Prisma.AllocationWhereInput - /** - * Limit how many Allocations to delete. - */ - limit?: number -} - -/** - * Allocation.server - */ -export type Allocation$serverArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - where?: Prisma.ServerWhereInput -} - -/** - * Allocation without action - */ -export type AllocationDefaultArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelect | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationInclude | null -} diff --git a/prisma/generated/prisma/models/Config.ts b/prisma/generated/prisma/models/Config.ts deleted file mode 100644 index 85bfd23..0000000 --- a/prisma/generated/prisma/models/Config.ts +++ /dev/null @@ -1,1116 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `Config` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model Config - * - */ -export type ConfigModel = runtime.Types.Result.DefaultSelection - -export type AggregateConfig = { - _count: ConfigCountAggregateOutputType | null - _min: ConfigMinAggregateOutputType | null - _max: ConfigMaxAggregateOutputType | null -} - -export type ConfigMinAggregateOutputType = { - id: string | null - key: string | null - value: string | null - updatedAt: Date | null -} - -export type ConfigMaxAggregateOutputType = { - id: string | null - key: string | null - value: string | null - updatedAt: Date | null -} - -export type ConfigCountAggregateOutputType = { - id: number - key: number - value: number - updatedAt: number - _all: number -} - - -export type ConfigMinAggregateInputType = { - id?: true - key?: true - value?: true - updatedAt?: true -} - -export type ConfigMaxAggregateInputType = { - id?: true - key?: true - value?: true - updatedAt?: true -} - -export type ConfigCountAggregateInputType = { - id?: true - key?: true - value?: true - updatedAt?: true - _all?: true -} - -export type ConfigAggregateArgs = { - /** - * Filter which Config to aggregate. - */ - where?: Prisma.ConfigWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Configs to fetch. - */ - orderBy?: Prisma.ConfigOrderByWithRelationInput | Prisma.ConfigOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.ConfigWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Configs from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Configs. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned Configs - **/ - _count?: true | ConfigCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: ConfigMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: ConfigMaxAggregateInputType -} - -export type GetConfigAggregateType = { - [P in keyof T & keyof AggregateConfig]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type ConfigGroupByArgs = { - where?: Prisma.ConfigWhereInput - orderBy?: Prisma.ConfigOrderByWithAggregationInput | Prisma.ConfigOrderByWithAggregationInput[] - by: Prisma.ConfigScalarFieldEnum[] | Prisma.ConfigScalarFieldEnum - having?: Prisma.ConfigScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: ConfigCountAggregateInputType | true - _min?: ConfigMinAggregateInputType - _max?: ConfigMaxAggregateInputType -} - -export type ConfigGroupByOutputType = { - id: string - key: string - value: string - updatedAt: Date - _count: ConfigCountAggregateOutputType | null - _min: ConfigMinAggregateOutputType | null - _max: ConfigMaxAggregateOutputType | null -} - -type GetConfigGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof ConfigGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type ConfigWhereInput = { - AND?: Prisma.ConfigWhereInput | Prisma.ConfigWhereInput[] - OR?: Prisma.ConfigWhereInput[] - NOT?: Prisma.ConfigWhereInput | Prisma.ConfigWhereInput[] - id?: Prisma.StringFilter<"Config"> | string - key?: Prisma.StringFilter<"Config"> | string - value?: Prisma.StringFilter<"Config"> | string - updatedAt?: Prisma.DateTimeFilter<"Config"> | Date | string -} - -export type ConfigOrderByWithRelationInput = { - id?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ConfigWhereUniqueInput = Prisma.AtLeast<{ - id?: string - key?: string - AND?: Prisma.ConfigWhereInput | Prisma.ConfigWhereInput[] - OR?: Prisma.ConfigWhereInput[] - NOT?: Prisma.ConfigWhereInput | Prisma.ConfigWhereInput[] - value?: Prisma.StringFilter<"Config"> | string - updatedAt?: Prisma.DateTimeFilter<"Config"> | Date | string -}, "id" | "key"> - -export type ConfigOrderByWithAggregationInput = { - id?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.ConfigCountOrderByAggregateInput - _max?: Prisma.ConfigMaxOrderByAggregateInput - _min?: Prisma.ConfigMinOrderByAggregateInput -} - -export type ConfigScalarWhereWithAggregatesInput = { - AND?: Prisma.ConfigScalarWhereWithAggregatesInput | Prisma.ConfigScalarWhereWithAggregatesInput[] - OR?: Prisma.ConfigScalarWhereWithAggregatesInput[] - NOT?: Prisma.ConfigScalarWhereWithAggregatesInput | Prisma.ConfigScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"Config"> | string - key?: Prisma.StringWithAggregatesFilter<"Config"> | string - value?: Prisma.StringWithAggregatesFilter<"Config"> | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Config"> | Date | string -} - -export type ConfigCreateInput = { - id?: string - key: string - value: string - updatedAt?: Date | string -} - -export type ConfigUncheckedCreateInput = { - id?: string - key: string - value: string - updatedAt?: Date | string -} - -export type ConfigUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ConfigUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ConfigCreateManyInput = { - id?: string - key: string - value: string - updatedAt?: Date | string -} - -export type ConfigUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ConfigUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ConfigCountOrderByAggregateInput = { - id?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ConfigMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ConfigMinOrderByAggregateInput = { - id?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - - - -export type ConfigSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - key?: boolean - value?: boolean - updatedAt?: boolean -}, ExtArgs["result"]["config"]> - -export type ConfigSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - key?: boolean - value?: boolean - updatedAt?: boolean -}, ExtArgs["result"]["config"]> - -export type ConfigSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - key?: boolean - value?: boolean - updatedAt?: boolean -}, ExtArgs["result"]["config"]> - -export type ConfigSelectScalar = { - id?: boolean - key?: boolean - value?: boolean - updatedAt?: boolean -} - -export type ConfigOmit = runtime.Types.Extensions.GetOmit<"id" | "key" | "value" | "updatedAt", ExtArgs["result"]["config"]> - -export type $ConfigPayload = { - name: "Config" - objects: {} - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - key: string - value: string - updatedAt: Date - }, ExtArgs["result"]["config"]> - composites: {} -} - -export type ConfigGetPayload = runtime.Types.Result.GetResult - -export type ConfigCountArgs = - Omit & { - select?: ConfigCountAggregateInputType | true - } - -export interface ConfigDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['Config'], meta: { name: 'Config' } } - /** - * Find zero or one Config that matches the filter. - * @param {ConfigFindUniqueArgs} args - Arguments to find a Config - * @example - * // Get one Config - * const config = await prisma.config.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__ConfigClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one Config that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {ConfigFindUniqueOrThrowArgs} args - Arguments to find a Config - * @example - * // Get one Config - * const config = await prisma.config.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__ConfigClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Config that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ConfigFindFirstArgs} args - Arguments to find a Config - * @example - * // Get one Config - * const config = await prisma.config.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__ConfigClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Config that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ConfigFindFirstOrThrowArgs} args - Arguments to find a Config - * @example - * // Get one Config - * const config = await prisma.config.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__ConfigClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more Configs that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ConfigFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all Configs - * const configs = await prisma.config.findMany() - * - * // Get first 10 Configs - * const configs = await prisma.config.findMany({ take: 10 }) - * - * // Only select the `id` - * const configWithIdOnly = await prisma.config.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a Config. - * @param {ConfigCreateArgs} args - Arguments to create a Config. - * @example - * // Create one Config - * const Config = await prisma.config.create({ - * data: { - * // ... data to create a Config - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__ConfigClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many Configs. - * @param {ConfigCreateManyArgs} args - Arguments to create many Configs. - * @example - * // Create many Configs - * const config = await prisma.config.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many Configs and returns the data saved in the database. - * @param {ConfigCreateManyAndReturnArgs} args - Arguments to create many Configs. - * @example - * // Create many Configs - * const config = await prisma.config.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many Configs and only return the `id` - * const configWithIdOnly = await prisma.config.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a Config. - * @param {ConfigDeleteArgs} args - Arguments to delete one Config. - * @example - * // Delete one Config - * const Config = await prisma.config.delete({ - * where: { - * // ... filter to delete one Config - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__ConfigClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one Config. - * @param {ConfigUpdateArgs} args - Arguments to update one Config. - * @example - * // Update one Config - * const config = await prisma.config.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__ConfigClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more Configs. - * @param {ConfigDeleteManyArgs} args - Arguments to filter Configs to delete. - * @example - * // Delete a few Configs - * const { count } = await prisma.config.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Configs. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ConfigUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many Configs - * const config = await prisma.config.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Configs and returns the data updated in the database. - * @param {ConfigUpdateManyAndReturnArgs} args - Arguments to update many Configs. - * @example - * // Update many Configs - * const config = await prisma.config.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more Configs and only return the `id` - * const configWithIdOnly = await prisma.config.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one Config. - * @param {ConfigUpsertArgs} args - Arguments to update or create a Config. - * @example - * // Update or create a Config - * const config = await prisma.config.upsert({ - * create: { - * // ... data to create a Config - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the Config we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__ConfigClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of Configs. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ConfigCountArgs} args - Arguments to filter Configs to count. - * @example - * // Count the number of Configs - * const count = await prisma.config.count({ - * where: { - * // ... the filter for the Configs we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a Config. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ConfigAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by Config. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ConfigGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends ConfigGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: ConfigGroupByArgs['orderBy'] } - : { orderBy?: ConfigGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetConfigGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the Config model - */ -readonly fields: ConfigFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for Config. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__ConfigClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the Config model - */ -export interface ConfigFieldRefs { - readonly id: Prisma.FieldRef<"Config", 'String'> - readonly key: Prisma.FieldRef<"Config", 'String'> - readonly value: Prisma.FieldRef<"Config", 'String'> - readonly updatedAt: Prisma.FieldRef<"Config", 'DateTime'> -} - - -// Custom InputTypes -/** - * Config findUnique - */ -export type ConfigFindUniqueArgs = { - /** - * Select specific fields to fetch from the Config - */ - select?: Prisma.ConfigSelect | null - /** - * Omit specific fields from the Config - */ - omit?: Prisma.ConfigOmit | null - /** - * Filter, which Config to fetch. - */ - where: Prisma.ConfigWhereUniqueInput -} - -/** - * Config findUniqueOrThrow - */ -export type ConfigFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the Config - */ - select?: Prisma.ConfigSelect | null - /** - * Omit specific fields from the Config - */ - omit?: Prisma.ConfigOmit | null - /** - * Filter, which Config to fetch. - */ - where: Prisma.ConfigWhereUniqueInput -} - -/** - * Config findFirst - */ -export type ConfigFindFirstArgs = { - /** - * Select specific fields to fetch from the Config - */ - select?: Prisma.ConfigSelect | null - /** - * Omit specific fields from the Config - */ - omit?: Prisma.ConfigOmit | null - /** - * Filter, which Config to fetch. - */ - where?: Prisma.ConfigWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Configs to fetch. - */ - orderBy?: Prisma.ConfigOrderByWithRelationInput | Prisma.ConfigOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Configs. - */ - cursor?: Prisma.ConfigWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Configs from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Configs. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Configs. - */ - distinct?: Prisma.ConfigScalarFieldEnum | Prisma.ConfigScalarFieldEnum[] -} - -/** - * Config findFirstOrThrow - */ -export type ConfigFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the Config - */ - select?: Prisma.ConfigSelect | null - /** - * Omit specific fields from the Config - */ - omit?: Prisma.ConfigOmit | null - /** - * Filter, which Config to fetch. - */ - where?: Prisma.ConfigWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Configs to fetch. - */ - orderBy?: Prisma.ConfigOrderByWithRelationInput | Prisma.ConfigOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Configs. - */ - cursor?: Prisma.ConfigWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Configs from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Configs. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Configs. - */ - distinct?: Prisma.ConfigScalarFieldEnum | Prisma.ConfigScalarFieldEnum[] -} - -/** - * Config findMany - */ -export type ConfigFindManyArgs = { - /** - * Select specific fields to fetch from the Config - */ - select?: Prisma.ConfigSelect | null - /** - * Omit specific fields from the Config - */ - omit?: Prisma.ConfigOmit | null - /** - * Filter, which Configs to fetch. - */ - where?: Prisma.ConfigWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Configs to fetch. - */ - orderBy?: Prisma.ConfigOrderByWithRelationInput | Prisma.ConfigOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing Configs. - */ - cursor?: Prisma.ConfigWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Configs from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Configs. - */ - skip?: number - distinct?: Prisma.ConfigScalarFieldEnum | Prisma.ConfigScalarFieldEnum[] -} - -/** - * Config create - */ -export type ConfigCreateArgs = { - /** - * Select specific fields to fetch from the Config - */ - select?: Prisma.ConfigSelect | null - /** - * Omit specific fields from the Config - */ - omit?: Prisma.ConfigOmit | null - /** - * The data needed to create a Config. - */ - data: Prisma.XOR -} - -/** - * Config createMany - */ -export type ConfigCreateManyArgs = { - /** - * The data used to create many Configs. - */ - data: Prisma.ConfigCreateManyInput | Prisma.ConfigCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Config createManyAndReturn - */ -export type ConfigCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Config - */ - select?: Prisma.ConfigSelectCreateManyAndReturn | null - /** - * Omit specific fields from the Config - */ - omit?: Prisma.ConfigOmit | null - /** - * The data used to create many Configs. - */ - data: Prisma.ConfigCreateManyInput | Prisma.ConfigCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Config update - */ -export type ConfigUpdateArgs = { - /** - * Select specific fields to fetch from the Config - */ - select?: Prisma.ConfigSelect | null - /** - * Omit specific fields from the Config - */ - omit?: Prisma.ConfigOmit | null - /** - * The data needed to update a Config. - */ - data: Prisma.XOR - /** - * Choose, which Config to update. - */ - where: Prisma.ConfigWhereUniqueInput -} - -/** - * Config updateMany - */ -export type ConfigUpdateManyArgs = { - /** - * The data used to update Configs. - */ - data: Prisma.XOR - /** - * Filter which Configs to update - */ - where?: Prisma.ConfigWhereInput - /** - * Limit how many Configs to update. - */ - limit?: number -} - -/** - * Config updateManyAndReturn - */ -export type ConfigUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Config - */ - select?: Prisma.ConfigSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the Config - */ - omit?: Prisma.ConfigOmit | null - /** - * The data used to update Configs. - */ - data: Prisma.XOR - /** - * Filter which Configs to update - */ - where?: Prisma.ConfigWhereInput - /** - * Limit how many Configs to update. - */ - limit?: number -} - -/** - * Config upsert - */ -export type ConfigUpsertArgs = { - /** - * Select specific fields to fetch from the Config - */ - select?: Prisma.ConfigSelect | null - /** - * Omit specific fields from the Config - */ - omit?: Prisma.ConfigOmit | null - /** - * The filter to search for the Config to update in case it exists. - */ - where: Prisma.ConfigWhereUniqueInput - /** - * In case the Config found by the `where` argument doesn't exist, create a new Config with this data. - */ - create: Prisma.XOR - /** - * In case the Config was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * Config delete - */ -export type ConfigDeleteArgs = { - /** - * Select specific fields to fetch from the Config - */ - select?: Prisma.ConfigSelect | null - /** - * Omit specific fields from the Config - */ - omit?: Prisma.ConfigOmit | null - /** - * Filter which Config to delete. - */ - where: Prisma.ConfigWhereUniqueInput -} - -/** - * Config deleteMany - */ -export type ConfigDeleteManyArgs = { - /** - * Filter which Configs to delete - */ - where?: Prisma.ConfigWhereInput - /** - * Limit how many Configs to delete. - */ - limit?: number -} - -/** - * Config without action - */ -export type ConfigDefaultArgs = { - /** - * Select specific fields to fetch from the Config - */ - select?: Prisma.ConfigSelect | null - /** - * Omit specific fields from the Config - */ - omit?: Prisma.ConfigOmit | null -} diff --git a/prisma/generated/prisma/models/DiscordWebhook.ts b/prisma/generated/prisma/models/DiscordWebhook.ts deleted file mode 100644 index 4d53e5d..0000000 --- a/prisma/generated/prisma/models/DiscordWebhook.ts +++ /dev/null @@ -1,1647 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `DiscordWebhook` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model DiscordWebhook - * - */ -export type DiscordWebhookModel = runtime.Types.Result.DefaultSelection - -export type AggregateDiscordWebhook = { - _count: DiscordWebhookCountAggregateOutputType | null - _min: DiscordWebhookMinAggregateOutputType | null - _max: DiscordWebhookMaxAggregateOutputType | null -} - -export type DiscordWebhookMinAggregateOutputType = { - id: string | null - name: string | null - webhookUrl: string | null - type: $Enums.DiscordWebhookType | null - scope: $Enums.DiscordWebhookScope | null - description: string | null - userId: string | null - enabled: boolean | null - testSuccessAt: Date | null - avatarUrl: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type DiscordWebhookMaxAggregateOutputType = { - id: string | null - name: string | null - webhookUrl: string | null - type: $Enums.DiscordWebhookType | null - scope: $Enums.DiscordWebhookScope | null - description: string | null - userId: string | null - enabled: boolean | null - testSuccessAt: Date | null - avatarUrl: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type DiscordWebhookCountAggregateOutputType = { - id: number - name: number - webhookUrl: number - type: number - scope: number - description: number - userId: number - enabled: number - testSuccessAt: number - avatarUrl: number - metadata: number - createdAt: number - updatedAt: number - _all: number -} - - -export type DiscordWebhookMinAggregateInputType = { - id?: true - name?: true - webhookUrl?: true - type?: true - scope?: true - description?: true - userId?: true - enabled?: true - testSuccessAt?: true - avatarUrl?: true - createdAt?: true - updatedAt?: true -} - -export type DiscordWebhookMaxAggregateInputType = { - id?: true - name?: true - webhookUrl?: true - type?: true - scope?: true - description?: true - userId?: true - enabled?: true - testSuccessAt?: true - avatarUrl?: true - createdAt?: true - updatedAt?: true -} - -export type DiscordWebhookCountAggregateInputType = { - id?: true - name?: true - webhookUrl?: true - type?: true - scope?: true - description?: true - userId?: true - enabled?: true - testSuccessAt?: true - avatarUrl?: true - metadata?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type DiscordWebhookAggregateArgs = { - /** - * Filter which DiscordWebhook to aggregate. - */ - where?: Prisma.DiscordWebhookWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of DiscordWebhooks to fetch. - */ - orderBy?: Prisma.DiscordWebhookOrderByWithRelationInput | Prisma.DiscordWebhookOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.DiscordWebhookWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` DiscordWebhooks from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` DiscordWebhooks. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned DiscordWebhooks - **/ - _count?: true | DiscordWebhookCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: DiscordWebhookMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: DiscordWebhookMaxAggregateInputType -} - -export type GetDiscordWebhookAggregateType = { - [P in keyof T & keyof AggregateDiscordWebhook]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type DiscordWebhookGroupByArgs = { - where?: Prisma.DiscordWebhookWhereInput - orderBy?: Prisma.DiscordWebhookOrderByWithAggregationInput | Prisma.DiscordWebhookOrderByWithAggregationInput[] - by: Prisma.DiscordWebhookScalarFieldEnum[] | Prisma.DiscordWebhookScalarFieldEnum - having?: Prisma.DiscordWebhookScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: DiscordWebhookCountAggregateInputType | true - _min?: DiscordWebhookMinAggregateInputType - _max?: DiscordWebhookMaxAggregateInputType -} - -export type DiscordWebhookGroupByOutputType = { - id: string - name: string - webhookUrl: string - type: $Enums.DiscordWebhookType - scope: $Enums.DiscordWebhookScope - description: string | null - userId: string | null - enabled: boolean - testSuccessAt: Date | null - avatarUrl: string | null - metadata: runtime.JsonValue | null - createdAt: Date - updatedAt: Date - _count: DiscordWebhookCountAggregateOutputType | null - _min: DiscordWebhookMinAggregateOutputType | null - _max: DiscordWebhookMaxAggregateOutputType | null -} - -type GetDiscordWebhookGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof DiscordWebhookGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type DiscordWebhookWhereInput = { - AND?: Prisma.DiscordWebhookWhereInput | Prisma.DiscordWebhookWhereInput[] - OR?: Prisma.DiscordWebhookWhereInput[] - NOT?: Prisma.DiscordWebhookWhereInput | Prisma.DiscordWebhookWhereInput[] - id?: Prisma.StringFilter<"DiscordWebhook"> | string - name?: Prisma.StringFilter<"DiscordWebhook"> | string - webhookUrl?: Prisma.StringFilter<"DiscordWebhook"> | string - type?: Prisma.EnumDiscordWebhookTypeFilter<"DiscordWebhook"> | $Enums.DiscordWebhookType - scope?: Prisma.EnumDiscordWebhookScopeFilter<"DiscordWebhook"> | $Enums.DiscordWebhookScope - description?: Prisma.StringNullableFilter<"DiscordWebhook"> | string | null - userId?: Prisma.StringNullableFilter<"DiscordWebhook"> | string | null - enabled?: Prisma.BoolFilter<"DiscordWebhook"> | boolean - testSuccessAt?: Prisma.DateTimeNullableFilter<"DiscordWebhook"> | Date | string | null - avatarUrl?: Prisma.StringNullableFilter<"DiscordWebhook"> | string | null - metadata?: Prisma.JsonNullableFilter<"DiscordWebhook"> - createdAt?: Prisma.DateTimeFilter<"DiscordWebhook"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"DiscordWebhook"> | Date | string - user?: Prisma.XOR | null -} - -export type DiscordWebhookOrderByWithRelationInput = { - id?: Prisma.SortOrder - name?: Prisma.SortOrder - webhookUrl?: Prisma.SortOrder - type?: Prisma.SortOrder - scope?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - userId?: Prisma.SortOrderInput | Prisma.SortOrder - enabled?: Prisma.SortOrder - testSuccessAt?: Prisma.SortOrderInput | Prisma.SortOrder - avatarUrl?: Prisma.SortOrderInput | Prisma.SortOrder - metadata?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - user?: Prisma.UserOrderByWithRelationInput -} - -export type DiscordWebhookWhereUniqueInput = Prisma.AtLeast<{ - id?: string - webhookUrl_userId?: Prisma.DiscordWebhookWebhookUrlUserIdCompoundUniqueInput - AND?: Prisma.DiscordWebhookWhereInput | Prisma.DiscordWebhookWhereInput[] - OR?: Prisma.DiscordWebhookWhereInput[] - NOT?: Prisma.DiscordWebhookWhereInput | Prisma.DiscordWebhookWhereInput[] - name?: Prisma.StringFilter<"DiscordWebhook"> | string - webhookUrl?: Prisma.StringFilter<"DiscordWebhook"> | string - type?: Prisma.EnumDiscordWebhookTypeFilter<"DiscordWebhook"> | $Enums.DiscordWebhookType - scope?: Prisma.EnumDiscordWebhookScopeFilter<"DiscordWebhook"> | $Enums.DiscordWebhookScope - description?: Prisma.StringNullableFilter<"DiscordWebhook"> | string | null - userId?: Prisma.StringNullableFilter<"DiscordWebhook"> | string | null - enabled?: Prisma.BoolFilter<"DiscordWebhook"> | boolean - testSuccessAt?: Prisma.DateTimeNullableFilter<"DiscordWebhook"> | Date | string | null - avatarUrl?: Prisma.StringNullableFilter<"DiscordWebhook"> | string | null - metadata?: Prisma.JsonNullableFilter<"DiscordWebhook"> - createdAt?: Prisma.DateTimeFilter<"DiscordWebhook"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"DiscordWebhook"> | Date | string - user?: Prisma.XOR | null -}, "id" | "webhookUrl_userId"> - -export type DiscordWebhookOrderByWithAggregationInput = { - id?: Prisma.SortOrder - name?: Prisma.SortOrder - webhookUrl?: Prisma.SortOrder - type?: Prisma.SortOrder - scope?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - userId?: Prisma.SortOrderInput | Prisma.SortOrder - enabled?: Prisma.SortOrder - testSuccessAt?: Prisma.SortOrderInput | Prisma.SortOrder - avatarUrl?: Prisma.SortOrderInput | Prisma.SortOrder - metadata?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.DiscordWebhookCountOrderByAggregateInput - _max?: Prisma.DiscordWebhookMaxOrderByAggregateInput - _min?: Prisma.DiscordWebhookMinOrderByAggregateInput -} - -export type DiscordWebhookScalarWhereWithAggregatesInput = { - AND?: Prisma.DiscordWebhookScalarWhereWithAggregatesInput | Prisma.DiscordWebhookScalarWhereWithAggregatesInput[] - OR?: Prisma.DiscordWebhookScalarWhereWithAggregatesInput[] - NOT?: Prisma.DiscordWebhookScalarWhereWithAggregatesInput | Prisma.DiscordWebhookScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"DiscordWebhook"> | string - name?: Prisma.StringWithAggregatesFilter<"DiscordWebhook"> | string - webhookUrl?: Prisma.StringWithAggregatesFilter<"DiscordWebhook"> | string - type?: Prisma.EnumDiscordWebhookTypeWithAggregatesFilter<"DiscordWebhook"> | $Enums.DiscordWebhookType - scope?: Prisma.EnumDiscordWebhookScopeWithAggregatesFilter<"DiscordWebhook"> | $Enums.DiscordWebhookScope - description?: Prisma.StringNullableWithAggregatesFilter<"DiscordWebhook"> | string | null - userId?: Prisma.StringNullableWithAggregatesFilter<"DiscordWebhook"> | string | null - enabled?: Prisma.BoolWithAggregatesFilter<"DiscordWebhook"> | boolean - testSuccessAt?: Prisma.DateTimeNullableWithAggregatesFilter<"DiscordWebhook"> | Date | string | null - avatarUrl?: Prisma.StringNullableWithAggregatesFilter<"DiscordWebhook"> | string | null - metadata?: Prisma.JsonNullableWithAggregatesFilter<"DiscordWebhook"> - createdAt?: Prisma.DateTimeWithAggregatesFilter<"DiscordWebhook"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"DiscordWebhook"> | Date | string -} - -export type DiscordWebhookCreateInput = { - id?: string - name: string - webhookUrl: string - type: $Enums.DiscordWebhookType - scope?: $Enums.DiscordWebhookScope - description?: string | null - enabled?: boolean - testSuccessAt?: Date | string | null - avatarUrl?: string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - user?: Prisma.UserCreateNestedOneWithoutDiscordWebhooksInput -} - -export type DiscordWebhookUncheckedCreateInput = { - id?: string - name: string - webhookUrl: string - type: $Enums.DiscordWebhookType - scope?: $Enums.DiscordWebhookScope - description?: string | null - userId?: string | null - enabled?: boolean - testSuccessAt?: Date | string | null - avatarUrl?: string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string -} - -export type DiscordWebhookUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - webhookUrl?: Prisma.StringFieldUpdateOperationsInput | string - type?: Prisma.EnumDiscordWebhookTypeFieldUpdateOperationsInput | $Enums.DiscordWebhookType - scope?: Prisma.EnumDiscordWebhookScopeFieldUpdateOperationsInput | $Enums.DiscordWebhookScope - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - enabled?: Prisma.BoolFieldUpdateOperationsInput | boolean - testSuccessAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - user?: Prisma.UserUpdateOneWithoutDiscordWebhooksNestedInput -} - -export type DiscordWebhookUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - webhookUrl?: Prisma.StringFieldUpdateOperationsInput | string - type?: Prisma.EnumDiscordWebhookTypeFieldUpdateOperationsInput | $Enums.DiscordWebhookType - scope?: Prisma.EnumDiscordWebhookScopeFieldUpdateOperationsInput | $Enums.DiscordWebhookScope - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - userId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - enabled?: Prisma.BoolFieldUpdateOperationsInput | boolean - testSuccessAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type DiscordWebhookCreateManyInput = { - id?: string - name: string - webhookUrl: string - type: $Enums.DiscordWebhookType - scope?: $Enums.DiscordWebhookScope - description?: string | null - userId?: string | null - enabled?: boolean - testSuccessAt?: Date | string | null - avatarUrl?: string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string -} - -export type DiscordWebhookUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - webhookUrl?: Prisma.StringFieldUpdateOperationsInput | string - type?: Prisma.EnumDiscordWebhookTypeFieldUpdateOperationsInput | $Enums.DiscordWebhookType - scope?: Prisma.EnumDiscordWebhookScopeFieldUpdateOperationsInput | $Enums.DiscordWebhookScope - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - enabled?: Prisma.BoolFieldUpdateOperationsInput | boolean - testSuccessAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type DiscordWebhookUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - webhookUrl?: Prisma.StringFieldUpdateOperationsInput | string - type?: Prisma.EnumDiscordWebhookTypeFieldUpdateOperationsInput | $Enums.DiscordWebhookType - scope?: Prisma.EnumDiscordWebhookScopeFieldUpdateOperationsInput | $Enums.DiscordWebhookScope - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - userId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - enabled?: Prisma.BoolFieldUpdateOperationsInput | boolean - testSuccessAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type DiscordWebhookListRelationFilter = { - every?: Prisma.DiscordWebhookWhereInput - some?: Prisma.DiscordWebhookWhereInput - none?: Prisma.DiscordWebhookWhereInput -} - -export type DiscordWebhookOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type DiscordWebhookWebhookUrlUserIdCompoundUniqueInput = { - webhookUrl: string - userId: string -} - -export type DiscordWebhookCountOrderByAggregateInput = { - id?: Prisma.SortOrder - name?: Prisma.SortOrder - webhookUrl?: Prisma.SortOrder - type?: Prisma.SortOrder - scope?: Prisma.SortOrder - description?: Prisma.SortOrder - userId?: Prisma.SortOrder - enabled?: Prisma.SortOrder - testSuccessAt?: Prisma.SortOrder - avatarUrl?: Prisma.SortOrder - metadata?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type DiscordWebhookMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - name?: Prisma.SortOrder - webhookUrl?: Prisma.SortOrder - type?: Prisma.SortOrder - scope?: Prisma.SortOrder - description?: Prisma.SortOrder - userId?: Prisma.SortOrder - enabled?: Prisma.SortOrder - testSuccessAt?: Prisma.SortOrder - avatarUrl?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type DiscordWebhookMinOrderByAggregateInput = { - id?: Prisma.SortOrder - name?: Prisma.SortOrder - webhookUrl?: Prisma.SortOrder - type?: Prisma.SortOrder - scope?: Prisma.SortOrder - description?: Prisma.SortOrder - userId?: Prisma.SortOrder - enabled?: Prisma.SortOrder - testSuccessAt?: Prisma.SortOrder - avatarUrl?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type DiscordWebhookCreateNestedManyWithoutUserInput = { - create?: Prisma.XOR | Prisma.DiscordWebhookCreateWithoutUserInput[] | Prisma.DiscordWebhookUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.DiscordWebhookCreateOrConnectWithoutUserInput | Prisma.DiscordWebhookCreateOrConnectWithoutUserInput[] - createMany?: Prisma.DiscordWebhookCreateManyUserInputEnvelope - connect?: Prisma.DiscordWebhookWhereUniqueInput | Prisma.DiscordWebhookWhereUniqueInput[] -} - -export type DiscordWebhookUncheckedCreateNestedManyWithoutUserInput = { - create?: Prisma.XOR | Prisma.DiscordWebhookCreateWithoutUserInput[] | Prisma.DiscordWebhookUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.DiscordWebhookCreateOrConnectWithoutUserInput | Prisma.DiscordWebhookCreateOrConnectWithoutUserInput[] - createMany?: Prisma.DiscordWebhookCreateManyUserInputEnvelope - connect?: Prisma.DiscordWebhookWhereUniqueInput | Prisma.DiscordWebhookWhereUniqueInput[] -} - -export type DiscordWebhookUpdateManyWithoutUserNestedInput = { - create?: Prisma.XOR | Prisma.DiscordWebhookCreateWithoutUserInput[] | Prisma.DiscordWebhookUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.DiscordWebhookCreateOrConnectWithoutUserInput | Prisma.DiscordWebhookCreateOrConnectWithoutUserInput[] - upsert?: Prisma.DiscordWebhookUpsertWithWhereUniqueWithoutUserInput | Prisma.DiscordWebhookUpsertWithWhereUniqueWithoutUserInput[] - createMany?: Prisma.DiscordWebhookCreateManyUserInputEnvelope - set?: Prisma.DiscordWebhookWhereUniqueInput | Prisma.DiscordWebhookWhereUniqueInput[] - disconnect?: Prisma.DiscordWebhookWhereUniqueInput | Prisma.DiscordWebhookWhereUniqueInput[] - delete?: Prisma.DiscordWebhookWhereUniqueInput | Prisma.DiscordWebhookWhereUniqueInput[] - connect?: Prisma.DiscordWebhookWhereUniqueInput | Prisma.DiscordWebhookWhereUniqueInput[] - update?: Prisma.DiscordWebhookUpdateWithWhereUniqueWithoutUserInput | Prisma.DiscordWebhookUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: Prisma.DiscordWebhookUpdateManyWithWhereWithoutUserInput | Prisma.DiscordWebhookUpdateManyWithWhereWithoutUserInput[] - deleteMany?: Prisma.DiscordWebhookScalarWhereInput | Prisma.DiscordWebhookScalarWhereInput[] -} - -export type DiscordWebhookUncheckedUpdateManyWithoutUserNestedInput = { - create?: Prisma.XOR | Prisma.DiscordWebhookCreateWithoutUserInput[] | Prisma.DiscordWebhookUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.DiscordWebhookCreateOrConnectWithoutUserInput | Prisma.DiscordWebhookCreateOrConnectWithoutUserInput[] - upsert?: Prisma.DiscordWebhookUpsertWithWhereUniqueWithoutUserInput | Prisma.DiscordWebhookUpsertWithWhereUniqueWithoutUserInput[] - createMany?: Prisma.DiscordWebhookCreateManyUserInputEnvelope - set?: Prisma.DiscordWebhookWhereUniqueInput | Prisma.DiscordWebhookWhereUniqueInput[] - disconnect?: Prisma.DiscordWebhookWhereUniqueInput | Prisma.DiscordWebhookWhereUniqueInput[] - delete?: Prisma.DiscordWebhookWhereUniqueInput | Prisma.DiscordWebhookWhereUniqueInput[] - connect?: Prisma.DiscordWebhookWhereUniqueInput | Prisma.DiscordWebhookWhereUniqueInput[] - update?: Prisma.DiscordWebhookUpdateWithWhereUniqueWithoutUserInput | Prisma.DiscordWebhookUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: Prisma.DiscordWebhookUpdateManyWithWhereWithoutUserInput | Prisma.DiscordWebhookUpdateManyWithWhereWithoutUserInput[] - deleteMany?: Prisma.DiscordWebhookScalarWhereInput | Prisma.DiscordWebhookScalarWhereInput[] -} - -export type EnumDiscordWebhookTypeFieldUpdateOperationsInput = { - set?: $Enums.DiscordWebhookType -} - -export type EnumDiscordWebhookScopeFieldUpdateOperationsInput = { - set?: $Enums.DiscordWebhookScope -} - -export type DiscordWebhookCreateWithoutUserInput = { - id?: string - name: string - webhookUrl: string - type: $Enums.DiscordWebhookType - scope?: $Enums.DiscordWebhookScope - description?: string | null - enabled?: boolean - testSuccessAt?: Date | string | null - avatarUrl?: string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string -} - -export type DiscordWebhookUncheckedCreateWithoutUserInput = { - id?: string - name: string - webhookUrl: string - type: $Enums.DiscordWebhookType - scope?: $Enums.DiscordWebhookScope - description?: string | null - enabled?: boolean - testSuccessAt?: Date | string | null - avatarUrl?: string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string -} - -export type DiscordWebhookCreateOrConnectWithoutUserInput = { - where: Prisma.DiscordWebhookWhereUniqueInput - create: Prisma.XOR -} - -export type DiscordWebhookCreateManyUserInputEnvelope = { - data: Prisma.DiscordWebhookCreateManyUserInput | Prisma.DiscordWebhookCreateManyUserInput[] - skipDuplicates?: boolean -} - -export type DiscordWebhookUpsertWithWhereUniqueWithoutUserInput = { - where: Prisma.DiscordWebhookWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type DiscordWebhookUpdateWithWhereUniqueWithoutUserInput = { - where: Prisma.DiscordWebhookWhereUniqueInput - data: Prisma.XOR -} - -export type DiscordWebhookUpdateManyWithWhereWithoutUserInput = { - where: Prisma.DiscordWebhookScalarWhereInput - data: Prisma.XOR -} - -export type DiscordWebhookScalarWhereInput = { - AND?: Prisma.DiscordWebhookScalarWhereInput | Prisma.DiscordWebhookScalarWhereInput[] - OR?: Prisma.DiscordWebhookScalarWhereInput[] - NOT?: Prisma.DiscordWebhookScalarWhereInput | Prisma.DiscordWebhookScalarWhereInput[] - id?: Prisma.StringFilter<"DiscordWebhook"> | string - name?: Prisma.StringFilter<"DiscordWebhook"> | string - webhookUrl?: Prisma.StringFilter<"DiscordWebhook"> | string - type?: Prisma.EnumDiscordWebhookTypeFilter<"DiscordWebhook"> | $Enums.DiscordWebhookType - scope?: Prisma.EnumDiscordWebhookScopeFilter<"DiscordWebhook"> | $Enums.DiscordWebhookScope - description?: Prisma.StringNullableFilter<"DiscordWebhook"> | string | null - userId?: Prisma.StringNullableFilter<"DiscordWebhook"> | string | null - enabled?: Prisma.BoolFilter<"DiscordWebhook"> | boolean - testSuccessAt?: Prisma.DateTimeNullableFilter<"DiscordWebhook"> | Date | string | null - avatarUrl?: Prisma.StringNullableFilter<"DiscordWebhook"> | string | null - metadata?: Prisma.JsonNullableFilter<"DiscordWebhook"> - createdAt?: Prisma.DateTimeFilter<"DiscordWebhook"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"DiscordWebhook"> | Date | string -} - -export type DiscordWebhookCreateManyUserInput = { - id?: string - name: string - webhookUrl: string - type: $Enums.DiscordWebhookType - scope?: $Enums.DiscordWebhookScope - description?: string | null - enabled?: boolean - testSuccessAt?: Date | string | null - avatarUrl?: string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string -} - -export type DiscordWebhookUpdateWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - webhookUrl?: Prisma.StringFieldUpdateOperationsInput | string - type?: Prisma.EnumDiscordWebhookTypeFieldUpdateOperationsInput | $Enums.DiscordWebhookType - scope?: Prisma.EnumDiscordWebhookScopeFieldUpdateOperationsInput | $Enums.DiscordWebhookScope - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - enabled?: Prisma.BoolFieldUpdateOperationsInput | boolean - testSuccessAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type DiscordWebhookUncheckedUpdateWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - webhookUrl?: Prisma.StringFieldUpdateOperationsInput | string - type?: Prisma.EnumDiscordWebhookTypeFieldUpdateOperationsInput | $Enums.DiscordWebhookType - scope?: Prisma.EnumDiscordWebhookScopeFieldUpdateOperationsInput | $Enums.DiscordWebhookScope - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - enabled?: Prisma.BoolFieldUpdateOperationsInput | boolean - testSuccessAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type DiscordWebhookUncheckedUpdateManyWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - webhookUrl?: Prisma.StringFieldUpdateOperationsInput | string - type?: Prisma.EnumDiscordWebhookTypeFieldUpdateOperationsInput | $Enums.DiscordWebhookType - scope?: Prisma.EnumDiscordWebhookScopeFieldUpdateOperationsInput | $Enums.DiscordWebhookScope - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - enabled?: Prisma.BoolFieldUpdateOperationsInput | boolean - testSuccessAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - - -export type DiscordWebhookSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - name?: boolean - webhookUrl?: boolean - type?: boolean - scope?: boolean - description?: boolean - userId?: boolean - enabled?: boolean - testSuccessAt?: boolean - avatarUrl?: boolean - metadata?: boolean - createdAt?: boolean - updatedAt?: boolean - user?: boolean | Prisma.DiscordWebhook$userArgs -}, ExtArgs["result"]["discordWebhook"]> - -export type DiscordWebhookSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - name?: boolean - webhookUrl?: boolean - type?: boolean - scope?: boolean - description?: boolean - userId?: boolean - enabled?: boolean - testSuccessAt?: boolean - avatarUrl?: boolean - metadata?: boolean - createdAt?: boolean - updatedAt?: boolean - user?: boolean | Prisma.DiscordWebhook$userArgs -}, ExtArgs["result"]["discordWebhook"]> - -export type DiscordWebhookSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - name?: boolean - webhookUrl?: boolean - type?: boolean - scope?: boolean - description?: boolean - userId?: boolean - enabled?: boolean - testSuccessAt?: boolean - avatarUrl?: boolean - metadata?: boolean - createdAt?: boolean - updatedAt?: boolean - user?: boolean | Prisma.DiscordWebhook$userArgs -}, ExtArgs["result"]["discordWebhook"]> - -export type DiscordWebhookSelectScalar = { - id?: boolean - name?: boolean - webhookUrl?: boolean - type?: boolean - scope?: boolean - description?: boolean - userId?: boolean - enabled?: boolean - testSuccessAt?: boolean - avatarUrl?: boolean - metadata?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type DiscordWebhookOmit = runtime.Types.Extensions.GetOmit<"id" | "name" | "webhookUrl" | "type" | "scope" | "description" | "userId" | "enabled" | "testSuccessAt" | "avatarUrl" | "metadata" | "createdAt" | "updatedAt", ExtArgs["result"]["discordWebhook"]> -export type DiscordWebhookInclude = { - user?: boolean | Prisma.DiscordWebhook$userArgs -} -export type DiscordWebhookIncludeCreateManyAndReturn = { - user?: boolean | Prisma.DiscordWebhook$userArgs -} -export type DiscordWebhookIncludeUpdateManyAndReturn = { - user?: boolean | Prisma.DiscordWebhook$userArgs -} - -export type $DiscordWebhookPayload = { - name: "DiscordWebhook" - objects: { - user: Prisma.$UserPayload | null - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - name: string - webhookUrl: string - type: $Enums.DiscordWebhookType - scope: $Enums.DiscordWebhookScope - description: string | null - userId: string | null - enabled: boolean - testSuccessAt: Date | null - avatarUrl: string | null - metadata: runtime.JsonValue | null - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["discordWebhook"]> - composites: {} -} - -export type DiscordWebhookGetPayload = runtime.Types.Result.GetResult - -export type DiscordWebhookCountArgs = - Omit & { - select?: DiscordWebhookCountAggregateInputType | true - } - -export interface DiscordWebhookDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['DiscordWebhook'], meta: { name: 'DiscordWebhook' } } - /** - * Find zero or one DiscordWebhook that matches the filter. - * @param {DiscordWebhookFindUniqueArgs} args - Arguments to find a DiscordWebhook - * @example - * // Get one DiscordWebhook - * const discordWebhook = await prisma.discordWebhook.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__DiscordWebhookClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one DiscordWebhook that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {DiscordWebhookFindUniqueOrThrowArgs} args - Arguments to find a DiscordWebhook - * @example - * // Get one DiscordWebhook - * const discordWebhook = await prisma.discordWebhook.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__DiscordWebhookClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first DiscordWebhook that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {DiscordWebhookFindFirstArgs} args - Arguments to find a DiscordWebhook - * @example - * // Get one DiscordWebhook - * const discordWebhook = await prisma.discordWebhook.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__DiscordWebhookClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first DiscordWebhook that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {DiscordWebhookFindFirstOrThrowArgs} args - Arguments to find a DiscordWebhook - * @example - * // Get one DiscordWebhook - * const discordWebhook = await prisma.discordWebhook.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__DiscordWebhookClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more DiscordWebhooks that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {DiscordWebhookFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all DiscordWebhooks - * const discordWebhooks = await prisma.discordWebhook.findMany() - * - * // Get first 10 DiscordWebhooks - * const discordWebhooks = await prisma.discordWebhook.findMany({ take: 10 }) - * - * // Only select the `id` - * const discordWebhookWithIdOnly = await prisma.discordWebhook.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a DiscordWebhook. - * @param {DiscordWebhookCreateArgs} args - Arguments to create a DiscordWebhook. - * @example - * // Create one DiscordWebhook - * const DiscordWebhook = await prisma.discordWebhook.create({ - * data: { - * // ... data to create a DiscordWebhook - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__DiscordWebhookClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many DiscordWebhooks. - * @param {DiscordWebhookCreateManyArgs} args - Arguments to create many DiscordWebhooks. - * @example - * // Create many DiscordWebhooks - * const discordWebhook = await prisma.discordWebhook.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many DiscordWebhooks and returns the data saved in the database. - * @param {DiscordWebhookCreateManyAndReturnArgs} args - Arguments to create many DiscordWebhooks. - * @example - * // Create many DiscordWebhooks - * const discordWebhook = await prisma.discordWebhook.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many DiscordWebhooks and only return the `id` - * const discordWebhookWithIdOnly = await prisma.discordWebhook.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a DiscordWebhook. - * @param {DiscordWebhookDeleteArgs} args - Arguments to delete one DiscordWebhook. - * @example - * // Delete one DiscordWebhook - * const DiscordWebhook = await prisma.discordWebhook.delete({ - * where: { - * // ... filter to delete one DiscordWebhook - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__DiscordWebhookClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one DiscordWebhook. - * @param {DiscordWebhookUpdateArgs} args - Arguments to update one DiscordWebhook. - * @example - * // Update one DiscordWebhook - * const discordWebhook = await prisma.discordWebhook.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__DiscordWebhookClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more DiscordWebhooks. - * @param {DiscordWebhookDeleteManyArgs} args - Arguments to filter DiscordWebhooks to delete. - * @example - * // Delete a few DiscordWebhooks - * const { count } = await prisma.discordWebhook.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more DiscordWebhooks. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {DiscordWebhookUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many DiscordWebhooks - * const discordWebhook = await prisma.discordWebhook.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more DiscordWebhooks and returns the data updated in the database. - * @param {DiscordWebhookUpdateManyAndReturnArgs} args - Arguments to update many DiscordWebhooks. - * @example - * // Update many DiscordWebhooks - * const discordWebhook = await prisma.discordWebhook.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more DiscordWebhooks and only return the `id` - * const discordWebhookWithIdOnly = await prisma.discordWebhook.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one DiscordWebhook. - * @param {DiscordWebhookUpsertArgs} args - Arguments to update or create a DiscordWebhook. - * @example - * // Update or create a DiscordWebhook - * const discordWebhook = await prisma.discordWebhook.upsert({ - * create: { - * // ... data to create a DiscordWebhook - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the DiscordWebhook we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__DiscordWebhookClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of DiscordWebhooks. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {DiscordWebhookCountArgs} args - Arguments to filter DiscordWebhooks to count. - * @example - * // Count the number of DiscordWebhooks - * const count = await prisma.discordWebhook.count({ - * where: { - * // ... the filter for the DiscordWebhooks we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a DiscordWebhook. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {DiscordWebhookAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by DiscordWebhook. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {DiscordWebhookGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends DiscordWebhookGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: DiscordWebhookGroupByArgs['orderBy'] } - : { orderBy?: DiscordWebhookGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetDiscordWebhookGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the DiscordWebhook model - */ -readonly fields: DiscordWebhookFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for DiscordWebhook. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__DiscordWebhookClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - user = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the DiscordWebhook model - */ -export interface DiscordWebhookFieldRefs { - readonly id: Prisma.FieldRef<"DiscordWebhook", 'String'> - readonly name: Prisma.FieldRef<"DiscordWebhook", 'String'> - readonly webhookUrl: Prisma.FieldRef<"DiscordWebhook", 'String'> - readonly type: Prisma.FieldRef<"DiscordWebhook", 'DiscordWebhookType'> - readonly scope: Prisma.FieldRef<"DiscordWebhook", 'DiscordWebhookScope'> - readonly description: Prisma.FieldRef<"DiscordWebhook", 'String'> - readonly userId: Prisma.FieldRef<"DiscordWebhook", 'String'> - readonly enabled: Prisma.FieldRef<"DiscordWebhook", 'Boolean'> - readonly testSuccessAt: Prisma.FieldRef<"DiscordWebhook", 'DateTime'> - readonly avatarUrl: Prisma.FieldRef<"DiscordWebhook", 'String'> - readonly metadata: Prisma.FieldRef<"DiscordWebhook", 'Json'> - readonly createdAt: Prisma.FieldRef<"DiscordWebhook", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"DiscordWebhook", 'DateTime'> -} - - -// Custom InputTypes -/** - * DiscordWebhook findUnique - */ -export type DiscordWebhookFindUniqueArgs = { - /** - * Select specific fields to fetch from the DiscordWebhook - */ - select?: Prisma.DiscordWebhookSelect | null - /** - * Omit specific fields from the DiscordWebhook - */ - omit?: Prisma.DiscordWebhookOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.DiscordWebhookInclude | null - /** - * Filter, which DiscordWebhook to fetch. - */ - where: Prisma.DiscordWebhookWhereUniqueInput -} - -/** - * DiscordWebhook findUniqueOrThrow - */ -export type DiscordWebhookFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the DiscordWebhook - */ - select?: Prisma.DiscordWebhookSelect | null - /** - * Omit specific fields from the DiscordWebhook - */ - omit?: Prisma.DiscordWebhookOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.DiscordWebhookInclude | null - /** - * Filter, which DiscordWebhook to fetch. - */ - where: Prisma.DiscordWebhookWhereUniqueInput -} - -/** - * DiscordWebhook findFirst - */ -export type DiscordWebhookFindFirstArgs = { - /** - * Select specific fields to fetch from the DiscordWebhook - */ - select?: Prisma.DiscordWebhookSelect | null - /** - * Omit specific fields from the DiscordWebhook - */ - omit?: Prisma.DiscordWebhookOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.DiscordWebhookInclude | null - /** - * Filter, which DiscordWebhook to fetch. - */ - where?: Prisma.DiscordWebhookWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of DiscordWebhooks to fetch. - */ - orderBy?: Prisma.DiscordWebhookOrderByWithRelationInput | Prisma.DiscordWebhookOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for DiscordWebhooks. - */ - cursor?: Prisma.DiscordWebhookWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` DiscordWebhooks from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` DiscordWebhooks. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of DiscordWebhooks. - */ - distinct?: Prisma.DiscordWebhookScalarFieldEnum | Prisma.DiscordWebhookScalarFieldEnum[] -} - -/** - * DiscordWebhook findFirstOrThrow - */ -export type DiscordWebhookFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the DiscordWebhook - */ - select?: Prisma.DiscordWebhookSelect | null - /** - * Omit specific fields from the DiscordWebhook - */ - omit?: Prisma.DiscordWebhookOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.DiscordWebhookInclude | null - /** - * Filter, which DiscordWebhook to fetch. - */ - where?: Prisma.DiscordWebhookWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of DiscordWebhooks to fetch. - */ - orderBy?: Prisma.DiscordWebhookOrderByWithRelationInput | Prisma.DiscordWebhookOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for DiscordWebhooks. - */ - cursor?: Prisma.DiscordWebhookWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` DiscordWebhooks from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` DiscordWebhooks. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of DiscordWebhooks. - */ - distinct?: Prisma.DiscordWebhookScalarFieldEnum | Prisma.DiscordWebhookScalarFieldEnum[] -} - -/** - * DiscordWebhook findMany - */ -export type DiscordWebhookFindManyArgs = { - /** - * Select specific fields to fetch from the DiscordWebhook - */ - select?: Prisma.DiscordWebhookSelect | null - /** - * Omit specific fields from the DiscordWebhook - */ - omit?: Prisma.DiscordWebhookOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.DiscordWebhookInclude | null - /** - * Filter, which DiscordWebhooks to fetch. - */ - where?: Prisma.DiscordWebhookWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of DiscordWebhooks to fetch. - */ - orderBy?: Prisma.DiscordWebhookOrderByWithRelationInput | Prisma.DiscordWebhookOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing DiscordWebhooks. - */ - cursor?: Prisma.DiscordWebhookWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` DiscordWebhooks from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` DiscordWebhooks. - */ - skip?: number - distinct?: Prisma.DiscordWebhookScalarFieldEnum | Prisma.DiscordWebhookScalarFieldEnum[] -} - -/** - * DiscordWebhook create - */ -export type DiscordWebhookCreateArgs = { - /** - * Select specific fields to fetch from the DiscordWebhook - */ - select?: Prisma.DiscordWebhookSelect | null - /** - * Omit specific fields from the DiscordWebhook - */ - omit?: Prisma.DiscordWebhookOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.DiscordWebhookInclude | null - /** - * The data needed to create a DiscordWebhook. - */ - data: Prisma.XOR -} - -/** - * DiscordWebhook createMany - */ -export type DiscordWebhookCreateManyArgs = { - /** - * The data used to create many DiscordWebhooks. - */ - data: Prisma.DiscordWebhookCreateManyInput | Prisma.DiscordWebhookCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * DiscordWebhook createManyAndReturn - */ -export type DiscordWebhookCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the DiscordWebhook - */ - select?: Prisma.DiscordWebhookSelectCreateManyAndReturn | null - /** - * Omit specific fields from the DiscordWebhook - */ - omit?: Prisma.DiscordWebhookOmit | null - /** - * The data used to create many DiscordWebhooks. - */ - data: Prisma.DiscordWebhookCreateManyInput | Prisma.DiscordWebhookCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.DiscordWebhookIncludeCreateManyAndReturn | null -} - -/** - * DiscordWebhook update - */ -export type DiscordWebhookUpdateArgs = { - /** - * Select specific fields to fetch from the DiscordWebhook - */ - select?: Prisma.DiscordWebhookSelect | null - /** - * Omit specific fields from the DiscordWebhook - */ - omit?: Prisma.DiscordWebhookOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.DiscordWebhookInclude | null - /** - * The data needed to update a DiscordWebhook. - */ - data: Prisma.XOR - /** - * Choose, which DiscordWebhook to update. - */ - where: Prisma.DiscordWebhookWhereUniqueInput -} - -/** - * DiscordWebhook updateMany - */ -export type DiscordWebhookUpdateManyArgs = { - /** - * The data used to update DiscordWebhooks. - */ - data: Prisma.XOR - /** - * Filter which DiscordWebhooks to update - */ - where?: Prisma.DiscordWebhookWhereInput - /** - * Limit how many DiscordWebhooks to update. - */ - limit?: number -} - -/** - * DiscordWebhook updateManyAndReturn - */ -export type DiscordWebhookUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the DiscordWebhook - */ - select?: Prisma.DiscordWebhookSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the DiscordWebhook - */ - omit?: Prisma.DiscordWebhookOmit | null - /** - * The data used to update DiscordWebhooks. - */ - data: Prisma.XOR - /** - * Filter which DiscordWebhooks to update - */ - where?: Prisma.DiscordWebhookWhereInput - /** - * Limit how many DiscordWebhooks to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.DiscordWebhookIncludeUpdateManyAndReturn | null -} - -/** - * DiscordWebhook upsert - */ -export type DiscordWebhookUpsertArgs = { - /** - * Select specific fields to fetch from the DiscordWebhook - */ - select?: Prisma.DiscordWebhookSelect | null - /** - * Omit specific fields from the DiscordWebhook - */ - omit?: Prisma.DiscordWebhookOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.DiscordWebhookInclude | null - /** - * The filter to search for the DiscordWebhook to update in case it exists. - */ - where: Prisma.DiscordWebhookWhereUniqueInput - /** - * In case the DiscordWebhook found by the `where` argument doesn't exist, create a new DiscordWebhook with this data. - */ - create: Prisma.XOR - /** - * In case the DiscordWebhook was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * DiscordWebhook delete - */ -export type DiscordWebhookDeleteArgs = { - /** - * Select specific fields to fetch from the DiscordWebhook - */ - select?: Prisma.DiscordWebhookSelect | null - /** - * Omit specific fields from the DiscordWebhook - */ - omit?: Prisma.DiscordWebhookOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.DiscordWebhookInclude | null - /** - * Filter which DiscordWebhook to delete. - */ - where: Prisma.DiscordWebhookWhereUniqueInput -} - -/** - * DiscordWebhook deleteMany - */ -export type DiscordWebhookDeleteManyArgs = { - /** - * Filter which DiscordWebhooks to delete - */ - where?: Prisma.DiscordWebhookWhereInput - /** - * Limit how many DiscordWebhooks to delete. - */ - limit?: number -} - -/** - * DiscordWebhook.user - */ -export type DiscordWebhook$userArgs = { - /** - * Select specific fields to fetch from the User - */ - select?: Prisma.UserSelect | null - /** - * Omit specific fields from the User - */ - omit?: Prisma.UserOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.UserInclude | null - where?: Prisma.UserWhereInput -} - -/** - * DiscordWebhook without action - */ -export type DiscordWebhookDefaultArgs = { - /** - * Select specific fields to fetch from the DiscordWebhook - */ - select?: Prisma.DiscordWebhookSelect | null - /** - * Omit specific fields from the DiscordWebhook - */ - omit?: Prisma.DiscordWebhookOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.DiscordWebhookInclude | null -} diff --git a/prisma/generated/prisma/models/Egg.ts b/prisma/generated/prisma/models/Egg.ts deleted file mode 100644 index 825991b..0000000 --- a/prisma/generated/prisma/models/Egg.ts +++ /dev/null @@ -1,1966 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `Egg` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model Egg - * - */ -export type EggModel = runtime.Types.Result.DefaultSelection - -export type AggregateEgg = { - _count: EggCountAggregateOutputType | null - _avg: EggAvgAggregateOutputType | null - _sum: EggSumAggregateOutputType | null - _min: EggMinAggregateOutputType | null - _max: EggMaxAggregateOutputType | null -} - -export type EggAvgAggregateOutputType = { - id: number | null - nestId: number | null -} - -export type EggSumAggregateOutputType = { - id: number | null - nestId: number | null -} - -export type EggMinAggregateOutputType = { - id: number | null - uuid: string | null - name: string | null - description: string | null - author: string | null - panelType: string | null - nestId: number | null - createdAt: Date | null - updatedAt: Date | null -} - -export type EggMaxAggregateOutputType = { - id: number | null - uuid: string | null - name: string | null - description: string | null - author: string | null - panelType: string | null - nestId: number | null - createdAt: Date | null - updatedAt: Date | null -} - -export type EggCountAggregateOutputType = { - id: number - uuid: number - name: number - description: number - author: number - panelType: number - nestId: number - createdAt: number - updatedAt: number - _all: number -} - - -export type EggAvgAggregateInputType = { - id?: true - nestId?: true -} - -export type EggSumAggregateInputType = { - id?: true - nestId?: true -} - -export type EggMinAggregateInputType = { - id?: true - uuid?: true - name?: true - description?: true - author?: true - panelType?: true - nestId?: true - createdAt?: true - updatedAt?: true -} - -export type EggMaxAggregateInputType = { - id?: true - uuid?: true - name?: true - description?: true - author?: true - panelType?: true - nestId?: true - createdAt?: true - updatedAt?: true -} - -export type EggCountAggregateInputType = { - id?: true - uuid?: true - name?: true - description?: true - author?: true - panelType?: true - nestId?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type EggAggregateArgs = { - /** - * Filter which Egg to aggregate. - */ - where?: Prisma.EggWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Eggs to fetch. - */ - orderBy?: Prisma.EggOrderByWithRelationInput | Prisma.EggOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.EggWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Eggs from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Eggs. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned Eggs - **/ - _count?: true | EggCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: EggAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: EggSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: EggMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: EggMaxAggregateInputType -} - -export type GetEggAggregateType = { - [P in keyof T & keyof AggregateEgg]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type EggGroupByArgs = { - where?: Prisma.EggWhereInput - orderBy?: Prisma.EggOrderByWithAggregationInput | Prisma.EggOrderByWithAggregationInput[] - by: Prisma.EggScalarFieldEnum[] | Prisma.EggScalarFieldEnum - having?: Prisma.EggScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: EggCountAggregateInputType | true - _avg?: EggAvgAggregateInputType - _sum?: EggSumAggregateInputType - _min?: EggMinAggregateInputType - _max?: EggMaxAggregateInputType -} - -export type EggGroupByOutputType = { - id: number - uuid: string - name: string - description: string | null - author: string | null - panelType: string - nestId: number - createdAt: Date - updatedAt: Date - _count: EggCountAggregateOutputType | null - _avg: EggAvgAggregateOutputType | null - _sum: EggSumAggregateOutputType | null - _min: EggMinAggregateOutputType | null - _max: EggMaxAggregateOutputType | null -} - -type GetEggGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof EggGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type EggWhereInput = { - AND?: Prisma.EggWhereInput | Prisma.EggWhereInput[] - OR?: Prisma.EggWhereInput[] - NOT?: Prisma.EggWhereInput | Prisma.EggWhereInput[] - id?: Prisma.IntFilter<"Egg"> | number - uuid?: Prisma.StringFilter<"Egg"> | string - name?: Prisma.StringFilter<"Egg"> | string - description?: Prisma.StringNullableFilter<"Egg"> | string | null - author?: Prisma.StringNullableFilter<"Egg"> | string | null - panelType?: Prisma.StringFilter<"Egg"> | string - nestId?: Prisma.IntFilter<"Egg"> | number - createdAt?: Prisma.DateTimeFilter<"Egg"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Egg"> | Date | string - nest?: Prisma.XOR - servers?: Prisma.ServerListRelationFilter - variables?: Prisma.EggVariableListRelationFilter - properties?: Prisma.EggPropertyListRelationFilter -} - -export type EggOrderByWithRelationInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - author?: Prisma.SortOrderInput | Prisma.SortOrder - panelType?: Prisma.SortOrder - nestId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - nest?: Prisma.NestOrderByWithRelationInput - servers?: Prisma.ServerOrderByRelationAggregateInput - variables?: Prisma.EggVariableOrderByRelationAggregateInput - properties?: Prisma.EggPropertyOrderByRelationAggregateInput -} - -export type EggWhereUniqueInput = Prisma.AtLeast<{ - id?: number - uuid?: string - AND?: Prisma.EggWhereInput | Prisma.EggWhereInput[] - OR?: Prisma.EggWhereInput[] - NOT?: Prisma.EggWhereInput | Prisma.EggWhereInput[] - name?: Prisma.StringFilter<"Egg"> | string - description?: Prisma.StringNullableFilter<"Egg"> | string | null - author?: Prisma.StringNullableFilter<"Egg"> | string | null - panelType?: Prisma.StringFilter<"Egg"> | string - nestId?: Prisma.IntFilter<"Egg"> | number - createdAt?: Prisma.DateTimeFilter<"Egg"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Egg"> | Date | string - nest?: Prisma.XOR - servers?: Prisma.ServerListRelationFilter - variables?: Prisma.EggVariableListRelationFilter - properties?: Prisma.EggPropertyListRelationFilter -}, "id" | "uuid"> - -export type EggOrderByWithAggregationInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - author?: Prisma.SortOrderInput | Prisma.SortOrder - panelType?: Prisma.SortOrder - nestId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.EggCountOrderByAggregateInput - _avg?: Prisma.EggAvgOrderByAggregateInput - _max?: Prisma.EggMaxOrderByAggregateInput - _min?: Prisma.EggMinOrderByAggregateInput - _sum?: Prisma.EggSumOrderByAggregateInput -} - -export type EggScalarWhereWithAggregatesInput = { - AND?: Prisma.EggScalarWhereWithAggregatesInput | Prisma.EggScalarWhereWithAggregatesInput[] - OR?: Prisma.EggScalarWhereWithAggregatesInput[] - NOT?: Prisma.EggScalarWhereWithAggregatesInput | Prisma.EggScalarWhereWithAggregatesInput[] - id?: Prisma.IntWithAggregatesFilter<"Egg"> | number - uuid?: Prisma.StringWithAggregatesFilter<"Egg"> | string - name?: Prisma.StringWithAggregatesFilter<"Egg"> | string - description?: Prisma.StringNullableWithAggregatesFilter<"Egg"> | string | null - author?: Prisma.StringNullableWithAggregatesFilter<"Egg"> | string | null - panelType?: Prisma.StringWithAggregatesFilter<"Egg"> | string - nestId?: Prisma.IntWithAggregatesFilter<"Egg"> | number - createdAt?: Prisma.DateTimeWithAggregatesFilter<"Egg"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Egg"> | Date | string -} - -export type EggCreateInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - panelType?: string - createdAt?: Date | string - updatedAt?: Date | string - nest: Prisma.NestCreateNestedOneWithoutEggsInput - servers?: Prisma.ServerCreateNestedManyWithoutEggInput - variables?: Prisma.EggVariableCreateNestedManyWithoutEggInput - properties?: Prisma.EggPropertyCreateNestedManyWithoutEggInput -} - -export type EggUncheckedCreateInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - panelType?: string - nestId: number - createdAt?: Date | string - updatedAt?: Date | string - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutEggInput - variables?: Prisma.EggVariableUncheckedCreateNestedManyWithoutEggInput - properties?: Prisma.EggPropertyUncheckedCreateNestedManyWithoutEggInput -} - -export type EggUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - nest?: Prisma.NestUpdateOneRequiredWithoutEggsNestedInput - servers?: Prisma.ServerUpdateManyWithoutEggNestedInput - variables?: Prisma.EggVariableUpdateManyWithoutEggNestedInput - properties?: Prisma.EggPropertyUpdateManyWithoutEggNestedInput -} - -export type EggUncheckedUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - nestId?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - servers?: Prisma.ServerUncheckedUpdateManyWithoutEggNestedInput - variables?: Prisma.EggVariableUncheckedUpdateManyWithoutEggNestedInput - properties?: Prisma.EggPropertyUncheckedUpdateManyWithoutEggNestedInput -} - -export type EggCreateManyInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - panelType?: string - nestId: number - createdAt?: Date | string - updatedAt?: Date | string -} - -export type EggUpdateManyMutationInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type EggUncheckedUpdateManyInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - nestId?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type EggListRelationFilter = { - every?: Prisma.EggWhereInput - some?: Prisma.EggWhereInput - none?: Prisma.EggWhereInput -} - -export type EggOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type EggCountOrderByAggregateInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - author?: Prisma.SortOrder - panelType?: Prisma.SortOrder - nestId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type EggAvgOrderByAggregateInput = { - id?: Prisma.SortOrder - nestId?: Prisma.SortOrder -} - -export type EggMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - author?: Prisma.SortOrder - panelType?: Prisma.SortOrder - nestId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type EggMinOrderByAggregateInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - author?: Prisma.SortOrder - panelType?: Prisma.SortOrder - nestId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type EggSumOrderByAggregateInput = { - id?: Prisma.SortOrder - nestId?: Prisma.SortOrder -} - -export type EggScalarRelationFilter = { - is?: Prisma.EggWhereInput - isNot?: Prisma.EggWhereInput -} - -export type EggNullableScalarRelationFilter = { - is?: Prisma.EggWhereInput | null - isNot?: Prisma.EggWhereInput | null -} - -export type EggCreateNestedManyWithoutNestInput = { - create?: Prisma.XOR | Prisma.EggCreateWithoutNestInput[] | Prisma.EggUncheckedCreateWithoutNestInput[] - connectOrCreate?: Prisma.EggCreateOrConnectWithoutNestInput | Prisma.EggCreateOrConnectWithoutNestInput[] - createMany?: Prisma.EggCreateManyNestInputEnvelope - connect?: Prisma.EggWhereUniqueInput | Prisma.EggWhereUniqueInput[] -} - -export type EggUncheckedCreateNestedManyWithoutNestInput = { - create?: Prisma.XOR | Prisma.EggCreateWithoutNestInput[] | Prisma.EggUncheckedCreateWithoutNestInput[] - connectOrCreate?: Prisma.EggCreateOrConnectWithoutNestInput | Prisma.EggCreateOrConnectWithoutNestInput[] - createMany?: Prisma.EggCreateManyNestInputEnvelope - connect?: Prisma.EggWhereUniqueInput | Prisma.EggWhereUniqueInput[] -} - -export type EggUpdateManyWithoutNestNestedInput = { - create?: Prisma.XOR | Prisma.EggCreateWithoutNestInput[] | Prisma.EggUncheckedCreateWithoutNestInput[] - connectOrCreate?: Prisma.EggCreateOrConnectWithoutNestInput | Prisma.EggCreateOrConnectWithoutNestInput[] - upsert?: Prisma.EggUpsertWithWhereUniqueWithoutNestInput | Prisma.EggUpsertWithWhereUniqueWithoutNestInput[] - createMany?: Prisma.EggCreateManyNestInputEnvelope - set?: Prisma.EggWhereUniqueInput | Prisma.EggWhereUniqueInput[] - disconnect?: Prisma.EggWhereUniqueInput | Prisma.EggWhereUniqueInput[] - delete?: Prisma.EggWhereUniqueInput | Prisma.EggWhereUniqueInput[] - connect?: Prisma.EggWhereUniqueInput | Prisma.EggWhereUniqueInput[] - update?: Prisma.EggUpdateWithWhereUniqueWithoutNestInput | Prisma.EggUpdateWithWhereUniqueWithoutNestInput[] - updateMany?: Prisma.EggUpdateManyWithWhereWithoutNestInput | Prisma.EggUpdateManyWithWhereWithoutNestInput[] - deleteMany?: Prisma.EggScalarWhereInput | Prisma.EggScalarWhereInput[] -} - -export type EggUncheckedUpdateManyWithoutNestNestedInput = { - create?: Prisma.XOR | Prisma.EggCreateWithoutNestInput[] | Prisma.EggUncheckedCreateWithoutNestInput[] - connectOrCreate?: Prisma.EggCreateOrConnectWithoutNestInput | Prisma.EggCreateOrConnectWithoutNestInput[] - upsert?: Prisma.EggUpsertWithWhereUniqueWithoutNestInput | Prisma.EggUpsertWithWhereUniqueWithoutNestInput[] - createMany?: Prisma.EggCreateManyNestInputEnvelope - set?: Prisma.EggWhereUniqueInput | Prisma.EggWhereUniqueInput[] - disconnect?: Prisma.EggWhereUniqueInput | Prisma.EggWhereUniqueInput[] - delete?: Prisma.EggWhereUniqueInput | Prisma.EggWhereUniqueInput[] - connect?: Prisma.EggWhereUniqueInput | Prisma.EggWhereUniqueInput[] - update?: Prisma.EggUpdateWithWhereUniqueWithoutNestInput | Prisma.EggUpdateWithWhereUniqueWithoutNestInput[] - updateMany?: Prisma.EggUpdateManyWithWhereWithoutNestInput | Prisma.EggUpdateManyWithWhereWithoutNestInput[] - deleteMany?: Prisma.EggScalarWhereInput | Prisma.EggScalarWhereInput[] -} - -export type EggCreateNestedOneWithoutPropertiesInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.EggCreateOrConnectWithoutPropertiesInput - connect?: Prisma.EggWhereUniqueInput -} - -export type EggUpdateOneRequiredWithoutPropertiesNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.EggCreateOrConnectWithoutPropertiesInput - upsert?: Prisma.EggUpsertWithoutPropertiesInput - connect?: Prisma.EggWhereUniqueInput - update?: Prisma.XOR, Prisma.EggUncheckedUpdateWithoutPropertiesInput> -} - -export type EggCreateNestedOneWithoutVariablesInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.EggCreateOrConnectWithoutVariablesInput - connect?: Prisma.EggWhereUniqueInput -} - -export type EggUpdateOneRequiredWithoutVariablesNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.EggCreateOrConnectWithoutVariablesInput - upsert?: Prisma.EggUpsertWithoutVariablesInput - connect?: Prisma.EggWhereUniqueInput - update?: Prisma.XOR, Prisma.EggUncheckedUpdateWithoutVariablesInput> -} - -export type EggCreateNestedOneWithoutServersInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.EggCreateOrConnectWithoutServersInput - connect?: Prisma.EggWhereUniqueInput -} - -export type EggUpdateOneWithoutServersNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.EggCreateOrConnectWithoutServersInput - upsert?: Prisma.EggUpsertWithoutServersInput - disconnect?: Prisma.EggWhereInput | boolean - delete?: Prisma.EggWhereInput | boolean - connect?: Prisma.EggWhereUniqueInput - update?: Prisma.XOR, Prisma.EggUncheckedUpdateWithoutServersInput> -} - -export type EggCreateWithoutNestInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - panelType?: string - createdAt?: Date | string - updatedAt?: Date | string - servers?: Prisma.ServerCreateNestedManyWithoutEggInput - variables?: Prisma.EggVariableCreateNestedManyWithoutEggInput - properties?: Prisma.EggPropertyCreateNestedManyWithoutEggInput -} - -export type EggUncheckedCreateWithoutNestInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - panelType?: string - createdAt?: Date | string - updatedAt?: Date | string - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutEggInput - variables?: Prisma.EggVariableUncheckedCreateNestedManyWithoutEggInput - properties?: Prisma.EggPropertyUncheckedCreateNestedManyWithoutEggInput -} - -export type EggCreateOrConnectWithoutNestInput = { - where: Prisma.EggWhereUniqueInput - create: Prisma.XOR -} - -export type EggCreateManyNestInputEnvelope = { - data: Prisma.EggCreateManyNestInput | Prisma.EggCreateManyNestInput[] - skipDuplicates?: boolean -} - -export type EggUpsertWithWhereUniqueWithoutNestInput = { - where: Prisma.EggWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type EggUpdateWithWhereUniqueWithoutNestInput = { - where: Prisma.EggWhereUniqueInput - data: Prisma.XOR -} - -export type EggUpdateManyWithWhereWithoutNestInput = { - where: Prisma.EggScalarWhereInput - data: Prisma.XOR -} - -export type EggScalarWhereInput = { - AND?: Prisma.EggScalarWhereInput | Prisma.EggScalarWhereInput[] - OR?: Prisma.EggScalarWhereInput[] - NOT?: Prisma.EggScalarWhereInput | Prisma.EggScalarWhereInput[] - id?: Prisma.IntFilter<"Egg"> | number - uuid?: Prisma.StringFilter<"Egg"> | string - name?: Prisma.StringFilter<"Egg"> | string - description?: Prisma.StringNullableFilter<"Egg"> | string | null - author?: Prisma.StringNullableFilter<"Egg"> | string | null - panelType?: Prisma.StringFilter<"Egg"> | string - nestId?: Prisma.IntFilter<"Egg"> | number - createdAt?: Prisma.DateTimeFilter<"Egg"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Egg"> | Date | string -} - -export type EggCreateWithoutPropertiesInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - panelType?: string - createdAt?: Date | string - updatedAt?: Date | string - nest: Prisma.NestCreateNestedOneWithoutEggsInput - servers?: Prisma.ServerCreateNestedManyWithoutEggInput - variables?: Prisma.EggVariableCreateNestedManyWithoutEggInput -} - -export type EggUncheckedCreateWithoutPropertiesInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - panelType?: string - nestId: number - createdAt?: Date | string - updatedAt?: Date | string - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutEggInput - variables?: Prisma.EggVariableUncheckedCreateNestedManyWithoutEggInput -} - -export type EggCreateOrConnectWithoutPropertiesInput = { - where: Prisma.EggWhereUniqueInput - create: Prisma.XOR -} - -export type EggUpsertWithoutPropertiesInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.EggWhereInput -} - -export type EggUpdateToOneWithWhereWithoutPropertiesInput = { - where?: Prisma.EggWhereInput - data: Prisma.XOR -} - -export type EggUpdateWithoutPropertiesInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - nest?: Prisma.NestUpdateOneRequiredWithoutEggsNestedInput - servers?: Prisma.ServerUpdateManyWithoutEggNestedInput - variables?: Prisma.EggVariableUpdateManyWithoutEggNestedInput -} - -export type EggUncheckedUpdateWithoutPropertiesInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - nestId?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - servers?: Prisma.ServerUncheckedUpdateManyWithoutEggNestedInput - variables?: Prisma.EggVariableUncheckedUpdateManyWithoutEggNestedInput -} - -export type EggCreateWithoutVariablesInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - panelType?: string - createdAt?: Date | string - updatedAt?: Date | string - nest: Prisma.NestCreateNestedOneWithoutEggsInput - servers?: Prisma.ServerCreateNestedManyWithoutEggInput - properties?: Prisma.EggPropertyCreateNestedManyWithoutEggInput -} - -export type EggUncheckedCreateWithoutVariablesInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - panelType?: string - nestId: number - createdAt?: Date | string - updatedAt?: Date | string - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutEggInput - properties?: Prisma.EggPropertyUncheckedCreateNestedManyWithoutEggInput -} - -export type EggCreateOrConnectWithoutVariablesInput = { - where: Prisma.EggWhereUniqueInput - create: Prisma.XOR -} - -export type EggUpsertWithoutVariablesInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.EggWhereInput -} - -export type EggUpdateToOneWithWhereWithoutVariablesInput = { - where?: Prisma.EggWhereInput - data: Prisma.XOR -} - -export type EggUpdateWithoutVariablesInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - nest?: Prisma.NestUpdateOneRequiredWithoutEggsNestedInput - servers?: Prisma.ServerUpdateManyWithoutEggNestedInput - properties?: Prisma.EggPropertyUpdateManyWithoutEggNestedInput -} - -export type EggUncheckedUpdateWithoutVariablesInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - nestId?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - servers?: Prisma.ServerUncheckedUpdateManyWithoutEggNestedInput - properties?: Prisma.EggPropertyUncheckedUpdateManyWithoutEggNestedInput -} - -export type EggCreateWithoutServersInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - panelType?: string - createdAt?: Date | string - updatedAt?: Date | string - nest: Prisma.NestCreateNestedOneWithoutEggsInput - variables?: Prisma.EggVariableCreateNestedManyWithoutEggInput - properties?: Prisma.EggPropertyCreateNestedManyWithoutEggInput -} - -export type EggUncheckedCreateWithoutServersInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - panelType?: string - nestId: number - createdAt?: Date | string - updatedAt?: Date | string - variables?: Prisma.EggVariableUncheckedCreateNestedManyWithoutEggInput - properties?: Prisma.EggPropertyUncheckedCreateNestedManyWithoutEggInput -} - -export type EggCreateOrConnectWithoutServersInput = { - where: Prisma.EggWhereUniqueInput - create: Prisma.XOR -} - -export type EggUpsertWithoutServersInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.EggWhereInput -} - -export type EggUpdateToOneWithWhereWithoutServersInput = { - where?: Prisma.EggWhereInput - data: Prisma.XOR -} - -export type EggUpdateWithoutServersInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - nest?: Prisma.NestUpdateOneRequiredWithoutEggsNestedInput - variables?: Prisma.EggVariableUpdateManyWithoutEggNestedInput - properties?: Prisma.EggPropertyUpdateManyWithoutEggNestedInput -} - -export type EggUncheckedUpdateWithoutServersInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - nestId?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - variables?: Prisma.EggVariableUncheckedUpdateManyWithoutEggNestedInput - properties?: Prisma.EggPropertyUncheckedUpdateManyWithoutEggNestedInput -} - -export type EggCreateManyNestInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - panelType?: string - createdAt?: Date | string - updatedAt?: Date | string -} - -export type EggUpdateWithoutNestInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - servers?: Prisma.ServerUpdateManyWithoutEggNestedInput - variables?: Prisma.EggVariableUpdateManyWithoutEggNestedInput - properties?: Prisma.EggPropertyUpdateManyWithoutEggNestedInput -} - -export type EggUncheckedUpdateWithoutNestInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - servers?: Prisma.ServerUncheckedUpdateManyWithoutEggNestedInput - variables?: Prisma.EggVariableUncheckedUpdateManyWithoutEggNestedInput - properties?: Prisma.EggPropertyUncheckedUpdateManyWithoutEggNestedInput -} - -export type EggUncheckedUpdateManyWithoutNestInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - -/** - * Count Type EggCountOutputType - */ - -export type EggCountOutputType = { - servers: number - variables: number - properties: number -} - -export type EggCountOutputTypeSelect = { - servers?: boolean | EggCountOutputTypeCountServersArgs - variables?: boolean | EggCountOutputTypeCountVariablesArgs - properties?: boolean | EggCountOutputTypeCountPropertiesArgs -} - -/** - * EggCountOutputType without action - */ -export type EggCountOutputTypeDefaultArgs = { - /** - * Select specific fields to fetch from the EggCountOutputType - */ - select?: Prisma.EggCountOutputTypeSelect | null -} - -/** - * EggCountOutputType without action - */ -export type EggCountOutputTypeCountServersArgs = { - where?: Prisma.ServerWhereInput -} - -/** - * EggCountOutputType without action - */ -export type EggCountOutputTypeCountVariablesArgs = { - where?: Prisma.EggVariableWhereInput -} - -/** - * EggCountOutputType without action - */ -export type EggCountOutputTypeCountPropertiesArgs = { - where?: Prisma.EggPropertyWhereInput -} - - -export type EggSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - uuid?: boolean - name?: boolean - description?: boolean - author?: boolean - panelType?: boolean - nestId?: boolean - createdAt?: boolean - updatedAt?: boolean - nest?: boolean | Prisma.NestDefaultArgs - servers?: boolean | Prisma.Egg$serversArgs - variables?: boolean | Prisma.Egg$variablesArgs - properties?: boolean | Prisma.Egg$propertiesArgs - _count?: boolean | Prisma.EggCountOutputTypeDefaultArgs -}, ExtArgs["result"]["egg"]> - -export type EggSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - uuid?: boolean - name?: boolean - description?: boolean - author?: boolean - panelType?: boolean - nestId?: boolean - createdAt?: boolean - updatedAt?: boolean - nest?: boolean | Prisma.NestDefaultArgs -}, ExtArgs["result"]["egg"]> - -export type EggSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - uuid?: boolean - name?: boolean - description?: boolean - author?: boolean - panelType?: boolean - nestId?: boolean - createdAt?: boolean - updatedAt?: boolean - nest?: boolean | Prisma.NestDefaultArgs -}, ExtArgs["result"]["egg"]> - -export type EggSelectScalar = { - id?: boolean - uuid?: boolean - name?: boolean - description?: boolean - author?: boolean - panelType?: boolean - nestId?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type EggOmit = runtime.Types.Extensions.GetOmit<"id" | "uuid" | "name" | "description" | "author" | "panelType" | "nestId" | "createdAt" | "updatedAt", ExtArgs["result"]["egg"]> -export type EggInclude = { - nest?: boolean | Prisma.NestDefaultArgs - servers?: boolean | Prisma.Egg$serversArgs - variables?: boolean | Prisma.Egg$variablesArgs - properties?: boolean | Prisma.Egg$propertiesArgs - _count?: boolean | Prisma.EggCountOutputTypeDefaultArgs -} -export type EggIncludeCreateManyAndReturn = { - nest?: boolean | Prisma.NestDefaultArgs -} -export type EggIncludeUpdateManyAndReturn = { - nest?: boolean | Prisma.NestDefaultArgs -} - -export type $EggPayload = { - name: "Egg" - objects: { - nest: Prisma.$NestPayload - servers: Prisma.$ServerPayload[] - variables: Prisma.$EggVariablePayload[] - properties: Prisma.$EggPropertyPayload[] - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: number - uuid: string - name: string - description: string | null - author: string | null - panelType: string - nestId: number - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["egg"]> - composites: {} -} - -export type EggGetPayload = runtime.Types.Result.GetResult - -export type EggCountArgs = - Omit & { - select?: EggCountAggregateInputType | true - } - -export interface EggDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['Egg'], meta: { name: 'Egg' } } - /** - * Find zero or one Egg that matches the filter. - * @param {EggFindUniqueArgs} args - Arguments to find a Egg - * @example - * // Get one Egg - * const egg = await prisma.egg.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__EggClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one Egg that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {EggFindUniqueOrThrowArgs} args - Arguments to find a Egg - * @example - * // Get one Egg - * const egg = await prisma.egg.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__EggClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Egg that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggFindFirstArgs} args - Arguments to find a Egg - * @example - * // Get one Egg - * const egg = await prisma.egg.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__EggClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Egg that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggFindFirstOrThrowArgs} args - Arguments to find a Egg - * @example - * // Get one Egg - * const egg = await prisma.egg.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__EggClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more Eggs that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all Eggs - * const eggs = await prisma.egg.findMany() - * - * // Get first 10 Eggs - * const eggs = await prisma.egg.findMany({ take: 10 }) - * - * // Only select the `id` - * const eggWithIdOnly = await prisma.egg.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a Egg. - * @param {EggCreateArgs} args - Arguments to create a Egg. - * @example - * // Create one Egg - * const Egg = await prisma.egg.create({ - * data: { - * // ... data to create a Egg - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__EggClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many Eggs. - * @param {EggCreateManyArgs} args - Arguments to create many Eggs. - * @example - * // Create many Eggs - * const egg = await prisma.egg.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many Eggs and returns the data saved in the database. - * @param {EggCreateManyAndReturnArgs} args - Arguments to create many Eggs. - * @example - * // Create many Eggs - * const egg = await prisma.egg.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many Eggs and only return the `id` - * const eggWithIdOnly = await prisma.egg.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a Egg. - * @param {EggDeleteArgs} args - Arguments to delete one Egg. - * @example - * // Delete one Egg - * const Egg = await prisma.egg.delete({ - * where: { - * // ... filter to delete one Egg - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__EggClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one Egg. - * @param {EggUpdateArgs} args - Arguments to update one Egg. - * @example - * // Update one Egg - * const egg = await prisma.egg.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__EggClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more Eggs. - * @param {EggDeleteManyArgs} args - Arguments to filter Eggs to delete. - * @example - * // Delete a few Eggs - * const { count } = await prisma.egg.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Eggs. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many Eggs - * const egg = await prisma.egg.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Eggs and returns the data updated in the database. - * @param {EggUpdateManyAndReturnArgs} args - Arguments to update many Eggs. - * @example - * // Update many Eggs - * const egg = await prisma.egg.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more Eggs and only return the `id` - * const eggWithIdOnly = await prisma.egg.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one Egg. - * @param {EggUpsertArgs} args - Arguments to update or create a Egg. - * @example - * // Update or create a Egg - * const egg = await prisma.egg.upsert({ - * create: { - * // ... data to create a Egg - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the Egg we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__EggClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of Eggs. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggCountArgs} args - Arguments to filter Eggs to count. - * @example - * // Count the number of Eggs - * const count = await prisma.egg.count({ - * where: { - * // ... the filter for the Eggs we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a Egg. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by Egg. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends EggGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: EggGroupByArgs['orderBy'] } - : { orderBy?: EggGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetEggGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the Egg model - */ -readonly fields: EggFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for Egg. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__EggClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - nest = {}>(args?: Prisma.Subset>): Prisma.Prisma__NestClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - servers = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - variables = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - properties = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the Egg model - */ -export interface EggFieldRefs { - readonly id: Prisma.FieldRef<"Egg", 'Int'> - readonly uuid: Prisma.FieldRef<"Egg", 'String'> - readonly name: Prisma.FieldRef<"Egg", 'String'> - readonly description: Prisma.FieldRef<"Egg", 'String'> - readonly author: Prisma.FieldRef<"Egg", 'String'> - readonly panelType: Prisma.FieldRef<"Egg", 'String'> - readonly nestId: Prisma.FieldRef<"Egg", 'Int'> - readonly createdAt: Prisma.FieldRef<"Egg", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"Egg", 'DateTime'> -} - - -// Custom InputTypes -/** - * Egg findUnique - */ -export type EggFindUniqueArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelect | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggInclude | null - /** - * Filter, which Egg to fetch. - */ - where: Prisma.EggWhereUniqueInput -} - -/** - * Egg findUniqueOrThrow - */ -export type EggFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelect | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggInclude | null - /** - * Filter, which Egg to fetch. - */ - where: Prisma.EggWhereUniqueInput -} - -/** - * Egg findFirst - */ -export type EggFindFirstArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelect | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggInclude | null - /** - * Filter, which Egg to fetch. - */ - where?: Prisma.EggWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Eggs to fetch. - */ - orderBy?: Prisma.EggOrderByWithRelationInput | Prisma.EggOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Eggs. - */ - cursor?: Prisma.EggWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Eggs from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Eggs. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Eggs. - */ - distinct?: Prisma.EggScalarFieldEnum | Prisma.EggScalarFieldEnum[] -} - -/** - * Egg findFirstOrThrow - */ -export type EggFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelect | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggInclude | null - /** - * Filter, which Egg to fetch. - */ - where?: Prisma.EggWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Eggs to fetch. - */ - orderBy?: Prisma.EggOrderByWithRelationInput | Prisma.EggOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Eggs. - */ - cursor?: Prisma.EggWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Eggs from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Eggs. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Eggs. - */ - distinct?: Prisma.EggScalarFieldEnum | Prisma.EggScalarFieldEnum[] -} - -/** - * Egg findMany - */ -export type EggFindManyArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelect | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggInclude | null - /** - * Filter, which Eggs to fetch. - */ - where?: Prisma.EggWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Eggs to fetch. - */ - orderBy?: Prisma.EggOrderByWithRelationInput | Prisma.EggOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing Eggs. - */ - cursor?: Prisma.EggWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Eggs from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Eggs. - */ - skip?: number - distinct?: Prisma.EggScalarFieldEnum | Prisma.EggScalarFieldEnum[] -} - -/** - * Egg create - */ -export type EggCreateArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelect | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggInclude | null - /** - * The data needed to create a Egg. - */ - data: Prisma.XOR -} - -/** - * Egg createMany - */ -export type EggCreateManyArgs = { - /** - * The data used to create many Eggs. - */ - data: Prisma.EggCreateManyInput | Prisma.EggCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Egg createManyAndReturn - */ -export type EggCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelectCreateManyAndReturn | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * The data used to create many Eggs. - */ - data: Prisma.EggCreateManyInput | Prisma.EggCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggIncludeCreateManyAndReturn | null -} - -/** - * Egg update - */ -export type EggUpdateArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelect | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggInclude | null - /** - * The data needed to update a Egg. - */ - data: Prisma.XOR - /** - * Choose, which Egg to update. - */ - where: Prisma.EggWhereUniqueInput -} - -/** - * Egg updateMany - */ -export type EggUpdateManyArgs = { - /** - * The data used to update Eggs. - */ - data: Prisma.XOR - /** - * Filter which Eggs to update - */ - where?: Prisma.EggWhereInput - /** - * Limit how many Eggs to update. - */ - limit?: number -} - -/** - * Egg updateManyAndReturn - */ -export type EggUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * The data used to update Eggs. - */ - data: Prisma.XOR - /** - * Filter which Eggs to update - */ - where?: Prisma.EggWhereInput - /** - * Limit how many Eggs to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggIncludeUpdateManyAndReturn | null -} - -/** - * Egg upsert - */ -export type EggUpsertArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelect | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggInclude | null - /** - * The filter to search for the Egg to update in case it exists. - */ - where: Prisma.EggWhereUniqueInput - /** - * In case the Egg found by the `where` argument doesn't exist, create a new Egg with this data. - */ - create: Prisma.XOR - /** - * In case the Egg was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * Egg delete - */ -export type EggDeleteArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelect | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggInclude | null - /** - * Filter which Egg to delete. - */ - where: Prisma.EggWhereUniqueInput -} - -/** - * Egg deleteMany - */ -export type EggDeleteManyArgs = { - /** - * Filter which Eggs to delete - */ - where?: Prisma.EggWhereInput - /** - * Limit how many Eggs to delete. - */ - limit?: number -} - -/** - * Egg.servers - */ -export type Egg$serversArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - where?: Prisma.ServerWhereInput - orderBy?: Prisma.ServerOrderByWithRelationInput | Prisma.ServerOrderByWithRelationInput[] - cursor?: Prisma.ServerWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.ServerScalarFieldEnum | Prisma.ServerScalarFieldEnum[] -} - -/** - * Egg.variables - */ -export type Egg$variablesArgs = { - /** - * Select specific fields to fetch from the EggVariable - */ - select?: Prisma.EggVariableSelect | null - /** - * Omit specific fields from the EggVariable - */ - omit?: Prisma.EggVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggVariableInclude | null - where?: Prisma.EggVariableWhereInput - orderBy?: Prisma.EggVariableOrderByWithRelationInput | Prisma.EggVariableOrderByWithRelationInput[] - cursor?: Prisma.EggVariableWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.EggVariableScalarFieldEnum | Prisma.EggVariableScalarFieldEnum[] -} - -/** - * Egg.properties - */ -export type Egg$propertiesArgs = { - /** - * Select specific fields to fetch from the EggProperty - */ - select?: Prisma.EggPropertySelect | null - /** - * Omit specific fields from the EggProperty - */ - omit?: Prisma.EggPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggPropertyInclude | null - where?: Prisma.EggPropertyWhereInput - orderBy?: Prisma.EggPropertyOrderByWithRelationInput | Prisma.EggPropertyOrderByWithRelationInput[] - cursor?: Prisma.EggPropertyWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.EggPropertyScalarFieldEnum | Prisma.EggPropertyScalarFieldEnum[] -} - -/** - * Egg without action - */ -export type EggDefaultArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelect | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggInclude | null -} diff --git a/prisma/generated/prisma/models/EggProperty.ts b/prisma/generated/prisma/models/EggProperty.ts deleted file mode 100644 index 7f315d5..0000000 --- a/prisma/generated/prisma/models/EggProperty.ts +++ /dev/null @@ -1,1461 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `EggProperty` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model EggProperty - * - */ -export type EggPropertyModel = runtime.Types.Result.DefaultSelection - -export type AggregateEggProperty = { - _count: EggPropertyCountAggregateOutputType | null - _avg: EggPropertyAvgAggregateOutputType | null - _sum: EggPropertySumAggregateOutputType | null - _min: EggPropertyMinAggregateOutputType | null - _max: EggPropertyMaxAggregateOutputType | null -} - -export type EggPropertyAvgAggregateOutputType = { - eggId: number | null -} - -export type EggPropertySumAggregateOutputType = { - eggId: number | null -} - -export type EggPropertyMinAggregateOutputType = { - id: string | null - eggId: number | null - key: string | null - value: string | null - panelType: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type EggPropertyMaxAggregateOutputType = { - id: string | null - eggId: number | null - key: string | null - value: string | null - panelType: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type EggPropertyCountAggregateOutputType = { - id: number - eggId: number - key: number - value: number - panelType: number - createdAt: number - updatedAt: number - _all: number -} - - -export type EggPropertyAvgAggregateInputType = { - eggId?: true -} - -export type EggPropertySumAggregateInputType = { - eggId?: true -} - -export type EggPropertyMinAggregateInputType = { - id?: true - eggId?: true - key?: true - value?: true - panelType?: true - createdAt?: true - updatedAt?: true -} - -export type EggPropertyMaxAggregateInputType = { - id?: true - eggId?: true - key?: true - value?: true - panelType?: true - createdAt?: true - updatedAt?: true -} - -export type EggPropertyCountAggregateInputType = { - id?: true - eggId?: true - key?: true - value?: true - panelType?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type EggPropertyAggregateArgs = { - /** - * Filter which EggProperty to aggregate. - */ - where?: Prisma.EggPropertyWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of EggProperties to fetch. - */ - orderBy?: Prisma.EggPropertyOrderByWithRelationInput | Prisma.EggPropertyOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.EggPropertyWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` EggProperties from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` EggProperties. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned EggProperties - **/ - _count?: true | EggPropertyCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: EggPropertyAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: EggPropertySumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: EggPropertyMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: EggPropertyMaxAggregateInputType -} - -export type GetEggPropertyAggregateType = { - [P in keyof T & keyof AggregateEggProperty]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type EggPropertyGroupByArgs = { - where?: Prisma.EggPropertyWhereInput - orderBy?: Prisma.EggPropertyOrderByWithAggregationInput | Prisma.EggPropertyOrderByWithAggregationInput[] - by: Prisma.EggPropertyScalarFieldEnum[] | Prisma.EggPropertyScalarFieldEnum - having?: Prisma.EggPropertyScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: EggPropertyCountAggregateInputType | true - _avg?: EggPropertyAvgAggregateInputType - _sum?: EggPropertySumAggregateInputType - _min?: EggPropertyMinAggregateInputType - _max?: EggPropertyMaxAggregateInputType -} - -export type EggPropertyGroupByOutputType = { - id: string - eggId: number - key: string - value: string - panelType: string | null - createdAt: Date - updatedAt: Date - _count: EggPropertyCountAggregateOutputType | null - _avg: EggPropertyAvgAggregateOutputType | null - _sum: EggPropertySumAggregateOutputType | null - _min: EggPropertyMinAggregateOutputType | null - _max: EggPropertyMaxAggregateOutputType | null -} - -type GetEggPropertyGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof EggPropertyGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type EggPropertyWhereInput = { - AND?: Prisma.EggPropertyWhereInput | Prisma.EggPropertyWhereInput[] - OR?: Prisma.EggPropertyWhereInput[] - NOT?: Prisma.EggPropertyWhereInput | Prisma.EggPropertyWhereInput[] - id?: Prisma.StringFilter<"EggProperty"> | string - eggId?: Prisma.IntFilter<"EggProperty"> | number - key?: Prisma.StringFilter<"EggProperty"> | string - value?: Prisma.StringFilter<"EggProperty"> | string - panelType?: Prisma.StringNullableFilter<"EggProperty"> | string | null - createdAt?: Prisma.DateTimeFilter<"EggProperty"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"EggProperty"> | Date | string - egg?: Prisma.XOR -} - -export type EggPropertyOrderByWithRelationInput = { - id?: Prisma.SortOrder - eggId?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - panelType?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - egg?: Prisma.EggOrderByWithRelationInput -} - -export type EggPropertyWhereUniqueInput = Prisma.AtLeast<{ - id?: string - eggId_key_panelType?: Prisma.EggPropertyEggIdKeyPanelTypeCompoundUniqueInput - AND?: Prisma.EggPropertyWhereInput | Prisma.EggPropertyWhereInput[] - OR?: Prisma.EggPropertyWhereInput[] - NOT?: Prisma.EggPropertyWhereInput | Prisma.EggPropertyWhereInput[] - eggId?: Prisma.IntFilter<"EggProperty"> | number - key?: Prisma.StringFilter<"EggProperty"> | string - value?: Prisma.StringFilter<"EggProperty"> | string - panelType?: Prisma.StringNullableFilter<"EggProperty"> | string | null - createdAt?: Prisma.DateTimeFilter<"EggProperty"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"EggProperty"> | Date | string - egg?: Prisma.XOR -}, "id" | "eggId_key_panelType"> - -export type EggPropertyOrderByWithAggregationInput = { - id?: Prisma.SortOrder - eggId?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - panelType?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.EggPropertyCountOrderByAggregateInput - _avg?: Prisma.EggPropertyAvgOrderByAggregateInput - _max?: Prisma.EggPropertyMaxOrderByAggregateInput - _min?: Prisma.EggPropertyMinOrderByAggregateInput - _sum?: Prisma.EggPropertySumOrderByAggregateInput -} - -export type EggPropertyScalarWhereWithAggregatesInput = { - AND?: Prisma.EggPropertyScalarWhereWithAggregatesInput | Prisma.EggPropertyScalarWhereWithAggregatesInput[] - OR?: Prisma.EggPropertyScalarWhereWithAggregatesInput[] - NOT?: Prisma.EggPropertyScalarWhereWithAggregatesInput | Prisma.EggPropertyScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"EggProperty"> | string - eggId?: Prisma.IntWithAggregatesFilter<"EggProperty"> | number - key?: Prisma.StringWithAggregatesFilter<"EggProperty"> | string - value?: Prisma.StringWithAggregatesFilter<"EggProperty"> | string - panelType?: Prisma.StringNullableWithAggregatesFilter<"EggProperty"> | string | null - createdAt?: Prisma.DateTimeWithAggregatesFilter<"EggProperty"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"EggProperty"> | Date | string -} - -export type EggPropertyCreateInput = { - id?: string - key: string - value: string - panelType?: string | null - createdAt?: Date | string - updatedAt?: Date | string - egg: Prisma.EggCreateNestedOneWithoutPropertiesInput -} - -export type EggPropertyUncheckedCreateInput = { - id?: string - eggId: number - key: string - value: string - panelType?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type EggPropertyUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - panelType?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - egg?: Prisma.EggUpdateOneRequiredWithoutPropertiesNestedInput -} - -export type EggPropertyUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - eggId?: Prisma.IntFieldUpdateOperationsInput | number - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - panelType?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type EggPropertyCreateManyInput = { - id?: string - eggId: number - key: string - value: string - panelType?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type EggPropertyUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - panelType?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type EggPropertyUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - eggId?: Prisma.IntFieldUpdateOperationsInput | number - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - panelType?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type EggPropertyListRelationFilter = { - every?: Prisma.EggPropertyWhereInput - some?: Prisma.EggPropertyWhereInput - none?: Prisma.EggPropertyWhereInput -} - -export type EggPropertyOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type EggPropertyEggIdKeyPanelTypeCompoundUniqueInput = { - eggId: number - key: string - panelType: string -} - -export type EggPropertyCountOrderByAggregateInput = { - id?: Prisma.SortOrder - eggId?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - panelType?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type EggPropertyAvgOrderByAggregateInput = { - eggId?: Prisma.SortOrder -} - -export type EggPropertyMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - eggId?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - panelType?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type EggPropertyMinOrderByAggregateInput = { - id?: Prisma.SortOrder - eggId?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - panelType?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type EggPropertySumOrderByAggregateInput = { - eggId?: Prisma.SortOrder -} - -export type EggPropertyCreateNestedManyWithoutEggInput = { - create?: Prisma.XOR | Prisma.EggPropertyCreateWithoutEggInput[] | Prisma.EggPropertyUncheckedCreateWithoutEggInput[] - connectOrCreate?: Prisma.EggPropertyCreateOrConnectWithoutEggInput | Prisma.EggPropertyCreateOrConnectWithoutEggInput[] - createMany?: Prisma.EggPropertyCreateManyEggInputEnvelope - connect?: Prisma.EggPropertyWhereUniqueInput | Prisma.EggPropertyWhereUniqueInput[] -} - -export type EggPropertyUncheckedCreateNestedManyWithoutEggInput = { - create?: Prisma.XOR | Prisma.EggPropertyCreateWithoutEggInput[] | Prisma.EggPropertyUncheckedCreateWithoutEggInput[] - connectOrCreate?: Prisma.EggPropertyCreateOrConnectWithoutEggInput | Prisma.EggPropertyCreateOrConnectWithoutEggInput[] - createMany?: Prisma.EggPropertyCreateManyEggInputEnvelope - connect?: Prisma.EggPropertyWhereUniqueInput | Prisma.EggPropertyWhereUniqueInput[] -} - -export type EggPropertyUpdateManyWithoutEggNestedInput = { - create?: Prisma.XOR | Prisma.EggPropertyCreateWithoutEggInput[] | Prisma.EggPropertyUncheckedCreateWithoutEggInput[] - connectOrCreate?: Prisma.EggPropertyCreateOrConnectWithoutEggInput | Prisma.EggPropertyCreateOrConnectWithoutEggInput[] - upsert?: Prisma.EggPropertyUpsertWithWhereUniqueWithoutEggInput | Prisma.EggPropertyUpsertWithWhereUniqueWithoutEggInput[] - createMany?: Prisma.EggPropertyCreateManyEggInputEnvelope - set?: Prisma.EggPropertyWhereUniqueInput | Prisma.EggPropertyWhereUniqueInput[] - disconnect?: Prisma.EggPropertyWhereUniqueInput | Prisma.EggPropertyWhereUniqueInput[] - delete?: Prisma.EggPropertyWhereUniqueInput | Prisma.EggPropertyWhereUniqueInput[] - connect?: Prisma.EggPropertyWhereUniqueInput | Prisma.EggPropertyWhereUniqueInput[] - update?: Prisma.EggPropertyUpdateWithWhereUniqueWithoutEggInput | Prisma.EggPropertyUpdateWithWhereUniqueWithoutEggInput[] - updateMany?: Prisma.EggPropertyUpdateManyWithWhereWithoutEggInput | Prisma.EggPropertyUpdateManyWithWhereWithoutEggInput[] - deleteMany?: Prisma.EggPropertyScalarWhereInput | Prisma.EggPropertyScalarWhereInput[] -} - -export type EggPropertyUncheckedUpdateManyWithoutEggNestedInput = { - create?: Prisma.XOR | Prisma.EggPropertyCreateWithoutEggInput[] | Prisma.EggPropertyUncheckedCreateWithoutEggInput[] - connectOrCreate?: Prisma.EggPropertyCreateOrConnectWithoutEggInput | Prisma.EggPropertyCreateOrConnectWithoutEggInput[] - upsert?: Prisma.EggPropertyUpsertWithWhereUniqueWithoutEggInput | Prisma.EggPropertyUpsertWithWhereUniqueWithoutEggInput[] - createMany?: Prisma.EggPropertyCreateManyEggInputEnvelope - set?: Prisma.EggPropertyWhereUniqueInput | Prisma.EggPropertyWhereUniqueInput[] - disconnect?: Prisma.EggPropertyWhereUniqueInput | Prisma.EggPropertyWhereUniqueInput[] - delete?: Prisma.EggPropertyWhereUniqueInput | Prisma.EggPropertyWhereUniqueInput[] - connect?: Prisma.EggPropertyWhereUniqueInput | Prisma.EggPropertyWhereUniqueInput[] - update?: Prisma.EggPropertyUpdateWithWhereUniqueWithoutEggInput | Prisma.EggPropertyUpdateWithWhereUniqueWithoutEggInput[] - updateMany?: Prisma.EggPropertyUpdateManyWithWhereWithoutEggInput | Prisma.EggPropertyUpdateManyWithWhereWithoutEggInput[] - deleteMany?: Prisma.EggPropertyScalarWhereInput | Prisma.EggPropertyScalarWhereInput[] -} - -export type EggPropertyCreateWithoutEggInput = { - id?: string - key: string - value: string - panelType?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type EggPropertyUncheckedCreateWithoutEggInput = { - id?: string - key: string - value: string - panelType?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type EggPropertyCreateOrConnectWithoutEggInput = { - where: Prisma.EggPropertyWhereUniqueInput - create: Prisma.XOR -} - -export type EggPropertyCreateManyEggInputEnvelope = { - data: Prisma.EggPropertyCreateManyEggInput | Prisma.EggPropertyCreateManyEggInput[] - skipDuplicates?: boolean -} - -export type EggPropertyUpsertWithWhereUniqueWithoutEggInput = { - where: Prisma.EggPropertyWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type EggPropertyUpdateWithWhereUniqueWithoutEggInput = { - where: Prisma.EggPropertyWhereUniqueInput - data: Prisma.XOR -} - -export type EggPropertyUpdateManyWithWhereWithoutEggInput = { - where: Prisma.EggPropertyScalarWhereInput - data: Prisma.XOR -} - -export type EggPropertyScalarWhereInput = { - AND?: Prisma.EggPropertyScalarWhereInput | Prisma.EggPropertyScalarWhereInput[] - OR?: Prisma.EggPropertyScalarWhereInput[] - NOT?: Prisma.EggPropertyScalarWhereInput | Prisma.EggPropertyScalarWhereInput[] - id?: Prisma.StringFilter<"EggProperty"> | string - eggId?: Prisma.IntFilter<"EggProperty"> | number - key?: Prisma.StringFilter<"EggProperty"> | string - value?: Prisma.StringFilter<"EggProperty"> | string - panelType?: Prisma.StringNullableFilter<"EggProperty"> | string | null - createdAt?: Prisma.DateTimeFilter<"EggProperty"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"EggProperty"> | Date | string -} - -export type EggPropertyCreateManyEggInput = { - id?: string - key: string - value: string - panelType?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type EggPropertyUpdateWithoutEggInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - panelType?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type EggPropertyUncheckedUpdateWithoutEggInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - panelType?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type EggPropertyUncheckedUpdateManyWithoutEggInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - panelType?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - - -export type EggPropertySelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - eggId?: boolean - key?: boolean - value?: boolean - panelType?: boolean - createdAt?: boolean - updatedAt?: boolean - egg?: boolean | Prisma.EggDefaultArgs -}, ExtArgs["result"]["eggProperty"]> - -export type EggPropertySelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - eggId?: boolean - key?: boolean - value?: boolean - panelType?: boolean - createdAt?: boolean - updatedAt?: boolean - egg?: boolean | Prisma.EggDefaultArgs -}, ExtArgs["result"]["eggProperty"]> - -export type EggPropertySelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - eggId?: boolean - key?: boolean - value?: boolean - panelType?: boolean - createdAt?: boolean - updatedAt?: boolean - egg?: boolean | Prisma.EggDefaultArgs -}, ExtArgs["result"]["eggProperty"]> - -export type EggPropertySelectScalar = { - id?: boolean - eggId?: boolean - key?: boolean - value?: boolean - panelType?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type EggPropertyOmit = runtime.Types.Extensions.GetOmit<"id" | "eggId" | "key" | "value" | "panelType" | "createdAt" | "updatedAt", ExtArgs["result"]["eggProperty"]> -export type EggPropertyInclude = { - egg?: boolean | Prisma.EggDefaultArgs -} -export type EggPropertyIncludeCreateManyAndReturn = { - egg?: boolean | Prisma.EggDefaultArgs -} -export type EggPropertyIncludeUpdateManyAndReturn = { - egg?: boolean | Prisma.EggDefaultArgs -} - -export type $EggPropertyPayload = { - name: "EggProperty" - objects: { - egg: Prisma.$EggPayload - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - eggId: number - key: string - value: string - panelType: string | null - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["eggProperty"]> - composites: {} -} - -export type EggPropertyGetPayload = runtime.Types.Result.GetResult - -export type EggPropertyCountArgs = - Omit & { - select?: EggPropertyCountAggregateInputType | true - } - -export interface EggPropertyDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['EggProperty'], meta: { name: 'EggProperty' } } - /** - * Find zero or one EggProperty that matches the filter. - * @param {EggPropertyFindUniqueArgs} args - Arguments to find a EggProperty - * @example - * // Get one EggProperty - * const eggProperty = await prisma.eggProperty.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__EggPropertyClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one EggProperty that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {EggPropertyFindUniqueOrThrowArgs} args - Arguments to find a EggProperty - * @example - * // Get one EggProperty - * const eggProperty = await prisma.eggProperty.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__EggPropertyClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first EggProperty that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggPropertyFindFirstArgs} args - Arguments to find a EggProperty - * @example - * // Get one EggProperty - * const eggProperty = await prisma.eggProperty.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__EggPropertyClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first EggProperty that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggPropertyFindFirstOrThrowArgs} args - Arguments to find a EggProperty - * @example - * // Get one EggProperty - * const eggProperty = await prisma.eggProperty.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__EggPropertyClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more EggProperties that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggPropertyFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all EggProperties - * const eggProperties = await prisma.eggProperty.findMany() - * - * // Get first 10 EggProperties - * const eggProperties = await prisma.eggProperty.findMany({ take: 10 }) - * - * // Only select the `id` - * const eggPropertyWithIdOnly = await prisma.eggProperty.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a EggProperty. - * @param {EggPropertyCreateArgs} args - Arguments to create a EggProperty. - * @example - * // Create one EggProperty - * const EggProperty = await prisma.eggProperty.create({ - * data: { - * // ... data to create a EggProperty - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__EggPropertyClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many EggProperties. - * @param {EggPropertyCreateManyArgs} args - Arguments to create many EggProperties. - * @example - * // Create many EggProperties - * const eggProperty = await prisma.eggProperty.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many EggProperties and returns the data saved in the database. - * @param {EggPropertyCreateManyAndReturnArgs} args - Arguments to create many EggProperties. - * @example - * // Create many EggProperties - * const eggProperty = await prisma.eggProperty.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many EggProperties and only return the `id` - * const eggPropertyWithIdOnly = await prisma.eggProperty.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a EggProperty. - * @param {EggPropertyDeleteArgs} args - Arguments to delete one EggProperty. - * @example - * // Delete one EggProperty - * const EggProperty = await prisma.eggProperty.delete({ - * where: { - * // ... filter to delete one EggProperty - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__EggPropertyClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one EggProperty. - * @param {EggPropertyUpdateArgs} args - Arguments to update one EggProperty. - * @example - * // Update one EggProperty - * const eggProperty = await prisma.eggProperty.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__EggPropertyClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more EggProperties. - * @param {EggPropertyDeleteManyArgs} args - Arguments to filter EggProperties to delete. - * @example - * // Delete a few EggProperties - * const { count } = await prisma.eggProperty.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more EggProperties. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggPropertyUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many EggProperties - * const eggProperty = await prisma.eggProperty.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more EggProperties and returns the data updated in the database. - * @param {EggPropertyUpdateManyAndReturnArgs} args - Arguments to update many EggProperties. - * @example - * // Update many EggProperties - * const eggProperty = await prisma.eggProperty.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more EggProperties and only return the `id` - * const eggPropertyWithIdOnly = await prisma.eggProperty.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one EggProperty. - * @param {EggPropertyUpsertArgs} args - Arguments to update or create a EggProperty. - * @example - * // Update or create a EggProperty - * const eggProperty = await prisma.eggProperty.upsert({ - * create: { - * // ... data to create a EggProperty - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the EggProperty we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__EggPropertyClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of EggProperties. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggPropertyCountArgs} args - Arguments to filter EggProperties to count. - * @example - * // Count the number of EggProperties - * const count = await prisma.eggProperty.count({ - * where: { - * // ... the filter for the EggProperties we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a EggProperty. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggPropertyAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by EggProperty. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggPropertyGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends EggPropertyGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: EggPropertyGroupByArgs['orderBy'] } - : { orderBy?: EggPropertyGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetEggPropertyGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the EggProperty model - */ -readonly fields: EggPropertyFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for EggProperty. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__EggPropertyClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - egg = {}>(args?: Prisma.Subset>): Prisma.Prisma__EggClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the EggProperty model - */ -export interface EggPropertyFieldRefs { - readonly id: Prisma.FieldRef<"EggProperty", 'String'> - readonly eggId: Prisma.FieldRef<"EggProperty", 'Int'> - readonly key: Prisma.FieldRef<"EggProperty", 'String'> - readonly value: Prisma.FieldRef<"EggProperty", 'String'> - readonly panelType: Prisma.FieldRef<"EggProperty", 'String'> - readonly createdAt: Prisma.FieldRef<"EggProperty", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"EggProperty", 'DateTime'> -} - - -// Custom InputTypes -/** - * EggProperty findUnique - */ -export type EggPropertyFindUniqueArgs = { - /** - * Select specific fields to fetch from the EggProperty - */ - select?: Prisma.EggPropertySelect | null - /** - * Omit specific fields from the EggProperty - */ - omit?: Prisma.EggPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggPropertyInclude | null - /** - * Filter, which EggProperty to fetch. - */ - where: Prisma.EggPropertyWhereUniqueInput -} - -/** - * EggProperty findUniqueOrThrow - */ -export type EggPropertyFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the EggProperty - */ - select?: Prisma.EggPropertySelect | null - /** - * Omit specific fields from the EggProperty - */ - omit?: Prisma.EggPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggPropertyInclude | null - /** - * Filter, which EggProperty to fetch. - */ - where: Prisma.EggPropertyWhereUniqueInput -} - -/** - * EggProperty findFirst - */ -export type EggPropertyFindFirstArgs = { - /** - * Select specific fields to fetch from the EggProperty - */ - select?: Prisma.EggPropertySelect | null - /** - * Omit specific fields from the EggProperty - */ - omit?: Prisma.EggPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggPropertyInclude | null - /** - * Filter, which EggProperty to fetch. - */ - where?: Prisma.EggPropertyWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of EggProperties to fetch. - */ - orderBy?: Prisma.EggPropertyOrderByWithRelationInput | Prisma.EggPropertyOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for EggProperties. - */ - cursor?: Prisma.EggPropertyWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` EggProperties from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` EggProperties. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of EggProperties. - */ - distinct?: Prisma.EggPropertyScalarFieldEnum | Prisma.EggPropertyScalarFieldEnum[] -} - -/** - * EggProperty findFirstOrThrow - */ -export type EggPropertyFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the EggProperty - */ - select?: Prisma.EggPropertySelect | null - /** - * Omit specific fields from the EggProperty - */ - omit?: Prisma.EggPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggPropertyInclude | null - /** - * Filter, which EggProperty to fetch. - */ - where?: Prisma.EggPropertyWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of EggProperties to fetch. - */ - orderBy?: Prisma.EggPropertyOrderByWithRelationInput | Prisma.EggPropertyOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for EggProperties. - */ - cursor?: Prisma.EggPropertyWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` EggProperties from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` EggProperties. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of EggProperties. - */ - distinct?: Prisma.EggPropertyScalarFieldEnum | Prisma.EggPropertyScalarFieldEnum[] -} - -/** - * EggProperty findMany - */ -export type EggPropertyFindManyArgs = { - /** - * Select specific fields to fetch from the EggProperty - */ - select?: Prisma.EggPropertySelect | null - /** - * Omit specific fields from the EggProperty - */ - omit?: Prisma.EggPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggPropertyInclude | null - /** - * Filter, which EggProperties to fetch. - */ - where?: Prisma.EggPropertyWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of EggProperties to fetch. - */ - orderBy?: Prisma.EggPropertyOrderByWithRelationInput | Prisma.EggPropertyOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing EggProperties. - */ - cursor?: Prisma.EggPropertyWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` EggProperties from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` EggProperties. - */ - skip?: number - distinct?: Prisma.EggPropertyScalarFieldEnum | Prisma.EggPropertyScalarFieldEnum[] -} - -/** - * EggProperty create - */ -export type EggPropertyCreateArgs = { - /** - * Select specific fields to fetch from the EggProperty - */ - select?: Prisma.EggPropertySelect | null - /** - * Omit specific fields from the EggProperty - */ - omit?: Prisma.EggPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggPropertyInclude | null - /** - * The data needed to create a EggProperty. - */ - data: Prisma.XOR -} - -/** - * EggProperty createMany - */ -export type EggPropertyCreateManyArgs = { - /** - * The data used to create many EggProperties. - */ - data: Prisma.EggPropertyCreateManyInput | Prisma.EggPropertyCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * EggProperty createManyAndReturn - */ -export type EggPropertyCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the EggProperty - */ - select?: Prisma.EggPropertySelectCreateManyAndReturn | null - /** - * Omit specific fields from the EggProperty - */ - omit?: Prisma.EggPropertyOmit | null - /** - * The data used to create many EggProperties. - */ - data: Prisma.EggPropertyCreateManyInput | Prisma.EggPropertyCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggPropertyIncludeCreateManyAndReturn | null -} - -/** - * EggProperty update - */ -export type EggPropertyUpdateArgs = { - /** - * Select specific fields to fetch from the EggProperty - */ - select?: Prisma.EggPropertySelect | null - /** - * Omit specific fields from the EggProperty - */ - omit?: Prisma.EggPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggPropertyInclude | null - /** - * The data needed to update a EggProperty. - */ - data: Prisma.XOR - /** - * Choose, which EggProperty to update. - */ - where: Prisma.EggPropertyWhereUniqueInput -} - -/** - * EggProperty updateMany - */ -export type EggPropertyUpdateManyArgs = { - /** - * The data used to update EggProperties. - */ - data: Prisma.XOR - /** - * Filter which EggProperties to update - */ - where?: Prisma.EggPropertyWhereInput - /** - * Limit how many EggProperties to update. - */ - limit?: number -} - -/** - * EggProperty updateManyAndReturn - */ -export type EggPropertyUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the EggProperty - */ - select?: Prisma.EggPropertySelectUpdateManyAndReturn | null - /** - * Omit specific fields from the EggProperty - */ - omit?: Prisma.EggPropertyOmit | null - /** - * The data used to update EggProperties. - */ - data: Prisma.XOR - /** - * Filter which EggProperties to update - */ - where?: Prisma.EggPropertyWhereInput - /** - * Limit how many EggProperties to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggPropertyIncludeUpdateManyAndReturn | null -} - -/** - * EggProperty upsert - */ -export type EggPropertyUpsertArgs = { - /** - * Select specific fields to fetch from the EggProperty - */ - select?: Prisma.EggPropertySelect | null - /** - * Omit specific fields from the EggProperty - */ - omit?: Prisma.EggPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggPropertyInclude | null - /** - * The filter to search for the EggProperty to update in case it exists. - */ - where: Prisma.EggPropertyWhereUniqueInput - /** - * In case the EggProperty found by the `where` argument doesn't exist, create a new EggProperty with this data. - */ - create: Prisma.XOR - /** - * In case the EggProperty was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * EggProperty delete - */ -export type EggPropertyDeleteArgs = { - /** - * Select specific fields to fetch from the EggProperty - */ - select?: Prisma.EggPropertySelect | null - /** - * Omit specific fields from the EggProperty - */ - omit?: Prisma.EggPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggPropertyInclude | null - /** - * Filter which EggProperty to delete. - */ - where: Prisma.EggPropertyWhereUniqueInput -} - -/** - * EggProperty deleteMany - */ -export type EggPropertyDeleteManyArgs = { - /** - * Filter which EggProperties to delete - */ - where?: Prisma.EggPropertyWhereInput - /** - * Limit how many EggProperties to delete. - */ - limit?: number -} - -/** - * EggProperty without action - */ -export type EggPropertyDefaultArgs = { - /** - * Select specific fields to fetch from the EggProperty - */ - select?: Prisma.EggPropertySelect | null - /** - * Omit specific fields from the EggProperty - */ - omit?: Prisma.EggPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggPropertyInclude | null -} diff --git a/prisma/generated/prisma/models/EggVariable.ts b/prisma/generated/prisma/models/EggVariable.ts deleted file mode 100644 index b7d6fd0..0000000 --- a/prisma/generated/prisma/models/EggVariable.ts +++ /dev/null @@ -1,1761 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `EggVariable` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model EggVariable - * - */ -export type EggVariableModel = runtime.Types.Result.DefaultSelection - -export type AggregateEggVariable = { - _count: EggVariableCountAggregateOutputType | null - _avg: EggVariableAvgAggregateOutputType | null - _sum: EggVariableSumAggregateOutputType | null - _min: EggVariableMinAggregateOutputType | null - _max: EggVariableMaxAggregateOutputType | null -} - -export type EggVariableAvgAggregateOutputType = { - id: number | null - eggId: number | null -} - -export type EggVariableSumAggregateOutputType = { - id: number | null - eggId: number | null -} - -export type EggVariableMinAggregateOutputType = { - id: number | null - eggId: number | null - name: string | null - description: string | null - envVariable: string | null - defaultValue: string | null - userViewable: boolean | null - userEditable: boolean | null - rules: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type EggVariableMaxAggregateOutputType = { - id: number | null - eggId: number | null - name: string | null - description: string | null - envVariable: string | null - defaultValue: string | null - userViewable: boolean | null - userEditable: boolean | null - rules: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type EggVariableCountAggregateOutputType = { - id: number - eggId: number - name: number - description: number - envVariable: number - defaultValue: number - userViewable: number - userEditable: number - rules: number - createdAt: number - updatedAt: number - _all: number -} - - -export type EggVariableAvgAggregateInputType = { - id?: true - eggId?: true -} - -export type EggVariableSumAggregateInputType = { - id?: true - eggId?: true -} - -export type EggVariableMinAggregateInputType = { - id?: true - eggId?: true - name?: true - description?: true - envVariable?: true - defaultValue?: true - userViewable?: true - userEditable?: true - rules?: true - createdAt?: true - updatedAt?: true -} - -export type EggVariableMaxAggregateInputType = { - id?: true - eggId?: true - name?: true - description?: true - envVariable?: true - defaultValue?: true - userViewable?: true - userEditable?: true - rules?: true - createdAt?: true - updatedAt?: true -} - -export type EggVariableCountAggregateInputType = { - id?: true - eggId?: true - name?: true - description?: true - envVariable?: true - defaultValue?: true - userViewable?: true - userEditable?: true - rules?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type EggVariableAggregateArgs = { - /** - * Filter which EggVariable to aggregate. - */ - where?: Prisma.EggVariableWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of EggVariables to fetch. - */ - orderBy?: Prisma.EggVariableOrderByWithRelationInput | Prisma.EggVariableOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.EggVariableWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` EggVariables from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` EggVariables. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned EggVariables - **/ - _count?: true | EggVariableCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: EggVariableAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: EggVariableSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: EggVariableMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: EggVariableMaxAggregateInputType -} - -export type GetEggVariableAggregateType = { - [P in keyof T & keyof AggregateEggVariable]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type EggVariableGroupByArgs = { - where?: Prisma.EggVariableWhereInput - orderBy?: Prisma.EggVariableOrderByWithAggregationInput | Prisma.EggVariableOrderByWithAggregationInput[] - by: Prisma.EggVariableScalarFieldEnum[] | Prisma.EggVariableScalarFieldEnum - having?: Prisma.EggVariableScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: EggVariableCountAggregateInputType | true - _avg?: EggVariableAvgAggregateInputType - _sum?: EggVariableSumAggregateInputType - _min?: EggVariableMinAggregateInputType - _max?: EggVariableMaxAggregateInputType -} - -export type EggVariableGroupByOutputType = { - id: number - eggId: number - name: string - description: string | null - envVariable: string - defaultValue: string | null - userViewable: boolean - userEditable: boolean - rules: string | null - createdAt: Date - updatedAt: Date - _count: EggVariableCountAggregateOutputType | null - _avg: EggVariableAvgAggregateOutputType | null - _sum: EggVariableSumAggregateOutputType | null - _min: EggVariableMinAggregateOutputType | null - _max: EggVariableMaxAggregateOutputType | null -} - -type GetEggVariableGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof EggVariableGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type EggVariableWhereInput = { - AND?: Prisma.EggVariableWhereInput | Prisma.EggVariableWhereInput[] - OR?: Prisma.EggVariableWhereInput[] - NOT?: Prisma.EggVariableWhereInput | Prisma.EggVariableWhereInput[] - id?: Prisma.IntFilter<"EggVariable"> | number - eggId?: Prisma.IntFilter<"EggVariable"> | number - name?: Prisma.StringFilter<"EggVariable"> | string - description?: Prisma.StringNullableFilter<"EggVariable"> | string | null - envVariable?: Prisma.StringFilter<"EggVariable"> | string - defaultValue?: Prisma.StringNullableFilter<"EggVariable"> | string | null - userViewable?: Prisma.BoolFilter<"EggVariable"> | boolean - userEditable?: Prisma.BoolFilter<"EggVariable"> | boolean - rules?: Prisma.StringNullableFilter<"EggVariable"> | string | null - createdAt?: Prisma.DateTimeFilter<"EggVariable"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"EggVariable"> | Date | string - egg?: Prisma.XOR - serverVariables?: Prisma.ServerVariableListRelationFilter -} - -export type EggVariableOrderByWithRelationInput = { - id?: Prisma.SortOrder - eggId?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - envVariable?: Prisma.SortOrder - defaultValue?: Prisma.SortOrderInput | Prisma.SortOrder - userViewable?: Prisma.SortOrder - userEditable?: Prisma.SortOrder - rules?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - egg?: Prisma.EggOrderByWithRelationInput - serverVariables?: Prisma.ServerVariableOrderByRelationAggregateInput -} - -export type EggVariableWhereUniqueInput = Prisma.AtLeast<{ - id?: number - AND?: Prisma.EggVariableWhereInput | Prisma.EggVariableWhereInput[] - OR?: Prisma.EggVariableWhereInput[] - NOT?: Prisma.EggVariableWhereInput | Prisma.EggVariableWhereInput[] - eggId?: Prisma.IntFilter<"EggVariable"> | number - name?: Prisma.StringFilter<"EggVariable"> | string - description?: Prisma.StringNullableFilter<"EggVariable"> | string | null - envVariable?: Prisma.StringFilter<"EggVariable"> | string - defaultValue?: Prisma.StringNullableFilter<"EggVariable"> | string | null - userViewable?: Prisma.BoolFilter<"EggVariable"> | boolean - userEditable?: Prisma.BoolFilter<"EggVariable"> | boolean - rules?: Prisma.StringNullableFilter<"EggVariable"> | string | null - createdAt?: Prisma.DateTimeFilter<"EggVariable"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"EggVariable"> | Date | string - egg?: Prisma.XOR - serverVariables?: Prisma.ServerVariableListRelationFilter -}, "id"> - -export type EggVariableOrderByWithAggregationInput = { - id?: Prisma.SortOrder - eggId?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - envVariable?: Prisma.SortOrder - defaultValue?: Prisma.SortOrderInput | Prisma.SortOrder - userViewable?: Prisma.SortOrder - userEditable?: Prisma.SortOrder - rules?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.EggVariableCountOrderByAggregateInput - _avg?: Prisma.EggVariableAvgOrderByAggregateInput - _max?: Prisma.EggVariableMaxOrderByAggregateInput - _min?: Prisma.EggVariableMinOrderByAggregateInput - _sum?: Prisma.EggVariableSumOrderByAggregateInput -} - -export type EggVariableScalarWhereWithAggregatesInput = { - AND?: Prisma.EggVariableScalarWhereWithAggregatesInput | Prisma.EggVariableScalarWhereWithAggregatesInput[] - OR?: Prisma.EggVariableScalarWhereWithAggregatesInput[] - NOT?: Prisma.EggVariableScalarWhereWithAggregatesInput | Prisma.EggVariableScalarWhereWithAggregatesInput[] - id?: Prisma.IntWithAggregatesFilter<"EggVariable"> | number - eggId?: Prisma.IntWithAggregatesFilter<"EggVariable"> | number - name?: Prisma.StringWithAggregatesFilter<"EggVariable"> | string - description?: Prisma.StringNullableWithAggregatesFilter<"EggVariable"> | string | null - envVariable?: Prisma.StringWithAggregatesFilter<"EggVariable"> | string - defaultValue?: Prisma.StringNullableWithAggregatesFilter<"EggVariable"> | string | null - userViewable?: Prisma.BoolWithAggregatesFilter<"EggVariable"> | boolean - userEditable?: Prisma.BoolWithAggregatesFilter<"EggVariable"> | boolean - rules?: Prisma.StringNullableWithAggregatesFilter<"EggVariable"> | string | null - createdAt?: Prisma.DateTimeWithAggregatesFilter<"EggVariable"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"EggVariable"> | Date | string -} - -export type EggVariableCreateInput = { - id: number - name: string - description?: string | null - envVariable: string - defaultValue?: string | null - userViewable?: boolean - userEditable?: boolean - rules?: string | null - createdAt?: Date | string - updatedAt?: Date | string - egg: Prisma.EggCreateNestedOneWithoutVariablesInput - serverVariables?: Prisma.ServerVariableCreateNestedManyWithoutVariableInput -} - -export type EggVariableUncheckedCreateInput = { - id: number - eggId: number - name: string - description?: string | null - envVariable: string - defaultValue?: string | null - userViewable?: boolean - userEditable?: boolean - rules?: string | null - createdAt?: Date | string - updatedAt?: Date | string - serverVariables?: Prisma.ServerVariableUncheckedCreateNestedManyWithoutVariableInput -} - -export type EggVariableUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - envVariable?: Prisma.StringFieldUpdateOperationsInput | string - defaultValue?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - userViewable?: Prisma.BoolFieldUpdateOperationsInput | boolean - userEditable?: Prisma.BoolFieldUpdateOperationsInput | boolean - rules?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - egg?: Prisma.EggUpdateOneRequiredWithoutVariablesNestedInput - serverVariables?: Prisma.ServerVariableUpdateManyWithoutVariableNestedInput -} - -export type EggVariableUncheckedUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - envVariable?: Prisma.StringFieldUpdateOperationsInput | string - defaultValue?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - userViewable?: Prisma.BoolFieldUpdateOperationsInput | boolean - userEditable?: Prisma.BoolFieldUpdateOperationsInput | boolean - rules?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - serverVariables?: Prisma.ServerVariableUncheckedUpdateManyWithoutVariableNestedInput -} - -export type EggVariableCreateManyInput = { - id: number - eggId: number - name: string - description?: string | null - envVariable: string - defaultValue?: string | null - userViewable?: boolean - userEditable?: boolean - rules?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type EggVariableUpdateManyMutationInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - envVariable?: Prisma.StringFieldUpdateOperationsInput | string - defaultValue?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - userViewable?: Prisma.BoolFieldUpdateOperationsInput | boolean - userEditable?: Prisma.BoolFieldUpdateOperationsInput | boolean - rules?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type EggVariableUncheckedUpdateManyInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - envVariable?: Prisma.StringFieldUpdateOperationsInput | string - defaultValue?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - userViewable?: Prisma.BoolFieldUpdateOperationsInput | boolean - userEditable?: Prisma.BoolFieldUpdateOperationsInput | boolean - rules?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type EggVariableListRelationFilter = { - every?: Prisma.EggVariableWhereInput - some?: Prisma.EggVariableWhereInput - none?: Prisma.EggVariableWhereInput -} - -export type EggVariableOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type EggVariableCountOrderByAggregateInput = { - id?: Prisma.SortOrder - eggId?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - envVariable?: Prisma.SortOrder - defaultValue?: Prisma.SortOrder - userViewable?: Prisma.SortOrder - userEditable?: Prisma.SortOrder - rules?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type EggVariableAvgOrderByAggregateInput = { - id?: Prisma.SortOrder - eggId?: Prisma.SortOrder -} - -export type EggVariableMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - eggId?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - envVariable?: Prisma.SortOrder - defaultValue?: Prisma.SortOrder - userViewable?: Prisma.SortOrder - userEditable?: Prisma.SortOrder - rules?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type EggVariableMinOrderByAggregateInput = { - id?: Prisma.SortOrder - eggId?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - envVariable?: Prisma.SortOrder - defaultValue?: Prisma.SortOrder - userViewable?: Prisma.SortOrder - userEditable?: Prisma.SortOrder - rules?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type EggVariableSumOrderByAggregateInput = { - id?: Prisma.SortOrder - eggId?: Prisma.SortOrder -} - -export type EggVariableScalarRelationFilter = { - is?: Prisma.EggVariableWhereInput - isNot?: Prisma.EggVariableWhereInput -} - -export type EggVariableCreateNestedManyWithoutEggInput = { - create?: Prisma.XOR | Prisma.EggVariableCreateWithoutEggInput[] | Prisma.EggVariableUncheckedCreateWithoutEggInput[] - connectOrCreate?: Prisma.EggVariableCreateOrConnectWithoutEggInput | Prisma.EggVariableCreateOrConnectWithoutEggInput[] - createMany?: Prisma.EggVariableCreateManyEggInputEnvelope - connect?: Prisma.EggVariableWhereUniqueInput | Prisma.EggVariableWhereUniqueInput[] -} - -export type EggVariableUncheckedCreateNestedManyWithoutEggInput = { - create?: Prisma.XOR | Prisma.EggVariableCreateWithoutEggInput[] | Prisma.EggVariableUncheckedCreateWithoutEggInput[] - connectOrCreate?: Prisma.EggVariableCreateOrConnectWithoutEggInput | Prisma.EggVariableCreateOrConnectWithoutEggInput[] - createMany?: Prisma.EggVariableCreateManyEggInputEnvelope - connect?: Prisma.EggVariableWhereUniqueInput | Prisma.EggVariableWhereUniqueInput[] -} - -export type EggVariableUpdateManyWithoutEggNestedInput = { - create?: Prisma.XOR | Prisma.EggVariableCreateWithoutEggInput[] | Prisma.EggVariableUncheckedCreateWithoutEggInput[] - connectOrCreate?: Prisma.EggVariableCreateOrConnectWithoutEggInput | Prisma.EggVariableCreateOrConnectWithoutEggInput[] - upsert?: Prisma.EggVariableUpsertWithWhereUniqueWithoutEggInput | Prisma.EggVariableUpsertWithWhereUniqueWithoutEggInput[] - createMany?: Prisma.EggVariableCreateManyEggInputEnvelope - set?: Prisma.EggVariableWhereUniqueInput | Prisma.EggVariableWhereUniqueInput[] - disconnect?: Prisma.EggVariableWhereUniqueInput | Prisma.EggVariableWhereUniqueInput[] - delete?: Prisma.EggVariableWhereUniqueInput | Prisma.EggVariableWhereUniqueInput[] - connect?: Prisma.EggVariableWhereUniqueInput | Prisma.EggVariableWhereUniqueInput[] - update?: Prisma.EggVariableUpdateWithWhereUniqueWithoutEggInput | Prisma.EggVariableUpdateWithWhereUniqueWithoutEggInput[] - updateMany?: Prisma.EggVariableUpdateManyWithWhereWithoutEggInput | Prisma.EggVariableUpdateManyWithWhereWithoutEggInput[] - deleteMany?: Prisma.EggVariableScalarWhereInput | Prisma.EggVariableScalarWhereInput[] -} - -export type EggVariableUncheckedUpdateManyWithoutEggNestedInput = { - create?: Prisma.XOR | Prisma.EggVariableCreateWithoutEggInput[] | Prisma.EggVariableUncheckedCreateWithoutEggInput[] - connectOrCreate?: Prisma.EggVariableCreateOrConnectWithoutEggInput | Prisma.EggVariableCreateOrConnectWithoutEggInput[] - upsert?: Prisma.EggVariableUpsertWithWhereUniqueWithoutEggInput | Prisma.EggVariableUpsertWithWhereUniqueWithoutEggInput[] - createMany?: Prisma.EggVariableCreateManyEggInputEnvelope - set?: Prisma.EggVariableWhereUniqueInput | Prisma.EggVariableWhereUniqueInput[] - disconnect?: Prisma.EggVariableWhereUniqueInput | Prisma.EggVariableWhereUniqueInput[] - delete?: Prisma.EggVariableWhereUniqueInput | Prisma.EggVariableWhereUniqueInput[] - connect?: Prisma.EggVariableWhereUniqueInput | Prisma.EggVariableWhereUniqueInput[] - update?: Prisma.EggVariableUpdateWithWhereUniqueWithoutEggInput | Prisma.EggVariableUpdateWithWhereUniqueWithoutEggInput[] - updateMany?: Prisma.EggVariableUpdateManyWithWhereWithoutEggInput | Prisma.EggVariableUpdateManyWithWhereWithoutEggInput[] - deleteMany?: Prisma.EggVariableScalarWhereInput | Prisma.EggVariableScalarWhereInput[] -} - -export type EggVariableCreateNestedOneWithoutServerVariablesInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.EggVariableCreateOrConnectWithoutServerVariablesInput - connect?: Prisma.EggVariableWhereUniqueInput -} - -export type EggVariableUpdateOneRequiredWithoutServerVariablesNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.EggVariableCreateOrConnectWithoutServerVariablesInput - upsert?: Prisma.EggVariableUpsertWithoutServerVariablesInput - connect?: Prisma.EggVariableWhereUniqueInput - update?: Prisma.XOR, Prisma.EggVariableUncheckedUpdateWithoutServerVariablesInput> -} - -export type EggVariableCreateWithoutEggInput = { - id: number - name: string - description?: string | null - envVariable: string - defaultValue?: string | null - userViewable?: boolean - userEditable?: boolean - rules?: string | null - createdAt?: Date | string - updatedAt?: Date | string - serverVariables?: Prisma.ServerVariableCreateNestedManyWithoutVariableInput -} - -export type EggVariableUncheckedCreateWithoutEggInput = { - id: number - name: string - description?: string | null - envVariable: string - defaultValue?: string | null - userViewable?: boolean - userEditable?: boolean - rules?: string | null - createdAt?: Date | string - updatedAt?: Date | string - serverVariables?: Prisma.ServerVariableUncheckedCreateNestedManyWithoutVariableInput -} - -export type EggVariableCreateOrConnectWithoutEggInput = { - where: Prisma.EggVariableWhereUniqueInput - create: Prisma.XOR -} - -export type EggVariableCreateManyEggInputEnvelope = { - data: Prisma.EggVariableCreateManyEggInput | Prisma.EggVariableCreateManyEggInput[] - skipDuplicates?: boolean -} - -export type EggVariableUpsertWithWhereUniqueWithoutEggInput = { - where: Prisma.EggVariableWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type EggVariableUpdateWithWhereUniqueWithoutEggInput = { - where: Prisma.EggVariableWhereUniqueInput - data: Prisma.XOR -} - -export type EggVariableUpdateManyWithWhereWithoutEggInput = { - where: Prisma.EggVariableScalarWhereInput - data: Prisma.XOR -} - -export type EggVariableScalarWhereInput = { - AND?: Prisma.EggVariableScalarWhereInput | Prisma.EggVariableScalarWhereInput[] - OR?: Prisma.EggVariableScalarWhereInput[] - NOT?: Prisma.EggVariableScalarWhereInput | Prisma.EggVariableScalarWhereInput[] - id?: Prisma.IntFilter<"EggVariable"> | number - eggId?: Prisma.IntFilter<"EggVariable"> | number - name?: Prisma.StringFilter<"EggVariable"> | string - description?: Prisma.StringNullableFilter<"EggVariable"> | string | null - envVariable?: Prisma.StringFilter<"EggVariable"> | string - defaultValue?: Prisma.StringNullableFilter<"EggVariable"> | string | null - userViewable?: Prisma.BoolFilter<"EggVariable"> | boolean - userEditable?: Prisma.BoolFilter<"EggVariable"> | boolean - rules?: Prisma.StringNullableFilter<"EggVariable"> | string | null - createdAt?: Prisma.DateTimeFilter<"EggVariable"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"EggVariable"> | Date | string -} - -export type EggVariableCreateWithoutServerVariablesInput = { - id: number - name: string - description?: string | null - envVariable: string - defaultValue?: string | null - userViewable?: boolean - userEditable?: boolean - rules?: string | null - createdAt?: Date | string - updatedAt?: Date | string - egg: Prisma.EggCreateNestedOneWithoutVariablesInput -} - -export type EggVariableUncheckedCreateWithoutServerVariablesInput = { - id: number - eggId: number - name: string - description?: string | null - envVariable: string - defaultValue?: string | null - userViewable?: boolean - userEditable?: boolean - rules?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type EggVariableCreateOrConnectWithoutServerVariablesInput = { - where: Prisma.EggVariableWhereUniqueInput - create: Prisma.XOR -} - -export type EggVariableUpsertWithoutServerVariablesInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.EggVariableWhereInput -} - -export type EggVariableUpdateToOneWithWhereWithoutServerVariablesInput = { - where?: Prisma.EggVariableWhereInput - data: Prisma.XOR -} - -export type EggVariableUpdateWithoutServerVariablesInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - envVariable?: Prisma.StringFieldUpdateOperationsInput | string - defaultValue?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - userViewable?: Prisma.BoolFieldUpdateOperationsInput | boolean - userEditable?: Prisma.BoolFieldUpdateOperationsInput | boolean - rules?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - egg?: Prisma.EggUpdateOneRequiredWithoutVariablesNestedInput -} - -export type EggVariableUncheckedUpdateWithoutServerVariablesInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - envVariable?: Prisma.StringFieldUpdateOperationsInput | string - defaultValue?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - userViewable?: Prisma.BoolFieldUpdateOperationsInput | boolean - userEditable?: Prisma.BoolFieldUpdateOperationsInput | boolean - rules?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type EggVariableCreateManyEggInput = { - id: number - name: string - description?: string | null - envVariable: string - defaultValue?: string | null - userViewable?: boolean - userEditable?: boolean - rules?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type EggVariableUpdateWithoutEggInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - envVariable?: Prisma.StringFieldUpdateOperationsInput | string - defaultValue?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - userViewable?: Prisma.BoolFieldUpdateOperationsInput | boolean - userEditable?: Prisma.BoolFieldUpdateOperationsInput | boolean - rules?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - serverVariables?: Prisma.ServerVariableUpdateManyWithoutVariableNestedInput -} - -export type EggVariableUncheckedUpdateWithoutEggInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - envVariable?: Prisma.StringFieldUpdateOperationsInput | string - defaultValue?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - userViewable?: Prisma.BoolFieldUpdateOperationsInput | boolean - userEditable?: Prisma.BoolFieldUpdateOperationsInput | boolean - rules?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - serverVariables?: Prisma.ServerVariableUncheckedUpdateManyWithoutVariableNestedInput -} - -export type EggVariableUncheckedUpdateManyWithoutEggInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - envVariable?: Prisma.StringFieldUpdateOperationsInput | string - defaultValue?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - userViewable?: Prisma.BoolFieldUpdateOperationsInput | boolean - userEditable?: Prisma.BoolFieldUpdateOperationsInput | boolean - rules?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - -/** - * Count Type EggVariableCountOutputType - */ - -export type EggVariableCountOutputType = { - serverVariables: number -} - -export type EggVariableCountOutputTypeSelect = { - serverVariables?: boolean | EggVariableCountOutputTypeCountServerVariablesArgs -} - -/** - * EggVariableCountOutputType without action - */ -export type EggVariableCountOutputTypeDefaultArgs = { - /** - * Select specific fields to fetch from the EggVariableCountOutputType - */ - select?: Prisma.EggVariableCountOutputTypeSelect | null -} - -/** - * EggVariableCountOutputType without action - */ -export type EggVariableCountOutputTypeCountServerVariablesArgs = { - where?: Prisma.ServerVariableWhereInput -} - - -export type EggVariableSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - eggId?: boolean - name?: boolean - description?: boolean - envVariable?: boolean - defaultValue?: boolean - userViewable?: boolean - userEditable?: boolean - rules?: boolean - createdAt?: boolean - updatedAt?: boolean - egg?: boolean | Prisma.EggDefaultArgs - serverVariables?: boolean | Prisma.EggVariable$serverVariablesArgs - _count?: boolean | Prisma.EggVariableCountOutputTypeDefaultArgs -}, ExtArgs["result"]["eggVariable"]> - -export type EggVariableSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - eggId?: boolean - name?: boolean - description?: boolean - envVariable?: boolean - defaultValue?: boolean - userViewable?: boolean - userEditable?: boolean - rules?: boolean - createdAt?: boolean - updatedAt?: boolean - egg?: boolean | Prisma.EggDefaultArgs -}, ExtArgs["result"]["eggVariable"]> - -export type EggVariableSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - eggId?: boolean - name?: boolean - description?: boolean - envVariable?: boolean - defaultValue?: boolean - userViewable?: boolean - userEditable?: boolean - rules?: boolean - createdAt?: boolean - updatedAt?: boolean - egg?: boolean | Prisma.EggDefaultArgs -}, ExtArgs["result"]["eggVariable"]> - -export type EggVariableSelectScalar = { - id?: boolean - eggId?: boolean - name?: boolean - description?: boolean - envVariable?: boolean - defaultValue?: boolean - userViewable?: boolean - userEditable?: boolean - rules?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type EggVariableOmit = runtime.Types.Extensions.GetOmit<"id" | "eggId" | "name" | "description" | "envVariable" | "defaultValue" | "userViewable" | "userEditable" | "rules" | "createdAt" | "updatedAt", ExtArgs["result"]["eggVariable"]> -export type EggVariableInclude = { - egg?: boolean | Prisma.EggDefaultArgs - serverVariables?: boolean | Prisma.EggVariable$serverVariablesArgs - _count?: boolean | Prisma.EggVariableCountOutputTypeDefaultArgs -} -export type EggVariableIncludeCreateManyAndReturn = { - egg?: boolean | Prisma.EggDefaultArgs -} -export type EggVariableIncludeUpdateManyAndReturn = { - egg?: boolean | Prisma.EggDefaultArgs -} - -export type $EggVariablePayload = { - name: "EggVariable" - objects: { - egg: Prisma.$EggPayload - serverVariables: Prisma.$ServerVariablePayload[] - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: number - eggId: number - name: string - description: string | null - envVariable: string - defaultValue: string | null - userViewable: boolean - userEditable: boolean - rules: string | null - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["eggVariable"]> - composites: {} -} - -export type EggVariableGetPayload = runtime.Types.Result.GetResult - -export type EggVariableCountArgs = - Omit & { - select?: EggVariableCountAggregateInputType | true - } - -export interface EggVariableDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['EggVariable'], meta: { name: 'EggVariable' } } - /** - * Find zero or one EggVariable that matches the filter. - * @param {EggVariableFindUniqueArgs} args - Arguments to find a EggVariable - * @example - * // Get one EggVariable - * const eggVariable = await prisma.eggVariable.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__EggVariableClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one EggVariable that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {EggVariableFindUniqueOrThrowArgs} args - Arguments to find a EggVariable - * @example - * // Get one EggVariable - * const eggVariable = await prisma.eggVariable.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__EggVariableClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first EggVariable that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggVariableFindFirstArgs} args - Arguments to find a EggVariable - * @example - * // Get one EggVariable - * const eggVariable = await prisma.eggVariable.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__EggVariableClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first EggVariable that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggVariableFindFirstOrThrowArgs} args - Arguments to find a EggVariable - * @example - * // Get one EggVariable - * const eggVariable = await prisma.eggVariable.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__EggVariableClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more EggVariables that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggVariableFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all EggVariables - * const eggVariables = await prisma.eggVariable.findMany() - * - * // Get first 10 EggVariables - * const eggVariables = await prisma.eggVariable.findMany({ take: 10 }) - * - * // Only select the `id` - * const eggVariableWithIdOnly = await prisma.eggVariable.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a EggVariable. - * @param {EggVariableCreateArgs} args - Arguments to create a EggVariable. - * @example - * // Create one EggVariable - * const EggVariable = await prisma.eggVariable.create({ - * data: { - * // ... data to create a EggVariable - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__EggVariableClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many EggVariables. - * @param {EggVariableCreateManyArgs} args - Arguments to create many EggVariables. - * @example - * // Create many EggVariables - * const eggVariable = await prisma.eggVariable.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many EggVariables and returns the data saved in the database. - * @param {EggVariableCreateManyAndReturnArgs} args - Arguments to create many EggVariables. - * @example - * // Create many EggVariables - * const eggVariable = await prisma.eggVariable.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many EggVariables and only return the `id` - * const eggVariableWithIdOnly = await prisma.eggVariable.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a EggVariable. - * @param {EggVariableDeleteArgs} args - Arguments to delete one EggVariable. - * @example - * // Delete one EggVariable - * const EggVariable = await prisma.eggVariable.delete({ - * where: { - * // ... filter to delete one EggVariable - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__EggVariableClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one EggVariable. - * @param {EggVariableUpdateArgs} args - Arguments to update one EggVariable. - * @example - * // Update one EggVariable - * const eggVariable = await prisma.eggVariable.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__EggVariableClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more EggVariables. - * @param {EggVariableDeleteManyArgs} args - Arguments to filter EggVariables to delete. - * @example - * // Delete a few EggVariables - * const { count } = await prisma.eggVariable.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more EggVariables. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggVariableUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many EggVariables - * const eggVariable = await prisma.eggVariable.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more EggVariables and returns the data updated in the database. - * @param {EggVariableUpdateManyAndReturnArgs} args - Arguments to update many EggVariables. - * @example - * // Update many EggVariables - * const eggVariable = await prisma.eggVariable.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more EggVariables and only return the `id` - * const eggVariableWithIdOnly = await prisma.eggVariable.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one EggVariable. - * @param {EggVariableUpsertArgs} args - Arguments to update or create a EggVariable. - * @example - * // Update or create a EggVariable - * const eggVariable = await prisma.eggVariable.upsert({ - * create: { - * // ... data to create a EggVariable - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the EggVariable we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__EggVariableClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of EggVariables. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggVariableCountArgs} args - Arguments to filter EggVariables to count. - * @example - * // Count the number of EggVariables - * const count = await prisma.eggVariable.count({ - * where: { - * // ... the filter for the EggVariables we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a EggVariable. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggVariableAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by EggVariable. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {EggVariableGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends EggVariableGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: EggVariableGroupByArgs['orderBy'] } - : { orderBy?: EggVariableGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetEggVariableGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the EggVariable model - */ -readonly fields: EggVariableFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for EggVariable. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__EggVariableClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - egg = {}>(args?: Prisma.Subset>): Prisma.Prisma__EggClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - serverVariables = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the EggVariable model - */ -export interface EggVariableFieldRefs { - readonly id: Prisma.FieldRef<"EggVariable", 'Int'> - readonly eggId: Prisma.FieldRef<"EggVariable", 'Int'> - readonly name: Prisma.FieldRef<"EggVariable", 'String'> - readonly description: Prisma.FieldRef<"EggVariable", 'String'> - readonly envVariable: Prisma.FieldRef<"EggVariable", 'String'> - readonly defaultValue: Prisma.FieldRef<"EggVariable", 'String'> - readonly userViewable: Prisma.FieldRef<"EggVariable", 'Boolean'> - readonly userEditable: Prisma.FieldRef<"EggVariable", 'Boolean'> - readonly rules: Prisma.FieldRef<"EggVariable", 'String'> - readonly createdAt: Prisma.FieldRef<"EggVariable", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"EggVariable", 'DateTime'> -} - - -// Custom InputTypes -/** - * EggVariable findUnique - */ -export type EggVariableFindUniqueArgs = { - /** - * Select specific fields to fetch from the EggVariable - */ - select?: Prisma.EggVariableSelect | null - /** - * Omit specific fields from the EggVariable - */ - omit?: Prisma.EggVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggVariableInclude | null - /** - * Filter, which EggVariable to fetch. - */ - where: Prisma.EggVariableWhereUniqueInput -} - -/** - * EggVariable findUniqueOrThrow - */ -export type EggVariableFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the EggVariable - */ - select?: Prisma.EggVariableSelect | null - /** - * Omit specific fields from the EggVariable - */ - omit?: Prisma.EggVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggVariableInclude | null - /** - * Filter, which EggVariable to fetch. - */ - where: Prisma.EggVariableWhereUniqueInput -} - -/** - * EggVariable findFirst - */ -export type EggVariableFindFirstArgs = { - /** - * Select specific fields to fetch from the EggVariable - */ - select?: Prisma.EggVariableSelect | null - /** - * Omit specific fields from the EggVariable - */ - omit?: Prisma.EggVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggVariableInclude | null - /** - * Filter, which EggVariable to fetch. - */ - where?: Prisma.EggVariableWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of EggVariables to fetch. - */ - orderBy?: Prisma.EggVariableOrderByWithRelationInput | Prisma.EggVariableOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for EggVariables. - */ - cursor?: Prisma.EggVariableWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` EggVariables from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` EggVariables. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of EggVariables. - */ - distinct?: Prisma.EggVariableScalarFieldEnum | Prisma.EggVariableScalarFieldEnum[] -} - -/** - * EggVariable findFirstOrThrow - */ -export type EggVariableFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the EggVariable - */ - select?: Prisma.EggVariableSelect | null - /** - * Omit specific fields from the EggVariable - */ - omit?: Prisma.EggVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggVariableInclude | null - /** - * Filter, which EggVariable to fetch. - */ - where?: Prisma.EggVariableWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of EggVariables to fetch. - */ - orderBy?: Prisma.EggVariableOrderByWithRelationInput | Prisma.EggVariableOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for EggVariables. - */ - cursor?: Prisma.EggVariableWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` EggVariables from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` EggVariables. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of EggVariables. - */ - distinct?: Prisma.EggVariableScalarFieldEnum | Prisma.EggVariableScalarFieldEnum[] -} - -/** - * EggVariable findMany - */ -export type EggVariableFindManyArgs = { - /** - * Select specific fields to fetch from the EggVariable - */ - select?: Prisma.EggVariableSelect | null - /** - * Omit specific fields from the EggVariable - */ - omit?: Prisma.EggVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggVariableInclude | null - /** - * Filter, which EggVariables to fetch. - */ - where?: Prisma.EggVariableWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of EggVariables to fetch. - */ - orderBy?: Prisma.EggVariableOrderByWithRelationInput | Prisma.EggVariableOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing EggVariables. - */ - cursor?: Prisma.EggVariableWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` EggVariables from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` EggVariables. - */ - skip?: number - distinct?: Prisma.EggVariableScalarFieldEnum | Prisma.EggVariableScalarFieldEnum[] -} - -/** - * EggVariable create - */ -export type EggVariableCreateArgs = { - /** - * Select specific fields to fetch from the EggVariable - */ - select?: Prisma.EggVariableSelect | null - /** - * Omit specific fields from the EggVariable - */ - omit?: Prisma.EggVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggVariableInclude | null - /** - * The data needed to create a EggVariable. - */ - data: Prisma.XOR -} - -/** - * EggVariable createMany - */ -export type EggVariableCreateManyArgs = { - /** - * The data used to create many EggVariables. - */ - data: Prisma.EggVariableCreateManyInput | Prisma.EggVariableCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * EggVariable createManyAndReturn - */ -export type EggVariableCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the EggVariable - */ - select?: Prisma.EggVariableSelectCreateManyAndReturn | null - /** - * Omit specific fields from the EggVariable - */ - omit?: Prisma.EggVariableOmit | null - /** - * The data used to create many EggVariables. - */ - data: Prisma.EggVariableCreateManyInput | Prisma.EggVariableCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggVariableIncludeCreateManyAndReturn | null -} - -/** - * EggVariable update - */ -export type EggVariableUpdateArgs = { - /** - * Select specific fields to fetch from the EggVariable - */ - select?: Prisma.EggVariableSelect | null - /** - * Omit specific fields from the EggVariable - */ - omit?: Prisma.EggVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggVariableInclude | null - /** - * The data needed to update a EggVariable. - */ - data: Prisma.XOR - /** - * Choose, which EggVariable to update. - */ - where: Prisma.EggVariableWhereUniqueInput -} - -/** - * EggVariable updateMany - */ -export type EggVariableUpdateManyArgs = { - /** - * The data used to update EggVariables. - */ - data: Prisma.XOR - /** - * Filter which EggVariables to update - */ - where?: Prisma.EggVariableWhereInput - /** - * Limit how many EggVariables to update. - */ - limit?: number -} - -/** - * EggVariable updateManyAndReturn - */ -export type EggVariableUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the EggVariable - */ - select?: Prisma.EggVariableSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the EggVariable - */ - omit?: Prisma.EggVariableOmit | null - /** - * The data used to update EggVariables. - */ - data: Prisma.XOR - /** - * Filter which EggVariables to update - */ - where?: Prisma.EggVariableWhereInput - /** - * Limit how many EggVariables to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggVariableIncludeUpdateManyAndReturn | null -} - -/** - * EggVariable upsert - */ -export type EggVariableUpsertArgs = { - /** - * Select specific fields to fetch from the EggVariable - */ - select?: Prisma.EggVariableSelect | null - /** - * Omit specific fields from the EggVariable - */ - omit?: Prisma.EggVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggVariableInclude | null - /** - * The filter to search for the EggVariable to update in case it exists. - */ - where: Prisma.EggVariableWhereUniqueInput - /** - * In case the EggVariable found by the `where` argument doesn't exist, create a new EggVariable with this data. - */ - create: Prisma.XOR - /** - * In case the EggVariable was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * EggVariable delete - */ -export type EggVariableDeleteArgs = { - /** - * Select specific fields to fetch from the EggVariable - */ - select?: Prisma.EggVariableSelect | null - /** - * Omit specific fields from the EggVariable - */ - omit?: Prisma.EggVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggVariableInclude | null - /** - * Filter which EggVariable to delete. - */ - where: Prisma.EggVariableWhereUniqueInput -} - -/** - * EggVariable deleteMany - */ -export type EggVariableDeleteManyArgs = { - /** - * Filter which EggVariables to delete - */ - where?: Prisma.EggVariableWhereInput - /** - * Limit how many EggVariables to delete. - */ - limit?: number -} - -/** - * EggVariable.serverVariables - */ -export type EggVariable$serverVariablesArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelect | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableInclude | null - where?: Prisma.ServerVariableWhereInput - orderBy?: Prisma.ServerVariableOrderByWithRelationInput | Prisma.ServerVariableOrderByWithRelationInput[] - cursor?: Prisma.ServerVariableWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.ServerVariableScalarFieldEnum | Prisma.ServerVariableScalarFieldEnum[] -} - -/** - * EggVariable without action - */ -export type EggVariableDefaultArgs = { - /** - * Select specific fields to fetch from the EggVariable - */ - select?: Prisma.EggVariableSelect | null - /** - * Omit specific fields from the EggVariable - */ - omit?: Prisma.EggVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggVariableInclude | null -} diff --git a/prisma/generated/prisma/models/Invoice.ts b/prisma/generated/prisma/models/Invoice.ts deleted file mode 100644 index a699ecd..0000000 --- a/prisma/generated/prisma/models/Invoice.ts +++ /dev/null @@ -1,2001 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `Invoice` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model Invoice - * - */ -export type InvoiceModel = runtime.Types.Result.DefaultSelection - -export type AggregateInvoice = { - _count: InvoiceCountAggregateOutputType | null - _avg: InvoiceAvgAggregateOutputType | null - _sum: InvoiceSumAggregateOutputType | null - _min: InvoiceMinAggregateOutputType | null - _max: InvoiceMaxAggregateOutputType | null -} - -export type InvoiceAvgAggregateOutputType = { - subtotal: runtime.Decimal | null - tax: runtime.Decimal | null - total: runtime.Decimal | null - paid: runtime.Decimal | null -} - -export type InvoiceSumAggregateOutputType = { - subtotal: runtime.Decimal | null - tax: runtime.Decimal | null - total: runtime.Decimal | null - paid: runtime.Decimal | null -} - -export type InvoiceMinAggregateOutputType = { - id: string | null - invoiceNumber: string | null - userId: string | null - subtotal: runtime.Decimal | null - tax: runtime.Decimal | null - total: runtime.Decimal | null - paid: runtime.Decimal | null - status: string | null - dueDate: Date | null - paidDate: Date | null - notes: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type InvoiceMaxAggregateOutputType = { - id: string | null - invoiceNumber: string | null - userId: string | null - subtotal: runtime.Decimal | null - tax: runtime.Decimal | null - total: runtime.Decimal | null - paid: runtime.Decimal | null - status: string | null - dueDate: Date | null - paidDate: Date | null - notes: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type InvoiceCountAggregateOutputType = { - id: number - invoiceNumber: number - userId: number - subtotal: number - tax: number - total: number - paid: number - status: number - dueDate: number - paidDate: number - notes: number - createdAt: number - updatedAt: number - _all: number -} - - -export type InvoiceAvgAggregateInputType = { - subtotal?: true - tax?: true - total?: true - paid?: true -} - -export type InvoiceSumAggregateInputType = { - subtotal?: true - tax?: true - total?: true - paid?: true -} - -export type InvoiceMinAggregateInputType = { - id?: true - invoiceNumber?: true - userId?: true - subtotal?: true - tax?: true - total?: true - paid?: true - status?: true - dueDate?: true - paidDate?: true - notes?: true - createdAt?: true - updatedAt?: true -} - -export type InvoiceMaxAggregateInputType = { - id?: true - invoiceNumber?: true - userId?: true - subtotal?: true - tax?: true - total?: true - paid?: true - status?: true - dueDate?: true - paidDate?: true - notes?: true - createdAt?: true - updatedAt?: true -} - -export type InvoiceCountAggregateInputType = { - id?: true - invoiceNumber?: true - userId?: true - subtotal?: true - tax?: true - total?: true - paid?: true - status?: true - dueDate?: true - paidDate?: true - notes?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type InvoiceAggregateArgs = { - /** - * Filter which Invoice to aggregate. - */ - where?: Prisma.InvoiceWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Invoices to fetch. - */ - orderBy?: Prisma.InvoiceOrderByWithRelationInput | Prisma.InvoiceOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.InvoiceWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Invoices from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Invoices. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned Invoices - **/ - _count?: true | InvoiceCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: InvoiceAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: InvoiceSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: InvoiceMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: InvoiceMaxAggregateInputType -} - -export type GetInvoiceAggregateType = { - [P in keyof T & keyof AggregateInvoice]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type InvoiceGroupByArgs = { - where?: Prisma.InvoiceWhereInput - orderBy?: Prisma.InvoiceOrderByWithAggregationInput | Prisma.InvoiceOrderByWithAggregationInput[] - by: Prisma.InvoiceScalarFieldEnum[] | Prisma.InvoiceScalarFieldEnum - having?: Prisma.InvoiceScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: InvoiceCountAggregateInputType | true - _avg?: InvoiceAvgAggregateInputType - _sum?: InvoiceSumAggregateInputType - _min?: InvoiceMinAggregateInputType - _max?: InvoiceMaxAggregateInputType -} - -export type InvoiceGroupByOutputType = { - id: string - invoiceNumber: string - userId: string - subtotal: runtime.Decimal - tax: runtime.Decimal - total: runtime.Decimal - paid: runtime.Decimal - status: string - dueDate: Date | null - paidDate: Date | null - notes: string | null - createdAt: Date - updatedAt: Date - _count: InvoiceCountAggregateOutputType | null - _avg: InvoiceAvgAggregateOutputType | null - _sum: InvoiceSumAggregateOutputType | null - _min: InvoiceMinAggregateOutputType | null - _max: InvoiceMaxAggregateOutputType | null -} - -type GetInvoiceGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof InvoiceGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type InvoiceWhereInput = { - AND?: Prisma.InvoiceWhereInput | Prisma.InvoiceWhereInput[] - OR?: Prisma.InvoiceWhereInput[] - NOT?: Prisma.InvoiceWhereInput | Prisma.InvoiceWhereInput[] - id?: Prisma.StringFilter<"Invoice"> | string - invoiceNumber?: Prisma.StringFilter<"Invoice"> | string - userId?: Prisma.StringFilter<"Invoice"> | string - subtotal?: Prisma.DecimalFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFilter<"Invoice"> | string - dueDate?: Prisma.DateTimeNullableFilter<"Invoice"> | Date | string | null - paidDate?: Prisma.DateTimeNullableFilter<"Invoice"> | Date | string | null - notes?: Prisma.StringNullableFilter<"Invoice"> | string | null - createdAt?: Prisma.DateTimeFilter<"Invoice"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Invoice"> | Date | string - user?: Prisma.XOR - items?: Prisma.InvoiceItemListRelationFilter - payments?: Prisma.PaymentListRelationFilter -} - -export type InvoiceOrderByWithRelationInput = { - id?: Prisma.SortOrder - invoiceNumber?: Prisma.SortOrder - userId?: Prisma.SortOrder - subtotal?: Prisma.SortOrder - tax?: Prisma.SortOrder - total?: Prisma.SortOrder - paid?: Prisma.SortOrder - status?: Prisma.SortOrder - dueDate?: Prisma.SortOrderInput | Prisma.SortOrder - paidDate?: Prisma.SortOrderInput | Prisma.SortOrder - notes?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - user?: Prisma.UserOrderByWithRelationInput - items?: Prisma.InvoiceItemOrderByRelationAggregateInput - payments?: Prisma.PaymentOrderByRelationAggregateInput -} - -export type InvoiceWhereUniqueInput = Prisma.AtLeast<{ - id?: string - invoiceNumber?: string - AND?: Prisma.InvoiceWhereInput | Prisma.InvoiceWhereInput[] - OR?: Prisma.InvoiceWhereInput[] - NOT?: Prisma.InvoiceWhereInput | Prisma.InvoiceWhereInput[] - userId?: Prisma.StringFilter<"Invoice"> | string - subtotal?: Prisma.DecimalFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFilter<"Invoice"> | string - dueDate?: Prisma.DateTimeNullableFilter<"Invoice"> | Date | string | null - paidDate?: Prisma.DateTimeNullableFilter<"Invoice"> | Date | string | null - notes?: Prisma.StringNullableFilter<"Invoice"> | string | null - createdAt?: Prisma.DateTimeFilter<"Invoice"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Invoice"> | Date | string - user?: Prisma.XOR - items?: Prisma.InvoiceItemListRelationFilter - payments?: Prisma.PaymentListRelationFilter -}, "id" | "invoiceNumber"> - -export type InvoiceOrderByWithAggregationInput = { - id?: Prisma.SortOrder - invoiceNumber?: Prisma.SortOrder - userId?: Prisma.SortOrder - subtotal?: Prisma.SortOrder - tax?: Prisma.SortOrder - total?: Prisma.SortOrder - paid?: Prisma.SortOrder - status?: Prisma.SortOrder - dueDate?: Prisma.SortOrderInput | Prisma.SortOrder - paidDate?: Prisma.SortOrderInput | Prisma.SortOrder - notes?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.InvoiceCountOrderByAggregateInput - _avg?: Prisma.InvoiceAvgOrderByAggregateInput - _max?: Prisma.InvoiceMaxOrderByAggregateInput - _min?: Prisma.InvoiceMinOrderByAggregateInput - _sum?: Prisma.InvoiceSumOrderByAggregateInput -} - -export type InvoiceScalarWhereWithAggregatesInput = { - AND?: Prisma.InvoiceScalarWhereWithAggregatesInput | Prisma.InvoiceScalarWhereWithAggregatesInput[] - OR?: Prisma.InvoiceScalarWhereWithAggregatesInput[] - NOT?: Prisma.InvoiceScalarWhereWithAggregatesInput | Prisma.InvoiceScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"Invoice"> | string - invoiceNumber?: Prisma.StringWithAggregatesFilter<"Invoice"> | string - userId?: Prisma.StringWithAggregatesFilter<"Invoice"> | string - subtotal?: Prisma.DecimalWithAggregatesFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalWithAggregatesFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalWithAggregatesFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalWithAggregatesFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringWithAggregatesFilter<"Invoice"> | string - dueDate?: Prisma.DateTimeNullableWithAggregatesFilter<"Invoice"> | Date | string | null - paidDate?: Prisma.DateTimeNullableWithAggregatesFilter<"Invoice"> | Date | string | null - notes?: Prisma.StringNullableWithAggregatesFilter<"Invoice"> | string | null - createdAt?: Prisma.DateTimeWithAggregatesFilter<"Invoice"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Invoice"> | Date | string -} - -export type InvoiceCreateInput = { - id?: string - invoiceNumber: string - subtotal: runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: runtime.Decimal | runtime.DecimalJsLike | number | string - status?: string - dueDate?: Date | string | null - paidDate?: Date | string | null - notes?: string | null - createdAt?: Date | string - updatedAt?: Date | string - user: Prisma.UserCreateNestedOneWithoutInvoicesInput - items?: Prisma.InvoiceItemCreateNestedManyWithoutInvoiceInput - payments?: Prisma.PaymentCreateNestedManyWithoutInvoiceInput -} - -export type InvoiceUncheckedCreateInput = { - id?: string - invoiceNumber: string - userId: string - subtotal: runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: runtime.Decimal | runtime.DecimalJsLike | number | string - status?: string - dueDate?: Date | string | null - paidDate?: Date | string | null - notes?: string | null - createdAt?: Date | string - updatedAt?: Date | string - items?: Prisma.InvoiceItemUncheckedCreateNestedManyWithoutInvoiceInput - payments?: Prisma.PaymentUncheckedCreateNestedManyWithoutInvoiceInput -} - -export type InvoiceUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceNumber?: Prisma.StringFieldUpdateOperationsInput | string - subtotal?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFieldUpdateOperationsInput | string - dueDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - paidDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - user?: Prisma.UserUpdateOneRequiredWithoutInvoicesNestedInput - items?: Prisma.InvoiceItemUpdateManyWithoutInvoiceNestedInput - payments?: Prisma.PaymentUpdateManyWithoutInvoiceNestedInput -} - -export type InvoiceUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceNumber?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - subtotal?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFieldUpdateOperationsInput | string - dueDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - paidDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - items?: Prisma.InvoiceItemUncheckedUpdateManyWithoutInvoiceNestedInput - payments?: Prisma.PaymentUncheckedUpdateManyWithoutInvoiceNestedInput -} - -export type InvoiceCreateManyInput = { - id?: string - invoiceNumber: string - userId: string - subtotal: runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: runtime.Decimal | runtime.DecimalJsLike | number | string - status?: string - dueDate?: Date | string | null - paidDate?: Date | string | null - notes?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type InvoiceUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceNumber?: Prisma.StringFieldUpdateOperationsInput | string - subtotal?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFieldUpdateOperationsInput | string - dueDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - paidDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type InvoiceUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceNumber?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - subtotal?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFieldUpdateOperationsInput | string - dueDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - paidDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type InvoiceListRelationFilter = { - every?: Prisma.InvoiceWhereInput - some?: Prisma.InvoiceWhereInput - none?: Prisma.InvoiceWhereInput -} - -export type InvoiceOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type InvoiceCountOrderByAggregateInput = { - id?: Prisma.SortOrder - invoiceNumber?: Prisma.SortOrder - userId?: Prisma.SortOrder - subtotal?: Prisma.SortOrder - tax?: Prisma.SortOrder - total?: Prisma.SortOrder - paid?: Prisma.SortOrder - status?: Prisma.SortOrder - dueDate?: Prisma.SortOrder - paidDate?: Prisma.SortOrder - notes?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type InvoiceAvgOrderByAggregateInput = { - subtotal?: Prisma.SortOrder - tax?: Prisma.SortOrder - total?: Prisma.SortOrder - paid?: Prisma.SortOrder -} - -export type InvoiceMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - invoiceNumber?: Prisma.SortOrder - userId?: Prisma.SortOrder - subtotal?: Prisma.SortOrder - tax?: Prisma.SortOrder - total?: Prisma.SortOrder - paid?: Prisma.SortOrder - status?: Prisma.SortOrder - dueDate?: Prisma.SortOrder - paidDate?: Prisma.SortOrder - notes?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type InvoiceMinOrderByAggregateInput = { - id?: Prisma.SortOrder - invoiceNumber?: Prisma.SortOrder - userId?: Prisma.SortOrder - subtotal?: Prisma.SortOrder - tax?: Prisma.SortOrder - total?: Prisma.SortOrder - paid?: Prisma.SortOrder - status?: Prisma.SortOrder - dueDate?: Prisma.SortOrder - paidDate?: Prisma.SortOrder - notes?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type InvoiceSumOrderByAggregateInput = { - subtotal?: Prisma.SortOrder - tax?: Prisma.SortOrder - total?: Prisma.SortOrder - paid?: Prisma.SortOrder -} - -export type InvoiceScalarRelationFilter = { - is?: Prisma.InvoiceWhereInput - isNot?: Prisma.InvoiceWhereInput -} - -export type InvoiceCreateNestedManyWithoutUserInput = { - create?: Prisma.XOR | Prisma.InvoiceCreateWithoutUserInput[] | Prisma.InvoiceUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.InvoiceCreateOrConnectWithoutUserInput | Prisma.InvoiceCreateOrConnectWithoutUserInput[] - createMany?: Prisma.InvoiceCreateManyUserInputEnvelope - connect?: Prisma.InvoiceWhereUniqueInput | Prisma.InvoiceWhereUniqueInput[] -} - -export type InvoiceUncheckedCreateNestedManyWithoutUserInput = { - create?: Prisma.XOR | Prisma.InvoiceCreateWithoutUserInput[] | Prisma.InvoiceUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.InvoiceCreateOrConnectWithoutUserInput | Prisma.InvoiceCreateOrConnectWithoutUserInput[] - createMany?: Prisma.InvoiceCreateManyUserInputEnvelope - connect?: Prisma.InvoiceWhereUniqueInput | Prisma.InvoiceWhereUniqueInput[] -} - -export type InvoiceUpdateManyWithoutUserNestedInput = { - create?: Prisma.XOR | Prisma.InvoiceCreateWithoutUserInput[] | Prisma.InvoiceUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.InvoiceCreateOrConnectWithoutUserInput | Prisma.InvoiceCreateOrConnectWithoutUserInput[] - upsert?: Prisma.InvoiceUpsertWithWhereUniqueWithoutUserInput | Prisma.InvoiceUpsertWithWhereUniqueWithoutUserInput[] - createMany?: Prisma.InvoiceCreateManyUserInputEnvelope - set?: Prisma.InvoiceWhereUniqueInput | Prisma.InvoiceWhereUniqueInput[] - disconnect?: Prisma.InvoiceWhereUniqueInput | Prisma.InvoiceWhereUniqueInput[] - delete?: Prisma.InvoiceWhereUniqueInput | Prisma.InvoiceWhereUniqueInput[] - connect?: Prisma.InvoiceWhereUniqueInput | Prisma.InvoiceWhereUniqueInput[] - update?: Prisma.InvoiceUpdateWithWhereUniqueWithoutUserInput | Prisma.InvoiceUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: Prisma.InvoiceUpdateManyWithWhereWithoutUserInput | Prisma.InvoiceUpdateManyWithWhereWithoutUserInput[] - deleteMany?: Prisma.InvoiceScalarWhereInput | Prisma.InvoiceScalarWhereInput[] -} - -export type InvoiceUncheckedUpdateManyWithoutUserNestedInput = { - create?: Prisma.XOR | Prisma.InvoiceCreateWithoutUserInput[] | Prisma.InvoiceUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.InvoiceCreateOrConnectWithoutUserInput | Prisma.InvoiceCreateOrConnectWithoutUserInput[] - upsert?: Prisma.InvoiceUpsertWithWhereUniqueWithoutUserInput | Prisma.InvoiceUpsertWithWhereUniqueWithoutUserInput[] - createMany?: Prisma.InvoiceCreateManyUserInputEnvelope - set?: Prisma.InvoiceWhereUniqueInput | Prisma.InvoiceWhereUniqueInput[] - disconnect?: Prisma.InvoiceWhereUniqueInput | Prisma.InvoiceWhereUniqueInput[] - delete?: Prisma.InvoiceWhereUniqueInput | Prisma.InvoiceWhereUniqueInput[] - connect?: Prisma.InvoiceWhereUniqueInput | Prisma.InvoiceWhereUniqueInput[] - update?: Prisma.InvoiceUpdateWithWhereUniqueWithoutUserInput | Prisma.InvoiceUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: Prisma.InvoiceUpdateManyWithWhereWithoutUserInput | Prisma.InvoiceUpdateManyWithWhereWithoutUserInput[] - deleteMany?: Prisma.InvoiceScalarWhereInput | Prisma.InvoiceScalarWhereInput[] -} - -export type InvoiceCreateNestedOneWithoutItemsInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.InvoiceCreateOrConnectWithoutItemsInput - connect?: Prisma.InvoiceWhereUniqueInput -} - -export type InvoiceUpdateOneRequiredWithoutItemsNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.InvoiceCreateOrConnectWithoutItemsInput - upsert?: Prisma.InvoiceUpsertWithoutItemsInput - connect?: Prisma.InvoiceWhereUniqueInput - update?: Prisma.XOR, Prisma.InvoiceUncheckedUpdateWithoutItemsInput> -} - -export type InvoiceCreateNestedOneWithoutPaymentsInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.InvoiceCreateOrConnectWithoutPaymentsInput - connect?: Prisma.InvoiceWhereUniqueInput -} - -export type InvoiceUpdateOneRequiredWithoutPaymentsNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.InvoiceCreateOrConnectWithoutPaymentsInput - upsert?: Prisma.InvoiceUpsertWithoutPaymentsInput - connect?: Prisma.InvoiceWhereUniqueInput - update?: Prisma.XOR, Prisma.InvoiceUncheckedUpdateWithoutPaymentsInput> -} - -export type InvoiceCreateWithoutUserInput = { - id?: string - invoiceNumber: string - subtotal: runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: runtime.Decimal | runtime.DecimalJsLike | number | string - status?: string - dueDate?: Date | string | null - paidDate?: Date | string | null - notes?: string | null - createdAt?: Date | string - updatedAt?: Date | string - items?: Prisma.InvoiceItemCreateNestedManyWithoutInvoiceInput - payments?: Prisma.PaymentCreateNestedManyWithoutInvoiceInput -} - -export type InvoiceUncheckedCreateWithoutUserInput = { - id?: string - invoiceNumber: string - subtotal: runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: runtime.Decimal | runtime.DecimalJsLike | number | string - status?: string - dueDate?: Date | string | null - paidDate?: Date | string | null - notes?: string | null - createdAt?: Date | string - updatedAt?: Date | string - items?: Prisma.InvoiceItemUncheckedCreateNestedManyWithoutInvoiceInput - payments?: Prisma.PaymentUncheckedCreateNestedManyWithoutInvoiceInput -} - -export type InvoiceCreateOrConnectWithoutUserInput = { - where: Prisma.InvoiceWhereUniqueInput - create: Prisma.XOR -} - -export type InvoiceCreateManyUserInputEnvelope = { - data: Prisma.InvoiceCreateManyUserInput | Prisma.InvoiceCreateManyUserInput[] - skipDuplicates?: boolean -} - -export type InvoiceUpsertWithWhereUniqueWithoutUserInput = { - where: Prisma.InvoiceWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type InvoiceUpdateWithWhereUniqueWithoutUserInput = { - where: Prisma.InvoiceWhereUniqueInput - data: Prisma.XOR -} - -export type InvoiceUpdateManyWithWhereWithoutUserInput = { - where: Prisma.InvoiceScalarWhereInput - data: Prisma.XOR -} - -export type InvoiceScalarWhereInput = { - AND?: Prisma.InvoiceScalarWhereInput | Prisma.InvoiceScalarWhereInput[] - OR?: Prisma.InvoiceScalarWhereInput[] - NOT?: Prisma.InvoiceScalarWhereInput | Prisma.InvoiceScalarWhereInput[] - id?: Prisma.StringFilter<"Invoice"> | string - invoiceNumber?: Prisma.StringFilter<"Invoice"> | string - userId?: Prisma.StringFilter<"Invoice"> | string - subtotal?: Prisma.DecimalFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFilter<"Invoice"> | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFilter<"Invoice"> | string - dueDate?: Prisma.DateTimeNullableFilter<"Invoice"> | Date | string | null - paidDate?: Prisma.DateTimeNullableFilter<"Invoice"> | Date | string | null - notes?: Prisma.StringNullableFilter<"Invoice"> | string | null - createdAt?: Prisma.DateTimeFilter<"Invoice"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Invoice"> | Date | string -} - -export type InvoiceCreateWithoutItemsInput = { - id?: string - invoiceNumber: string - subtotal: runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: runtime.Decimal | runtime.DecimalJsLike | number | string - status?: string - dueDate?: Date | string | null - paidDate?: Date | string | null - notes?: string | null - createdAt?: Date | string - updatedAt?: Date | string - user: Prisma.UserCreateNestedOneWithoutInvoicesInput - payments?: Prisma.PaymentCreateNestedManyWithoutInvoiceInput -} - -export type InvoiceUncheckedCreateWithoutItemsInput = { - id?: string - invoiceNumber: string - userId: string - subtotal: runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: runtime.Decimal | runtime.DecimalJsLike | number | string - status?: string - dueDate?: Date | string | null - paidDate?: Date | string | null - notes?: string | null - createdAt?: Date | string - updatedAt?: Date | string - payments?: Prisma.PaymentUncheckedCreateNestedManyWithoutInvoiceInput -} - -export type InvoiceCreateOrConnectWithoutItemsInput = { - where: Prisma.InvoiceWhereUniqueInput - create: Prisma.XOR -} - -export type InvoiceUpsertWithoutItemsInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.InvoiceWhereInput -} - -export type InvoiceUpdateToOneWithWhereWithoutItemsInput = { - where?: Prisma.InvoiceWhereInput - data: Prisma.XOR -} - -export type InvoiceUpdateWithoutItemsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceNumber?: Prisma.StringFieldUpdateOperationsInput | string - subtotal?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFieldUpdateOperationsInput | string - dueDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - paidDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - user?: Prisma.UserUpdateOneRequiredWithoutInvoicesNestedInput - payments?: Prisma.PaymentUpdateManyWithoutInvoiceNestedInput -} - -export type InvoiceUncheckedUpdateWithoutItemsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceNumber?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - subtotal?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFieldUpdateOperationsInput | string - dueDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - paidDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - payments?: Prisma.PaymentUncheckedUpdateManyWithoutInvoiceNestedInput -} - -export type InvoiceCreateWithoutPaymentsInput = { - id?: string - invoiceNumber: string - subtotal: runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: runtime.Decimal | runtime.DecimalJsLike | number | string - status?: string - dueDate?: Date | string | null - paidDate?: Date | string | null - notes?: string | null - createdAt?: Date | string - updatedAt?: Date | string - user: Prisma.UserCreateNestedOneWithoutInvoicesInput - items?: Prisma.InvoiceItemCreateNestedManyWithoutInvoiceInput -} - -export type InvoiceUncheckedCreateWithoutPaymentsInput = { - id?: string - invoiceNumber: string - userId: string - subtotal: runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: runtime.Decimal | runtime.DecimalJsLike | number | string - status?: string - dueDate?: Date | string | null - paidDate?: Date | string | null - notes?: string | null - createdAt?: Date | string - updatedAt?: Date | string - items?: Prisma.InvoiceItemUncheckedCreateNestedManyWithoutInvoiceInput -} - -export type InvoiceCreateOrConnectWithoutPaymentsInput = { - where: Prisma.InvoiceWhereUniqueInput - create: Prisma.XOR -} - -export type InvoiceUpsertWithoutPaymentsInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.InvoiceWhereInput -} - -export type InvoiceUpdateToOneWithWhereWithoutPaymentsInput = { - where?: Prisma.InvoiceWhereInput - data: Prisma.XOR -} - -export type InvoiceUpdateWithoutPaymentsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceNumber?: Prisma.StringFieldUpdateOperationsInput | string - subtotal?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFieldUpdateOperationsInput | string - dueDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - paidDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - user?: Prisma.UserUpdateOneRequiredWithoutInvoicesNestedInput - items?: Prisma.InvoiceItemUpdateManyWithoutInvoiceNestedInput -} - -export type InvoiceUncheckedUpdateWithoutPaymentsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceNumber?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - subtotal?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFieldUpdateOperationsInput | string - dueDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - paidDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - items?: Prisma.InvoiceItemUncheckedUpdateManyWithoutInvoiceNestedInput -} - -export type InvoiceCreateManyUserInput = { - id?: string - invoiceNumber: string - subtotal: runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: runtime.Decimal | runtime.DecimalJsLike | number | string - status?: string - dueDate?: Date | string | null - paidDate?: Date | string | null - notes?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type InvoiceUpdateWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceNumber?: Prisma.StringFieldUpdateOperationsInput | string - subtotal?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFieldUpdateOperationsInput | string - dueDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - paidDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - items?: Prisma.InvoiceItemUpdateManyWithoutInvoiceNestedInput - payments?: Prisma.PaymentUpdateManyWithoutInvoiceNestedInput -} - -export type InvoiceUncheckedUpdateWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceNumber?: Prisma.StringFieldUpdateOperationsInput | string - subtotal?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFieldUpdateOperationsInput | string - dueDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - paidDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - items?: Prisma.InvoiceItemUncheckedUpdateManyWithoutInvoiceNestedInput - payments?: Prisma.PaymentUncheckedUpdateManyWithoutInvoiceNestedInput -} - -export type InvoiceUncheckedUpdateManyWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceNumber?: Prisma.StringFieldUpdateOperationsInput | string - subtotal?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - tax?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - paid?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - status?: Prisma.StringFieldUpdateOperationsInput | string - dueDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - paidDate?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - -/** - * Count Type InvoiceCountOutputType - */ - -export type InvoiceCountOutputType = { - items: number - payments: number -} - -export type InvoiceCountOutputTypeSelect = { - items?: boolean | InvoiceCountOutputTypeCountItemsArgs - payments?: boolean | InvoiceCountOutputTypeCountPaymentsArgs -} - -/** - * InvoiceCountOutputType without action - */ -export type InvoiceCountOutputTypeDefaultArgs = { - /** - * Select specific fields to fetch from the InvoiceCountOutputType - */ - select?: Prisma.InvoiceCountOutputTypeSelect | null -} - -/** - * InvoiceCountOutputType without action - */ -export type InvoiceCountOutputTypeCountItemsArgs = { - where?: Prisma.InvoiceItemWhereInput -} - -/** - * InvoiceCountOutputType without action - */ -export type InvoiceCountOutputTypeCountPaymentsArgs = { - where?: Prisma.PaymentWhereInput -} - - -export type InvoiceSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - invoiceNumber?: boolean - userId?: boolean - subtotal?: boolean - tax?: boolean - total?: boolean - paid?: boolean - status?: boolean - dueDate?: boolean - paidDate?: boolean - notes?: boolean - createdAt?: boolean - updatedAt?: boolean - user?: boolean | Prisma.UserDefaultArgs - items?: boolean | Prisma.Invoice$itemsArgs - payments?: boolean | Prisma.Invoice$paymentsArgs - _count?: boolean | Prisma.InvoiceCountOutputTypeDefaultArgs -}, ExtArgs["result"]["invoice"]> - -export type InvoiceSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - invoiceNumber?: boolean - userId?: boolean - subtotal?: boolean - tax?: boolean - total?: boolean - paid?: boolean - status?: boolean - dueDate?: boolean - paidDate?: boolean - notes?: boolean - createdAt?: boolean - updatedAt?: boolean - user?: boolean | Prisma.UserDefaultArgs -}, ExtArgs["result"]["invoice"]> - -export type InvoiceSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - invoiceNumber?: boolean - userId?: boolean - subtotal?: boolean - tax?: boolean - total?: boolean - paid?: boolean - status?: boolean - dueDate?: boolean - paidDate?: boolean - notes?: boolean - createdAt?: boolean - updatedAt?: boolean - user?: boolean | Prisma.UserDefaultArgs -}, ExtArgs["result"]["invoice"]> - -export type InvoiceSelectScalar = { - id?: boolean - invoiceNumber?: boolean - userId?: boolean - subtotal?: boolean - tax?: boolean - total?: boolean - paid?: boolean - status?: boolean - dueDate?: boolean - paidDate?: boolean - notes?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type InvoiceOmit = runtime.Types.Extensions.GetOmit<"id" | "invoiceNumber" | "userId" | "subtotal" | "tax" | "total" | "paid" | "status" | "dueDate" | "paidDate" | "notes" | "createdAt" | "updatedAt", ExtArgs["result"]["invoice"]> -export type InvoiceInclude = { - user?: boolean | Prisma.UserDefaultArgs - items?: boolean | Prisma.Invoice$itemsArgs - payments?: boolean | Prisma.Invoice$paymentsArgs - _count?: boolean | Prisma.InvoiceCountOutputTypeDefaultArgs -} -export type InvoiceIncludeCreateManyAndReturn = { - user?: boolean | Prisma.UserDefaultArgs -} -export type InvoiceIncludeUpdateManyAndReturn = { - user?: boolean | Prisma.UserDefaultArgs -} - -export type $InvoicePayload = { - name: "Invoice" - objects: { - user: Prisma.$UserPayload - items: Prisma.$InvoiceItemPayload[] - payments: Prisma.$PaymentPayload[] - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - invoiceNumber: string - userId: string - subtotal: runtime.Decimal - tax: runtime.Decimal - total: runtime.Decimal - paid: runtime.Decimal - status: string - dueDate: Date | null - paidDate: Date | null - notes: string | null - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["invoice"]> - composites: {} -} - -export type InvoiceGetPayload = runtime.Types.Result.GetResult - -export type InvoiceCountArgs = - Omit & { - select?: InvoiceCountAggregateInputType | true - } - -export interface InvoiceDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['Invoice'], meta: { name: 'Invoice' } } - /** - * Find zero or one Invoice that matches the filter. - * @param {InvoiceFindUniqueArgs} args - Arguments to find a Invoice - * @example - * // Get one Invoice - * const invoice = await prisma.invoice.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__InvoiceClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one Invoice that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {InvoiceFindUniqueOrThrowArgs} args - Arguments to find a Invoice - * @example - * // Get one Invoice - * const invoice = await prisma.invoice.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__InvoiceClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Invoice that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceFindFirstArgs} args - Arguments to find a Invoice - * @example - * // Get one Invoice - * const invoice = await prisma.invoice.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__InvoiceClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Invoice that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceFindFirstOrThrowArgs} args - Arguments to find a Invoice - * @example - * // Get one Invoice - * const invoice = await prisma.invoice.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__InvoiceClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more Invoices that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all Invoices - * const invoices = await prisma.invoice.findMany() - * - * // Get first 10 Invoices - * const invoices = await prisma.invoice.findMany({ take: 10 }) - * - * // Only select the `id` - * const invoiceWithIdOnly = await prisma.invoice.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a Invoice. - * @param {InvoiceCreateArgs} args - Arguments to create a Invoice. - * @example - * // Create one Invoice - * const Invoice = await prisma.invoice.create({ - * data: { - * // ... data to create a Invoice - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__InvoiceClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many Invoices. - * @param {InvoiceCreateManyArgs} args - Arguments to create many Invoices. - * @example - * // Create many Invoices - * const invoice = await prisma.invoice.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many Invoices and returns the data saved in the database. - * @param {InvoiceCreateManyAndReturnArgs} args - Arguments to create many Invoices. - * @example - * // Create many Invoices - * const invoice = await prisma.invoice.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many Invoices and only return the `id` - * const invoiceWithIdOnly = await prisma.invoice.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a Invoice. - * @param {InvoiceDeleteArgs} args - Arguments to delete one Invoice. - * @example - * // Delete one Invoice - * const Invoice = await prisma.invoice.delete({ - * where: { - * // ... filter to delete one Invoice - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__InvoiceClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one Invoice. - * @param {InvoiceUpdateArgs} args - Arguments to update one Invoice. - * @example - * // Update one Invoice - * const invoice = await prisma.invoice.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__InvoiceClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more Invoices. - * @param {InvoiceDeleteManyArgs} args - Arguments to filter Invoices to delete. - * @example - * // Delete a few Invoices - * const { count } = await prisma.invoice.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Invoices. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many Invoices - * const invoice = await prisma.invoice.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Invoices and returns the data updated in the database. - * @param {InvoiceUpdateManyAndReturnArgs} args - Arguments to update many Invoices. - * @example - * // Update many Invoices - * const invoice = await prisma.invoice.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more Invoices and only return the `id` - * const invoiceWithIdOnly = await prisma.invoice.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one Invoice. - * @param {InvoiceUpsertArgs} args - Arguments to update or create a Invoice. - * @example - * // Update or create a Invoice - * const invoice = await prisma.invoice.upsert({ - * create: { - * // ... data to create a Invoice - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the Invoice we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__InvoiceClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of Invoices. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceCountArgs} args - Arguments to filter Invoices to count. - * @example - * // Count the number of Invoices - * const count = await prisma.invoice.count({ - * where: { - * // ... the filter for the Invoices we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a Invoice. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by Invoice. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends InvoiceGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: InvoiceGroupByArgs['orderBy'] } - : { orderBy?: InvoiceGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetInvoiceGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the Invoice model - */ -readonly fields: InvoiceFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for Invoice. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__InvoiceClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - user = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - items = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - payments = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the Invoice model - */ -export interface InvoiceFieldRefs { - readonly id: Prisma.FieldRef<"Invoice", 'String'> - readonly invoiceNumber: Prisma.FieldRef<"Invoice", 'String'> - readonly userId: Prisma.FieldRef<"Invoice", 'String'> - readonly subtotal: Prisma.FieldRef<"Invoice", 'Decimal'> - readonly tax: Prisma.FieldRef<"Invoice", 'Decimal'> - readonly total: Prisma.FieldRef<"Invoice", 'Decimal'> - readonly paid: Prisma.FieldRef<"Invoice", 'Decimal'> - readonly status: Prisma.FieldRef<"Invoice", 'String'> - readonly dueDate: Prisma.FieldRef<"Invoice", 'DateTime'> - readonly paidDate: Prisma.FieldRef<"Invoice", 'DateTime'> - readonly notes: Prisma.FieldRef<"Invoice", 'String'> - readonly createdAt: Prisma.FieldRef<"Invoice", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"Invoice", 'DateTime'> -} - - -// Custom InputTypes -/** - * Invoice findUnique - */ -export type InvoiceFindUniqueArgs = { - /** - * Select specific fields to fetch from the Invoice - */ - select?: Prisma.InvoiceSelect | null - /** - * Omit specific fields from the Invoice - */ - omit?: Prisma.InvoiceOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceInclude | null - /** - * Filter, which Invoice to fetch. - */ - where: Prisma.InvoiceWhereUniqueInput -} - -/** - * Invoice findUniqueOrThrow - */ -export type InvoiceFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the Invoice - */ - select?: Prisma.InvoiceSelect | null - /** - * Omit specific fields from the Invoice - */ - omit?: Prisma.InvoiceOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceInclude | null - /** - * Filter, which Invoice to fetch. - */ - where: Prisma.InvoiceWhereUniqueInput -} - -/** - * Invoice findFirst - */ -export type InvoiceFindFirstArgs = { - /** - * Select specific fields to fetch from the Invoice - */ - select?: Prisma.InvoiceSelect | null - /** - * Omit specific fields from the Invoice - */ - omit?: Prisma.InvoiceOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceInclude | null - /** - * Filter, which Invoice to fetch. - */ - where?: Prisma.InvoiceWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Invoices to fetch. - */ - orderBy?: Prisma.InvoiceOrderByWithRelationInput | Prisma.InvoiceOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Invoices. - */ - cursor?: Prisma.InvoiceWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Invoices from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Invoices. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Invoices. - */ - distinct?: Prisma.InvoiceScalarFieldEnum | Prisma.InvoiceScalarFieldEnum[] -} - -/** - * Invoice findFirstOrThrow - */ -export type InvoiceFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the Invoice - */ - select?: Prisma.InvoiceSelect | null - /** - * Omit specific fields from the Invoice - */ - omit?: Prisma.InvoiceOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceInclude | null - /** - * Filter, which Invoice to fetch. - */ - where?: Prisma.InvoiceWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Invoices to fetch. - */ - orderBy?: Prisma.InvoiceOrderByWithRelationInput | Prisma.InvoiceOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Invoices. - */ - cursor?: Prisma.InvoiceWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Invoices from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Invoices. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Invoices. - */ - distinct?: Prisma.InvoiceScalarFieldEnum | Prisma.InvoiceScalarFieldEnum[] -} - -/** - * Invoice findMany - */ -export type InvoiceFindManyArgs = { - /** - * Select specific fields to fetch from the Invoice - */ - select?: Prisma.InvoiceSelect | null - /** - * Omit specific fields from the Invoice - */ - omit?: Prisma.InvoiceOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceInclude | null - /** - * Filter, which Invoices to fetch. - */ - where?: Prisma.InvoiceWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Invoices to fetch. - */ - orderBy?: Prisma.InvoiceOrderByWithRelationInput | Prisma.InvoiceOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing Invoices. - */ - cursor?: Prisma.InvoiceWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Invoices from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Invoices. - */ - skip?: number - distinct?: Prisma.InvoiceScalarFieldEnum | Prisma.InvoiceScalarFieldEnum[] -} - -/** - * Invoice create - */ -export type InvoiceCreateArgs = { - /** - * Select specific fields to fetch from the Invoice - */ - select?: Prisma.InvoiceSelect | null - /** - * Omit specific fields from the Invoice - */ - omit?: Prisma.InvoiceOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceInclude | null - /** - * The data needed to create a Invoice. - */ - data: Prisma.XOR -} - -/** - * Invoice createMany - */ -export type InvoiceCreateManyArgs = { - /** - * The data used to create many Invoices. - */ - data: Prisma.InvoiceCreateManyInput | Prisma.InvoiceCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Invoice createManyAndReturn - */ -export type InvoiceCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Invoice - */ - select?: Prisma.InvoiceSelectCreateManyAndReturn | null - /** - * Omit specific fields from the Invoice - */ - omit?: Prisma.InvoiceOmit | null - /** - * The data used to create many Invoices. - */ - data: Prisma.InvoiceCreateManyInput | Prisma.InvoiceCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceIncludeCreateManyAndReturn | null -} - -/** - * Invoice update - */ -export type InvoiceUpdateArgs = { - /** - * Select specific fields to fetch from the Invoice - */ - select?: Prisma.InvoiceSelect | null - /** - * Omit specific fields from the Invoice - */ - omit?: Prisma.InvoiceOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceInclude | null - /** - * The data needed to update a Invoice. - */ - data: Prisma.XOR - /** - * Choose, which Invoice to update. - */ - where: Prisma.InvoiceWhereUniqueInput -} - -/** - * Invoice updateMany - */ -export type InvoiceUpdateManyArgs = { - /** - * The data used to update Invoices. - */ - data: Prisma.XOR - /** - * Filter which Invoices to update - */ - where?: Prisma.InvoiceWhereInput - /** - * Limit how many Invoices to update. - */ - limit?: number -} - -/** - * Invoice updateManyAndReturn - */ -export type InvoiceUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Invoice - */ - select?: Prisma.InvoiceSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the Invoice - */ - omit?: Prisma.InvoiceOmit | null - /** - * The data used to update Invoices. - */ - data: Prisma.XOR - /** - * Filter which Invoices to update - */ - where?: Prisma.InvoiceWhereInput - /** - * Limit how many Invoices to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceIncludeUpdateManyAndReturn | null -} - -/** - * Invoice upsert - */ -export type InvoiceUpsertArgs = { - /** - * Select specific fields to fetch from the Invoice - */ - select?: Prisma.InvoiceSelect | null - /** - * Omit specific fields from the Invoice - */ - omit?: Prisma.InvoiceOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceInclude | null - /** - * The filter to search for the Invoice to update in case it exists. - */ - where: Prisma.InvoiceWhereUniqueInput - /** - * In case the Invoice found by the `where` argument doesn't exist, create a new Invoice with this data. - */ - create: Prisma.XOR - /** - * In case the Invoice was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * Invoice delete - */ -export type InvoiceDeleteArgs = { - /** - * Select specific fields to fetch from the Invoice - */ - select?: Prisma.InvoiceSelect | null - /** - * Omit specific fields from the Invoice - */ - omit?: Prisma.InvoiceOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceInclude | null - /** - * Filter which Invoice to delete. - */ - where: Prisma.InvoiceWhereUniqueInput -} - -/** - * Invoice deleteMany - */ -export type InvoiceDeleteManyArgs = { - /** - * Filter which Invoices to delete - */ - where?: Prisma.InvoiceWhereInput - /** - * Limit how many Invoices to delete. - */ - limit?: number -} - -/** - * Invoice.items - */ -export type Invoice$itemsArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelect | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemInclude | null - where?: Prisma.InvoiceItemWhereInput - orderBy?: Prisma.InvoiceItemOrderByWithRelationInput | Prisma.InvoiceItemOrderByWithRelationInput[] - cursor?: Prisma.InvoiceItemWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.InvoiceItemScalarFieldEnum | Prisma.InvoiceItemScalarFieldEnum[] -} - -/** - * Invoice.payments - */ -export type Invoice$paymentsArgs = { - /** - * Select specific fields to fetch from the Payment - */ - select?: Prisma.PaymentSelect | null - /** - * Omit specific fields from the Payment - */ - omit?: Prisma.PaymentOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PaymentInclude | null - where?: Prisma.PaymentWhereInput - orderBy?: Prisma.PaymentOrderByWithRelationInput | Prisma.PaymentOrderByWithRelationInput[] - cursor?: Prisma.PaymentWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.PaymentScalarFieldEnum | Prisma.PaymentScalarFieldEnum[] -} - -/** - * Invoice without action - */ -export type InvoiceDefaultArgs = { - /** - * Select specific fields to fetch from the Invoice - */ - select?: Prisma.InvoiceSelect | null - /** - * Omit specific fields from the Invoice - */ - omit?: Prisma.InvoiceOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceInclude | null -} diff --git a/prisma/generated/prisma/models/InvoiceItem.ts b/prisma/generated/prisma/models/InvoiceItem.ts deleted file mode 100644 index 1671dce..0000000 --- a/prisma/generated/prisma/models/InvoiceItem.ts +++ /dev/null @@ -1,1617 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `InvoiceItem` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model InvoiceItem - * - */ -export type InvoiceItemModel = runtime.Types.Result.DefaultSelection - -export type AggregateInvoiceItem = { - _count: InvoiceItemCountAggregateOutputType | null - _avg: InvoiceItemAvgAggregateOutputType | null - _sum: InvoiceItemSumAggregateOutputType | null - _min: InvoiceItemMinAggregateOutputType | null - _max: InvoiceItemMaxAggregateOutputType | null -} - -export type InvoiceItemAvgAggregateOutputType = { - quantity: number | null - unitPrice: runtime.Decimal | null - total: runtime.Decimal | null -} - -export type InvoiceItemSumAggregateOutputType = { - quantity: number | null - unitPrice: runtime.Decimal | null - total: runtime.Decimal | null -} - -export type InvoiceItemMinAggregateOutputType = { - id: string | null - invoiceId: string | null - productId: string | null - description: string | null - quantity: number | null - unitPrice: runtime.Decimal | null - total: runtime.Decimal | null -} - -export type InvoiceItemMaxAggregateOutputType = { - id: string | null - invoiceId: string | null - productId: string | null - description: string | null - quantity: number | null - unitPrice: runtime.Decimal | null - total: runtime.Decimal | null -} - -export type InvoiceItemCountAggregateOutputType = { - id: number - invoiceId: number - productId: number - description: number - quantity: number - unitPrice: number - total: number - _all: number -} - - -export type InvoiceItemAvgAggregateInputType = { - quantity?: true - unitPrice?: true - total?: true -} - -export type InvoiceItemSumAggregateInputType = { - quantity?: true - unitPrice?: true - total?: true -} - -export type InvoiceItemMinAggregateInputType = { - id?: true - invoiceId?: true - productId?: true - description?: true - quantity?: true - unitPrice?: true - total?: true -} - -export type InvoiceItemMaxAggregateInputType = { - id?: true - invoiceId?: true - productId?: true - description?: true - quantity?: true - unitPrice?: true - total?: true -} - -export type InvoiceItemCountAggregateInputType = { - id?: true - invoiceId?: true - productId?: true - description?: true - quantity?: true - unitPrice?: true - total?: true - _all?: true -} - -export type InvoiceItemAggregateArgs = { - /** - * Filter which InvoiceItem to aggregate. - */ - where?: Prisma.InvoiceItemWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of InvoiceItems to fetch. - */ - orderBy?: Prisma.InvoiceItemOrderByWithRelationInput | Prisma.InvoiceItemOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.InvoiceItemWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` InvoiceItems from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` InvoiceItems. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned InvoiceItems - **/ - _count?: true | InvoiceItemCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: InvoiceItemAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: InvoiceItemSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: InvoiceItemMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: InvoiceItemMaxAggregateInputType -} - -export type GetInvoiceItemAggregateType = { - [P in keyof T & keyof AggregateInvoiceItem]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type InvoiceItemGroupByArgs = { - where?: Prisma.InvoiceItemWhereInput - orderBy?: Prisma.InvoiceItemOrderByWithAggregationInput | Prisma.InvoiceItemOrderByWithAggregationInput[] - by: Prisma.InvoiceItemScalarFieldEnum[] | Prisma.InvoiceItemScalarFieldEnum - having?: Prisma.InvoiceItemScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: InvoiceItemCountAggregateInputType | true - _avg?: InvoiceItemAvgAggregateInputType - _sum?: InvoiceItemSumAggregateInputType - _min?: InvoiceItemMinAggregateInputType - _max?: InvoiceItemMaxAggregateInputType -} - -export type InvoiceItemGroupByOutputType = { - id: string - invoiceId: string - productId: string | null - description: string - quantity: number - unitPrice: runtime.Decimal - total: runtime.Decimal - _count: InvoiceItemCountAggregateOutputType | null - _avg: InvoiceItemAvgAggregateOutputType | null - _sum: InvoiceItemSumAggregateOutputType | null - _min: InvoiceItemMinAggregateOutputType | null - _max: InvoiceItemMaxAggregateOutputType | null -} - -type GetInvoiceItemGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof InvoiceItemGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type InvoiceItemWhereInput = { - AND?: Prisma.InvoiceItemWhereInput | Prisma.InvoiceItemWhereInput[] - OR?: Prisma.InvoiceItemWhereInput[] - NOT?: Prisma.InvoiceItemWhereInput | Prisma.InvoiceItemWhereInput[] - id?: Prisma.StringFilter<"InvoiceItem"> | string - invoiceId?: Prisma.StringFilter<"InvoiceItem"> | string - productId?: Prisma.StringNullableFilter<"InvoiceItem"> | string | null - description?: Prisma.StringFilter<"InvoiceItem"> | string - quantity?: Prisma.IntFilter<"InvoiceItem"> | number - unitPrice?: Prisma.DecimalFilter<"InvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFilter<"InvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string - invoice?: Prisma.XOR - product?: Prisma.XOR | null -} - -export type InvoiceItemOrderByWithRelationInput = { - id?: Prisma.SortOrder - invoiceId?: Prisma.SortOrder - productId?: Prisma.SortOrderInput | Prisma.SortOrder - description?: Prisma.SortOrder - quantity?: Prisma.SortOrder - unitPrice?: Prisma.SortOrder - total?: Prisma.SortOrder - invoice?: Prisma.InvoiceOrderByWithRelationInput - product?: Prisma.ProductOrderByWithRelationInput -} - -export type InvoiceItemWhereUniqueInput = Prisma.AtLeast<{ - id?: string - AND?: Prisma.InvoiceItemWhereInput | Prisma.InvoiceItemWhereInput[] - OR?: Prisma.InvoiceItemWhereInput[] - NOT?: Prisma.InvoiceItemWhereInput | Prisma.InvoiceItemWhereInput[] - invoiceId?: Prisma.StringFilter<"InvoiceItem"> | string - productId?: Prisma.StringNullableFilter<"InvoiceItem"> | string | null - description?: Prisma.StringFilter<"InvoiceItem"> | string - quantity?: Prisma.IntFilter<"InvoiceItem"> | number - unitPrice?: Prisma.DecimalFilter<"InvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFilter<"InvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string - invoice?: Prisma.XOR - product?: Prisma.XOR | null -}, "id"> - -export type InvoiceItemOrderByWithAggregationInput = { - id?: Prisma.SortOrder - invoiceId?: Prisma.SortOrder - productId?: Prisma.SortOrderInput | Prisma.SortOrder - description?: Prisma.SortOrder - quantity?: Prisma.SortOrder - unitPrice?: Prisma.SortOrder - total?: Prisma.SortOrder - _count?: Prisma.InvoiceItemCountOrderByAggregateInput - _avg?: Prisma.InvoiceItemAvgOrderByAggregateInput - _max?: Prisma.InvoiceItemMaxOrderByAggregateInput - _min?: Prisma.InvoiceItemMinOrderByAggregateInput - _sum?: Prisma.InvoiceItemSumOrderByAggregateInput -} - -export type InvoiceItemScalarWhereWithAggregatesInput = { - AND?: Prisma.InvoiceItemScalarWhereWithAggregatesInput | Prisma.InvoiceItemScalarWhereWithAggregatesInput[] - OR?: Prisma.InvoiceItemScalarWhereWithAggregatesInput[] - NOT?: Prisma.InvoiceItemScalarWhereWithAggregatesInput | Prisma.InvoiceItemScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"InvoiceItem"> | string - invoiceId?: Prisma.StringWithAggregatesFilter<"InvoiceItem"> | string - productId?: Prisma.StringNullableWithAggregatesFilter<"InvoiceItem"> | string | null - description?: Prisma.StringWithAggregatesFilter<"InvoiceItem"> | string - quantity?: Prisma.IntWithAggregatesFilter<"InvoiceItem"> | number - unitPrice?: Prisma.DecimalWithAggregatesFilter<"InvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalWithAggregatesFilter<"InvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemCreateInput = { - id?: string - description: string - quantity?: number - unitPrice: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string - invoice: Prisma.InvoiceCreateNestedOneWithoutItemsInput - product?: Prisma.ProductCreateNestedOneWithoutInvoicesInput -} - -export type InvoiceItemUncheckedCreateInput = { - id?: string - invoiceId: string - productId?: string | null - description: string - quantity?: number - unitPrice: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.StringFieldUpdateOperationsInput | string - quantity?: Prisma.IntFieldUpdateOperationsInput | number - unitPrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - invoice?: Prisma.InvoiceUpdateOneRequiredWithoutItemsNestedInput - product?: Prisma.ProductUpdateOneWithoutInvoicesNestedInput -} - -export type InvoiceItemUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceId?: Prisma.StringFieldUpdateOperationsInput | string - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - description?: Prisma.StringFieldUpdateOperationsInput | string - quantity?: Prisma.IntFieldUpdateOperationsInput | number - unitPrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemCreateManyInput = { - id?: string - invoiceId: string - productId?: string | null - description: string - quantity?: number - unitPrice: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.StringFieldUpdateOperationsInput | string - quantity?: Prisma.IntFieldUpdateOperationsInput | number - unitPrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceId?: Prisma.StringFieldUpdateOperationsInput | string - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - description?: Prisma.StringFieldUpdateOperationsInput | string - quantity?: Prisma.IntFieldUpdateOperationsInput | number - unitPrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemListRelationFilter = { - every?: Prisma.InvoiceItemWhereInput - some?: Prisma.InvoiceItemWhereInput - none?: Prisma.InvoiceItemWhereInput -} - -export type InvoiceItemOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type InvoiceItemCountOrderByAggregateInput = { - id?: Prisma.SortOrder - invoiceId?: Prisma.SortOrder - productId?: Prisma.SortOrder - description?: Prisma.SortOrder - quantity?: Prisma.SortOrder - unitPrice?: Prisma.SortOrder - total?: Prisma.SortOrder -} - -export type InvoiceItemAvgOrderByAggregateInput = { - quantity?: Prisma.SortOrder - unitPrice?: Prisma.SortOrder - total?: Prisma.SortOrder -} - -export type InvoiceItemMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - invoiceId?: Prisma.SortOrder - productId?: Prisma.SortOrder - description?: Prisma.SortOrder - quantity?: Prisma.SortOrder - unitPrice?: Prisma.SortOrder - total?: Prisma.SortOrder -} - -export type InvoiceItemMinOrderByAggregateInput = { - id?: Prisma.SortOrder - invoiceId?: Prisma.SortOrder - productId?: Prisma.SortOrder - description?: Prisma.SortOrder - quantity?: Prisma.SortOrder - unitPrice?: Prisma.SortOrder - total?: Prisma.SortOrder -} - -export type InvoiceItemSumOrderByAggregateInput = { - quantity?: Prisma.SortOrder - unitPrice?: Prisma.SortOrder - total?: Prisma.SortOrder -} - -export type InvoiceItemCreateNestedManyWithoutProductInput = { - create?: Prisma.XOR | Prisma.InvoiceItemCreateWithoutProductInput[] | Prisma.InvoiceItemUncheckedCreateWithoutProductInput[] - connectOrCreate?: Prisma.InvoiceItemCreateOrConnectWithoutProductInput | Prisma.InvoiceItemCreateOrConnectWithoutProductInput[] - createMany?: Prisma.InvoiceItemCreateManyProductInputEnvelope - connect?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] -} - -export type InvoiceItemUncheckedCreateNestedManyWithoutProductInput = { - create?: Prisma.XOR | Prisma.InvoiceItemCreateWithoutProductInput[] | Prisma.InvoiceItemUncheckedCreateWithoutProductInput[] - connectOrCreate?: Prisma.InvoiceItemCreateOrConnectWithoutProductInput | Prisma.InvoiceItemCreateOrConnectWithoutProductInput[] - createMany?: Prisma.InvoiceItemCreateManyProductInputEnvelope - connect?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] -} - -export type InvoiceItemUpdateManyWithoutProductNestedInput = { - create?: Prisma.XOR | Prisma.InvoiceItemCreateWithoutProductInput[] | Prisma.InvoiceItemUncheckedCreateWithoutProductInput[] - connectOrCreate?: Prisma.InvoiceItemCreateOrConnectWithoutProductInput | Prisma.InvoiceItemCreateOrConnectWithoutProductInput[] - upsert?: Prisma.InvoiceItemUpsertWithWhereUniqueWithoutProductInput | Prisma.InvoiceItemUpsertWithWhereUniqueWithoutProductInput[] - createMany?: Prisma.InvoiceItemCreateManyProductInputEnvelope - set?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - disconnect?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - delete?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - connect?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - update?: Prisma.InvoiceItemUpdateWithWhereUniqueWithoutProductInput | Prisma.InvoiceItemUpdateWithWhereUniqueWithoutProductInput[] - updateMany?: Prisma.InvoiceItemUpdateManyWithWhereWithoutProductInput | Prisma.InvoiceItemUpdateManyWithWhereWithoutProductInput[] - deleteMany?: Prisma.InvoiceItemScalarWhereInput | Prisma.InvoiceItemScalarWhereInput[] -} - -export type InvoiceItemUncheckedUpdateManyWithoutProductNestedInput = { - create?: Prisma.XOR | Prisma.InvoiceItemCreateWithoutProductInput[] | Prisma.InvoiceItemUncheckedCreateWithoutProductInput[] - connectOrCreate?: Prisma.InvoiceItemCreateOrConnectWithoutProductInput | Prisma.InvoiceItemCreateOrConnectWithoutProductInput[] - upsert?: Prisma.InvoiceItemUpsertWithWhereUniqueWithoutProductInput | Prisma.InvoiceItemUpsertWithWhereUniqueWithoutProductInput[] - createMany?: Prisma.InvoiceItemCreateManyProductInputEnvelope - set?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - disconnect?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - delete?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - connect?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - update?: Prisma.InvoiceItemUpdateWithWhereUniqueWithoutProductInput | Prisma.InvoiceItemUpdateWithWhereUniqueWithoutProductInput[] - updateMany?: Prisma.InvoiceItemUpdateManyWithWhereWithoutProductInput | Prisma.InvoiceItemUpdateManyWithWhereWithoutProductInput[] - deleteMany?: Prisma.InvoiceItemScalarWhereInput | Prisma.InvoiceItemScalarWhereInput[] -} - -export type InvoiceItemCreateNestedManyWithoutInvoiceInput = { - create?: Prisma.XOR | Prisma.InvoiceItemCreateWithoutInvoiceInput[] | Prisma.InvoiceItemUncheckedCreateWithoutInvoiceInput[] - connectOrCreate?: Prisma.InvoiceItemCreateOrConnectWithoutInvoiceInput | Prisma.InvoiceItemCreateOrConnectWithoutInvoiceInput[] - createMany?: Prisma.InvoiceItemCreateManyInvoiceInputEnvelope - connect?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] -} - -export type InvoiceItemUncheckedCreateNestedManyWithoutInvoiceInput = { - create?: Prisma.XOR | Prisma.InvoiceItemCreateWithoutInvoiceInput[] | Prisma.InvoiceItemUncheckedCreateWithoutInvoiceInput[] - connectOrCreate?: Prisma.InvoiceItemCreateOrConnectWithoutInvoiceInput | Prisma.InvoiceItemCreateOrConnectWithoutInvoiceInput[] - createMany?: Prisma.InvoiceItemCreateManyInvoiceInputEnvelope - connect?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] -} - -export type InvoiceItemUpdateManyWithoutInvoiceNestedInput = { - create?: Prisma.XOR | Prisma.InvoiceItemCreateWithoutInvoiceInput[] | Prisma.InvoiceItemUncheckedCreateWithoutInvoiceInput[] - connectOrCreate?: Prisma.InvoiceItemCreateOrConnectWithoutInvoiceInput | Prisma.InvoiceItemCreateOrConnectWithoutInvoiceInput[] - upsert?: Prisma.InvoiceItemUpsertWithWhereUniqueWithoutInvoiceInput | Prisma.InvoiceItemUpsertWithWhereUniqueWithoutInvoiceInput[] - createMany?: Prisma.InvoiceItemCreateManyInvoiceInputEnvelope - set?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - disconnect?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - delete?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - connect?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - update?: Prisma.InvoiceItemUpdateWithWhereUniqueWithoutInvoiceInput | Prisma.InvoiceItemUpdateWithWhereUniqueWithoutInvoiceInput[] - updateMany?: Prisma.InvoiceItemUpdateManyWithWhereWithoutInvoiceInput | Prisma.InvoiceItemUpdateManyWithWhereWithoutInvoiceInput[] - deleteMany?: Prisma.InvoiceItemScalarWhereInput | Prisma.InvoiceItemScalarWhereInput[] -} - -export type InvoiceItemUncheckedUpdateManyWithoutInvoiceNestedInput = { - create?: Prisma.XOR | Prisma.InvoiceItemCreateWithoutInvoiceInput[] | Prisma.InvoiceItemUncheckedCreateWithoutInvoiceInput[] - connectOrCreate?: Prisma.InvoiceItemCreateOrConnectWithoutInvoiceInput | Prisma.InvoiceItemCreateOrConnectWithoutInvoiceInput[] - upsert?: Prisma.InvoiceItemUpsertWithWhereUniqueWithoutInvoiceInput | Prisma.InvoiceItemUpsertWithWhereUniqueWithoutInvoiceInput[] - createMany?: Prisma.InvoiceItemCreateManyInvoiceInputEnvelope - set?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - disconnect?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - delete?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - connect?: Prisma.InvoiceItemWhereUniqueInput | Prisma.InvoiceItemWhereUniqueInput[] - update?: Prisma.InvoiceItemUpdateWithWhereUniqueWithoutInvoiceInput | Prisma.InvoiceItemUpdateWithWhereUniqueWithoutInvoiceInput[] - updateMany?: Prisma.InvoiceItemUpdateManyWithWhereWithoutInvoiceInput | Prisma.InvoiceItemUpdateManyWithWhereWithoutInvoiceInput[] - deleteMany?: Prisma.InvoiceItemScalarWhereInput | Prisma.InvoiceItemScalarWhereInput[] -} - -export type InvoiceItemCreateWithoutProductInput = { - id?: string - description: string - quantity?: number - unitPrice: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string - invoice: Prisma.InvoiceCreateNestedOneWithoutItemsInput -} - -export type InvoiceItemUncheckedCreateWithoutProductInput = { - id?: string - invoiceId: string - description: string - quantity?: number - unitPrice: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemCreateOrConnectWithoutProductInput = { - where: Prisma.InvoiceItemWhereUniqueInput - create: Prisma.XOR -} - -export type InvoiceItemCreateManyProductInputEnvelope = { - data: Prisma.InvoiceItemCreateManyProductInput | Prisma.InvoiceItemCreateManyProductInput[] - skipDuplicates?: boolean -} - -export type InvoiceItemUpsertWithWhereUniqueWithoutProductInput = { - where: Prisma.InvoiceItemWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type InvoiceItemUpdateWithWhereUniqueWithoutProductInput = { - where: Prisma.InvoiceItemWhereUniqueInput - data: Prisma.XOR -} - -export type InvoiceItemUpdateManyWithWhereWithoutProductInput = { - where: Prisma.InvoiceItemScalarWhereInput - data: Prisma.XOR -} - -export type InvoiceItemScalarWhereInput = { - AND?: Prisma.InvoiceItemScalarWhereInput | Prisma.InvoiceItemScalarWhereInput[] - OR?: Prisma.InvoiceItemScalarWhereInput[] - NOT?: Prisma.InvoiceItemScalarWhereInput | Prisma.InvoiceItemScalarWhereInput[] - id?: Prisma.StringFilter<"InvoiceItem"> | string - invoiceId?: Prisma.StringFilter<"InvoiceItem"> | string - productId?: Prisma.StringNullableFilter<"InvoiceItem"> | string | null - description?: Prisma.StringFilter<"InvoiceItem"> | string - quantity?: Prisma.IntFilter<"InvoiceItem"> | number - unitPrice?: Prisma.DecimalFilter<"InvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFilter<"InvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemCreateWithoutInvoiceInput = { - id?: string - description: string - quantity?: number - unitPrice: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string - product?: Prisma.ProductCreateNestedOneWithoutInvoicesInput -} - -export type InvoiceItemUncheckedCreateWithoutInvoiceInput = { - id?: string - productId?: string | null - description: string - quantity?: number - unitPrice: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemCreateOrConnectWithoutInvoiceInput = { - where: Prisma.InvoiceItemWhereUniqueInput - create: Prisma.XOR -} - -export type InvoiceItemCreateManyInvoiceInputEnvelope = { - data: Prisma.InvoiceItemCreateManyInvoiceInput | Prisma.InvoiceItemCreateManyInvoiceInput[] - skipDuplicates?: boolean -} - -export type InvoiceItemUpsertWithWhereUniqueWithoutInvoiceInput = { - where: Prisma.InvoiceItemWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type InvoiceItemUpdateWithWhereUniqueWithoutInvoiceInput = { - where: Prisma.InvoiceItemWhereUniqueInput - data: Prisma.XOR -} - -export type InvoiceItemUpdateManyWithWhereWithoutInvoiceInput = { - where: Prisma.InvoiceItemScalarWhereInput - data: Prisma.XOR -} - -export type InvoiceItemCreateManyProductInput = { - id?: string - invoiceId: string - description: string - quantity?: number - unitPrice: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemUpdateWithoutProductInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.StringFieldUpdateOperationsInput | string - quantity?: Prisma.IntFieldUpdateOperationsInput | number - unitPrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - invoice?: Prisma.InvoiceUpdateOneRequiredWithoutItemsNestedInput -} - -export type InvoiceItemUncheckedUpdateWithoutProductInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceId?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.StringFieldUpdateOperationsInput | string - quantity?: Prisma.IntFieldUpdateOperationsInput | number - unitPrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemUncheckedUpdateManyWithoutProductInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceId?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.StringFieldUpdateOperationsInput | string - quantity?: Prisma.IntFieldUpdateOperationsInput | number - unitPrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemCreateManyInvoiceInput = { - id?: string - productId?: string | null - description: string - quantity?: number - unitPrice: runtime.Decimal | runtime.DecimalJsLike | number | string - total: runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemUpdateWithoutInvoiceInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.StringFieldUpdateOperationsInput | string - quantity?: Prisma.IntFieldUpdateOperationsInput | number - unitPrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - product?: Prisma.ProductUpdateOneWithoutInvoicesNestedInput -} - -export type InvoiceItemUncheckedUpdateWithoutInvoiceInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - description?: Prisma.StringFieldUpdateOperationsInput | string - quantity?: Prisma.IntFieldUpdateOperationsInput | number - unitPrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type InvoiceItemUncheckedUpdateManyWithoutInvoiceInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - description?: Prisma.StringFieldUpdateOperationsInput | string - quantity?: Prisma.IntFieldUpdateOperationsInput | number - unitPrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - total?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string -} - - - -export type InvoiceItemSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - invoiceId?: boolean - productId?: boolean - description?: boolean - quantity?: boolean - unitPrice?: boolean - total?: boolean - invoice?: boolean | Prisma.InvoiceDefaultArgs - product?: boolean | Prisma.InvoiceItem$productArgs -}, ExtArgs["result"]["invoiceItem"]> - -export type InvoiceItemSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - invoiceId?: boolean - productId?: boolean - description?: boolean - quantity?: boolean - unitPrice?: boolean - total?: boolean - invoice?: boolean | Prisma.InvoiceDefaultArgs - product?: boolean | Prisma.InvoiceItem$productArgs -}, ExtArgs["result"]["invoiceItem"]> - -export type InvoiceItemSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - invoiceId?: boolean - productId?: boolean - description?: boolean - quantity?: boolean - unitPrice?: boolean - total?: boolean - invoice?: boolean | Prisma.InvoiceDefaultArgs - product?: boolean | Prisma.InvoiceItem$productArgs -}, ExtArgs["result"]["invoiceItem"]> - -export type InvoiceItemSelectScalar = { - id?: boolean - invoiceId?: boolean - productId?: boolean - description?: boolean - quantity?: boolean - unitPrice?: boolean - total?: boolean -} - -export type InvoiceItemOmit = runtime.Types.Extensions.GetOmit<"id" | "invoiceId" | "productId" | "description" | "quantity" | "unitPrice" | "total", ExtArgs["result"]["invoiceItem"]> -export type InvoiceItemInclude = { - invoice?: boolean | Prisma.InvoiceDefaultArgs - product?: boolean | Prisma.InvoiceItem$productArgs -} -export type InvoiceItemIncludeCreateManyAndReturn = { - invoice?: boolean | Prisma.InvoiceDefaultArgs - product?: boolean | Prisma.InvoiceItem$productArgs -} -export type InvoiceItemIncludeUpdateManyAndReturn = { - invoice?: boolean | Prisma.InvoiceDefaultArgs - product?: boolean | Prisma.InvoiceItem$productArgs -} - -export type $InvoiceItemPayload = { - name: "InvoiceItem" - objects: { - invoice: Prisma.$InvoicePayload - product: Prisma.$ProductPayload | null - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - invoiceId: string - productId: string | null - description: string - quantity: number - unitPrice: runtime.Decimal - total: runtime.Decimal - }, ExtArgs["result"]["invoiceItem"]> - composites: {} -} - -export type InvoiceItemGetPayload = runtime.Types.Result.GetResult - -export type InvoiceItemCountArgs = - Omit & { - select?: InvoiceItemCountAggregateInputType | true - } - -export interface InvoiceItemDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['InvoiceItem'], meta: { name: 'InvoiceItem' } } - /** - * Find zero or one InvoiceItem that matches the filter. - * @param {InvoiceItemFindUniqueArgs} args - Arguments to find a InvoiceItem - * @example - * // Get one InvoiceItem - * const invoiceItem = await prisma.invoiceItem.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__InvoiceItemClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one InvoiceItem that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {InvoiceItemFindUniqueOrThrowArgs} args - Arguments to find a InvoiceItem - * @example - * // Get one InvoiceItem - * const invoiceItem = await prisma.invoiceItem.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__InvoiceItemClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first InvoiceItem that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceItemFindFirstArgs} args - Arguments to find a InvoiceItem - * @example - * // Get one InvoiceItem - * const invoiceItem = await prisma.invoiceItem.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__InvoiceItemClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first InvoiceItem that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceItemFindFirstOrThrowArgs} args - Arguments to find a InvoiceItem - * @example - * // Get one InvoiceItem - * const invoiceItem = await prisma.invoiceItem.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__InvoiceItemClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more InvoiceItems that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceItemFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all InvoiceItems - * const invoiceItems = await prisma.invoiceItem.findMany() - * - * // Get first 10 InvoiceItems - * const invoiceItems = await prisma.invoiceItem.findMany({ take: 10 }) - * - * // Only select the `id` - * const invoiceItemWithIdOnly = await prisma.invoiceItem.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a InvoiceItem. - * @param {InvoiceItemCreateArgs} args - Arguments to create a InvoiceItem. - * @example - * // Create one InvoiceItem - * const InvoiceItem = await prisma.invoiceItem.create({ - * data: { - * // ... data to create a InvoiceItem - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__InvoiceItemClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many InvoiceItems. - * @param {InvoiceItemCreateManyArgs} args - Arguments to create many InvoiceItems. - * @example - * // Create many InvoiceItems - * const invoiceItem = await prisma.invoiceItem.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many InvoiceItems and returns the data saved in the database. - * @param {InvoiceItemCreateManyAndReturnArgs} args - Arguments to create many InvoiceItems. - * @example - * // Create many InvoiceItems - * const invoiceItem = await prisma.invoiceItem.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many InvoiceItems and only return the `id` - * const invoiceItemWithIdOnly = await prisma.invoiceItem.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a InvoiceItem. - * @param {InvoiceItemDeleteArgs} args - Arguments to delete one InvoiceItem. - * @example - * // Delete one InvoiceItem - * const InvoiceItem = await prisma.invoiceItem.delete({ - * where: { - * // ... filter to delete one InvoiceItem - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__InvoiceItemClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one InvoiceItem. - * @param {InvoiceItemUpdateArgs} args - Arguments to update one InvoiceItem. - * @example - * // Update one InvoiceItem - * const invoiceItem = await prisma.invoiceItem.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__InvoiceItemClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more InvoiceItems. - * @param {InvoiceItemDeleteManyArgs} args - Arguments to filter InvoiceItems to delete. - * @example - * // Delete a few InvoiceItems - * const { count } = await prisma.invoiceItem.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more InvoiceItems. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceItemUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many InvoiceItems - * const invoiceItem = await prisma.invoiceItem.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more InvoiceItems and returns the data updated in the database. - * @param {InvoiceItemUpdateManyAndReturnArgs} args - Arguments to update many InvoiceItems. - * @example - * // Update many InvoiceItems - * const invoiceItem = await prisma.invoiceItem.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more InvoiceItems and only return the `id` - * const invoiceItemWithIdOnly = await prisma.invoiceItem.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one InvoiceItem. - * @param {InvoiceItemUpsertArgs} args - Arguments to update or create a InvoiceItem. - * @example - * // Update or create a InvoiceItem - * const invoiceItem = await prisma.invoiceItem.upsert({ - * create: { - * // ... data to create a InvoiceItem - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the InvoiceItem we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__InvoiceItemClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of InvoiceItems. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceItemCountArgs} args - Arguments to filter InvoiceItems to count. - * @example - * // Count the number of InvoiceItems - * const count = await prisma.invoiceItem.count({ - * where: { - * // ... the filter for the InvoiceItems we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a InvoiceItem. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceItemAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by InvoiceItem. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {InvoiceItemGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends InvoiceItemGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: InvoiceItemGroupByArgs['orderBy'] } - : { orderBy?: InvoiceItemGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetInvoiceItemGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the InvoiceItem model - */ -readonly fields: InvoiceItemFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for InvoiceItem. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__InvoiceItemClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - invoice = {}>(args?: Prisma.Subset>): Prisma.Prisma__InvoiceClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - product = {}>(args?: Prisma.Subset>): Prisma.Prisma__ProductClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the InvoiceItem model - */ -export interface InvoiceItemFieldRefs { - readonly id: Prisma.FieldRef<"InvoiceItem", 'String'> - readonly invoiceId: Prisma.FieldRef<"InvoiceItem", 'String'> - readonly productId: Prisma.FieldRef<"InvoiceItem", 'String'> - readonly description: Prisma.FieldRef<"InvoiceItem", 'String'> - readonly quantity: Prisma.FieldRef<"InvoiceItem", 'Int'> - readonly unitPrice: Prisma.FieldRef<"InvoiceItem", 'Decimal'> - readonly total: Prisma.FieldRef<"InvoiceItem", 'Decimal'> -} - - -// Custom InputTypes -/** - * InvoiceItem findUnique - */ -export type InvoiceItemFindUniqueArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelect | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemInclude | null - /** - * Filter, which InvoiceItem to fetch. - */ - where: Prisma.InvoiceItemWhereUniqueInput -} - -/** - * InvoiceItem findUniqueOrThrow - */ -export type InvoiceItemFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelect | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemInclude | null - /** - * Filter, which InvoiceItem to fetch. - */ - where: Prisma.InvoiceItemWhereUniqueInput -} - -/** - * InvoiceItem findFirst - */ -export type InvoiceItemFindFirstArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelect | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemInclude | null - /** - * Filter, which InvoiceItem to fetch. - */ - where?: Prisma.InvoiceItemWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of InvoiceItems to fetch. - */ - orderBy?: Prisma.InvoiceItemOrderByWithRelationInput | Prisma.InvoiceItemOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for InvoiceItems. - */ - cursor?: Prisma.InvoiceItemWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` InvoiceItems from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` InvoiceItems. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of InvoiceItems. - */ - distinct?: Prisma.InvoiceItemScalarFieldEnum | Prisma.InvoiceItemScalarFieldEnum[] -} - -/** - * InvoiceItem findFirstOrThrow - */ -export type InvoiceItemFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelect | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemInclude | null - /** - * Filter, which InvoiceItem to fetch. - */ - where?: Prisma.InvoiceItemWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of InvoiceItems to fetch. - */ - orderBy?: Prisma.InvoiceItemOrderByWithRelationInput | Prisma.InvoiceItemOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for InvoiceItems. - */ - cursor?: Prisma.InvoiceItemWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` InvoiceItems from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` InvoiceItems. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of InvoiceItems. - */ - distinct?: Prisma.InvoiceItemScalarFieldEnum | Prisma.InvoiceItemScalarFieldEnum[] -} - -/** - * InvoiceItem findMany - */ -export type InvoiceItemFindManyArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelect | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemInclude | null - /** - * Filter, which InvoiceItems to fetch. - */ - where?: Prisma.InvoiceItemWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of InvoiceItems to fetch. - */ - orderBy?: Prisma.InvoiceItemOrderByWithRelationInput | Prisma.InvoiceItemOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing InvoiceItems. - */ - cursor?: Prisma.InvoiceItemWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` InvoiceItems from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` InvoiceItems. - */ - skip?: number - distinct?: Prisma.InvoiceItemScalarFieldEnum | Prisma.InvoiceItemScalarFieldEnum[] -} - -/** - * InvoiceItem create - */ -export type InvoiceItemCreateArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelect | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemInclude | null - /** - * The data needed to create a InvoiceItem. - */ - data: Prisma.XOR -} - -/** - * InvoiceItem createMany - */ -export type InvoiceItemCreateManyArgs = { - /** - * The data used to create many InvoiceItems. - */ - data: Prisma.InvoiceItemCreateManyInput | Prisma.InvoiceItemCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * InvoiceItem createManyAndReturn - */ -export type InvoiceItemCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelectCreateManyAndReturn | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * The data used to create many InvoiceItems. - */ - data: Prisma.InvoiceItemCreateManyInput | Prisma.InvoiceItemCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemIncludeCreateManyAndReturn | null -} - -/** - * InvoiceItem update - */ -export type InvoiceItemUpdateArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelect | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemInclude | null - /** - * The data needed to update a InvoiceItem. - */ - data: Prisma.XOR - /** - * Choose, which InvoiceItem to update. - */ - where: Prisma.InvoiceItemWhereUniqueInput -} - -/** - * InvoiceItem updateMany - */ -export type InvoiceItemUpdateManyArgs = { - /** - * The data used to update InvoiceItems. - */ - data: Prisma.XOR - /** - * Filter which InvoiceItems to update - */ - where?: Prisma.InvoiceItemWhereInput - /** - * Limit how many InvoiceItems to update. - */ - limit?: number -} - -/** - * InvoiceItem updateManyAndReturn - */ -export type InvoiceItemUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * The data used to update InvoiceItems. - */ - data: Prisma.XOR - /** - * Filter which InvoiceItems to update - */ - where?: Prisma.InvoiceItemWhereInput - /** - * Limit how many InvoiceItems to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemIncludeUpdateManyAndReturn | null -} - -/** - * InvoiceItem upsert - */ -export type InvoiceItemUpsertArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelect | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemInclude | null - /** - * The filter to search for the InvoiceItem to update in case it exists. - */ - where: Prisma.InvoiceItemWhereUniqueInput - /** - * In case the InvoiceItem found by the `where` argument doesn't exist, create a new InvoiceItem with this data. - */ - create: Prisma.XOR - /** - * In case the InvoiceItem was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * InvoiceItem delete - */ -export type InvoiceItemDeleteArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelect | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemInclude | null - /** - * Filter which InvoiceItem to delete. - */ - where: Prisma.InvoiceItemWhereUniqueInput -} - -/** - * InvoiceItem deleteMany - */ -export type InvoiceItemDeleteManyArgs = { - /** - * Filter which InvoiceItems to delete - */ - where?: Prisma.InvoiceItemWhereInput - /** - * Limit how many InvoiceItems to delete. - */ - limit?: number -} - -/** - * InvoiceItem.product - */ -export type InvoiceItem$productArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelect | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductInclude | null - where?: Prisma.ProductWhereInput -} - -/** - * InvoiceItem without action - */ -export type InvoiceItemDefaultArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelect | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemInclude | null -} diff --git a/prisma/generated/prisma/models/Location.ts b/prisma/generated/prisma/models/Location.ts deleted file mode 100644 index 809dc1b..0000000 --- a/prisma/generated/prisma/models/Location.ts +++ /dev/null @@ -1,1374 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `Location` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model Location - * - */ -export type LocationModel = runtime.Types.Result.DefaultSelection - -export type AggregateLocation = { - _count: LocationCountAggregateOutputType | null - _avg: LocationAvgAggregateOutputType | null - _sum: LocationSumAggregateOutputType | null - _min: LocationMinAggregateOutputType | null - _max: LocationMaxAggregateOutputType | null -} - -export type LocationAvgAggregateOutputType = { - id: number | null -} - -export type LocationSumAggregateOutputType = { - id: number | null -} - -export type LocationMinAggregateOutputType = { - id: number | null - shortCode: string | null - description: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type LocationMaxAggregateOutputType = { - id: number | null - shortCode: string | null - description: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type LocationCountAggregateOutputType = { - id: number - shortCode: number - description: number - createdAt: number - updatedAt: number - _all: number -} - - -export type LocationAvgAggregateInputType = { - id?: true -} - -export type LocationSumAggregateInputType = { - id?: true -} - -export type LocationMinAggregateInputType = { - id?: true - shortCode?: true - description?: true - createdAt?: true - updatedAt?: true -} - -export type LocationMaxAggregateInputType = { - id?: true - shortCode?: true - description?: true - createdAt?: true - updatedAt?: true -} - -export type LocationCountAggregateInputType = { - id?: true - shortCode?: true - description?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type LocationAggregateArgs = { - /** - * Filter which Location to aggregate. - */ - where?: Prisma.LocationWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Locations to fetch. - */ - orderBy?: Prisma.LocationOrderByWithRelationInput | Prisma.LocationOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.LocationWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Locations from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Locations. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned Locations - **/ - _count?: true | LocationCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: LocationAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: LocationSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: LocationMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: LocationMaxAggregateInputType -} - -export type GetLocationAggregateType = { - [P in keyof T & keyof AggregateLocation]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type LocationGroupByArgs = { - where?: Prisma.LocationWhereInput - orderBy?: Prisma.LocationOrderByWithAggregationInput | Prisma.LocationOrderByWithAggregationInput[] - by: Prisma.LocationScalarFieldEnum[] | Prisma.LocationScalarFieldEnum - having?: Prisma.LocationScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: LocationCountAggregateInputType | true - _avg?: LocationAvgAggregateInputType - _sum?: LocationSumAggregateInputType - _min?: LocationMinAggregateInputType - _max?: LocationMaxAggregateInputType -} - -export type LocationGroupByOutputType = { - id: number - shortCode: string - description: string | null - createdAt: Date - updatedAt: Date - _count: LocationCountAggregateOutputType | null - _avg: LocationAvgAggregateOutputType | null - _sum: LocationSumAggregateOutputType | null - _min: LocationMinAggregateOutputType | null - _max: LocationMaxAggregateOutputType | null -} - -type GetLocationGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof LocationGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type LocationWhereInput = { - AND?: Prisma.LocationWhereInput | Prisma.LocationWhereInput[] - OR?: Prisma.LocationWhereInput[] - NOT?: Prisma.LocationWhereInput | Prisma.LocationWhereInput[] - id?: Prisma.IntFilter<"Location"> | number - shortCode?: Prisma.StringFilter<"Location"> | string - description?: Prisma.StringNullableFilter<"Location"> | string | null - createdAt?: Prisma.DateTimeFilter<"Location"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Location"> | Date | string - nodes?: Prisma.NodeListRelationFilter -} - -export type LocationOrderByWithRelationInput = { - id?: Prisma.SortOrder - shortCode?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - nodes?: Prisma.NodeOrderByRelationAggregateInput -} - -export type LocationWhereUniqueInput = Prisma.AtLeast<{ - id?: number - shortCode?: string - AND?: Prisma.LocationWhereInput | Prisma.LocationWhereInput[] - OR?: Prisma.LocationWhereInput[] - NOT?: Prisma.LocationWhereInput | Prisma.LocationWhereInput[] - description?: Prisma.StringNullableFilter<"Location"> | string | null - createdAt?: Prisma.DateTimeFilter<"Location"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Location"> | Date | string - nodes?: Prisma.NodeListRelationFilter -}, "id" | "shortCode"> - -export type LocationOrderByWithAggregationInput = { - id?: Prisma.SortOrder - shortCode?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.LocationCountOrderByAggregateInput - _avg?: Prisma.LocationAvgOrderByAggregateInput - _max?: Prisma.LocationMaxOrderByAggregateInput - _min?: Prisma.LocationMinOrderByAggregateInput - _sum?: Prisma.LocationSumOrderByAggregateInput -} - -export type LocationScalarWhereWithAggregatesInput = { - AND?: Prisma.LocationScalarWhereWithAggregatesInput | Prisma.LocationScalarWhereWithAggregatesInput[] - OR?: Prisma.LocationScalarWhereWithAggregatesInput[] - NOT?: Prisma.LocationScalarWhereWithAggregatesInput | Prisma.LocationScalarWhereWithAggregatesInput[] - id?: Prisma.IntWithAggregatesFilter<"Location"> | number - shortCode?: Prisma.StringWithAggregatesFilter<"Location"> | string - description?: Prisma.StringNullableWithAggregatesFilter<"Location"> | string | null - createdAt?: Prisma.DateTimeWithAggregatesFilter<"Location"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Location"> | Date | string -} - -export type LocationCreateInput = { - id: number - shortCode: string - description?: string | null - createdAt?: Date | string - updatedAt?: Date | string - nodes?: Prisma.NodeCreateNestedManyWithoutLocationInput -} - -export type LocationUncheckedCreateInput = { - id: number - shortCode: string - description?: string | null - createdAt?: Date | string - updatedAt?: Date | string - nodes?: Prisma.NodeUncheckedCreateNestedManyWithoutLocationInput -} - -export type LocationUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - shortCode?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - nodes?: Prisma.NodeUpdateManyWithoutLocationNestedInput -} - -export type LocationUncheckedUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - shortCode?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - nodes?: Prisma.NodeUncheckedUpdateManyWithoutLocationNestedInput -} - -export type LocationCreateManyInput = { - id: number - shortCode: string - description?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type LocationUpdateManyMutationInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - shortCode?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type LocationUncheckedUpdateManyInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - shortCode?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type LocationCountOrderByAggregateInput = { - id?: Prisma.SortOrder - shortCode?: Prisma.SortOrder - description?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type LocationAvgOrderByAggregateInput = { - id?: Prisma.SortOrder -} - -export type LocationMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - shortCode?: Prisma.SortOrder - description?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type LocationMinOrderByAggregateInput = { - id?: Prisma.SortOrder - shortCode?: Prisma.SortOrder - description?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type LocationSumOrderByAggregateInput = { - id?: Prisma.SortOrder -} - -export type LocationScalarRelationFilter = { - is?: Prisma.LocationWhereInput - isNot?: Prisma.LocationWhereInput -} - -export type IntFieldUpdateOperationsInput = { - set?: number - increment?: number - decrement?: number - multiply?: number - divide?: number -} - -export type LocationCreateNestedOneWithoutNodesInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.LocationCreateOrConnectWithoutNodesInput - connect?: Prisma.LocationWhereUniqueInput -} - -export type LocationUpdateOneRequiredWithoutNodesNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.LocationCreateOrConnectWithoutNodesInput - upsert?: Prisma.LocationUpsertWithoutNodesInput - connect?: Prisma.LocationWhereUniqueInput - update?: Prisma.XOR, Prisma.LocationUncheckedUpdateWithoutNodesInput> -} - -export type LocationCreateWithoutNodesInput = { - id: number - shortCode: string - description?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type LocationUncheckedCreateWithoutNodesInput = { - id: number - shortCode: string - description?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type LocationCreateOrConnectWithoutNodesInput = { - where: Prisma.LocationWhereUniqueInput - create: Prisma.XOR -} - -export type LocationUpsertWithoutNodesInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.LocationWhereInput -} - -export type LocationUpdateToOneWithWhereWithoutNodesInput = { - where?: Prisma.LocationWhereInput - data: Prisma.XOR -} - -export type LocationUpdateWithoutNodesInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - shortCode?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type LocationUncheckedUpdateWithoutNodesInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - shortCode?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - -/** - * Count Type LocationCountOutputType - */ - -export type LocationCountOutputType = { - nodes: number -} - -export type LocationCountOutputTypeSelect = { - nodes?: boolean | LocationCountOutputTypeCountNodesArgs -} - -/** - * LocationCountOutputType without action - */ -export type LocationCountOutputTypeDefaultArgs = { - /** - * Select specific fields to fetch from the LocationCountOutputType - */ - select?: Prisma.LocationCountOutputTypeSelect | null -} - -/** - * LocationCountOutputType without action - */ -export type LocationCountOutputTypeCountNodesArgs = { - where?: Prisma.NodeWhereInput -} - - -export type LocationSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - shortCode?: boolean - description?: boolean - createdAt?: boolean - updatedAt?: boolean - nodes?: boolean | Prisma.Location$nodesArgs - _count?: boolean | Prisma.LocationCountOutputTypeDefaultArgs -}, ExtArgs["result"]["location"]> - -export type LocationSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - shortCode?: boolean - description?: boolean - createdAt?: boolean - updatedAt?: boolean -}, ExtArgs["result"]["location"]> - -export type LocationSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - shortCode?: boolean - description?: boolean - createdAt?: boolean - updatedAt?: boolean -}, ExtArgs["result"]["location"]> - -export type LocationSelectScalar = { - id?: boolean - shortCode?: boolean - description?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type LocationOmit = runtime.Types.Extensions.GetOmit<"id" | "shortCode" | "description" | "createdAt" | "updatedAt", ExtArgs["result"]["location"]> -export type LocationInclude = { - nodes?: boolean | Prisma.Location$nodesArgs - _count?: boolean | Prisma.LocationCountOutputTypeDefaultArgs -} -export type LocationIncludeCreateManyAndReturn = {} -export type LocationIncludeUpdateManyAndReturn = {} - -export type $LocationPayload = { - name: "Location" - objects: { - nodes: Prisma.$NodePayload[] - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: number - shortCode: string - description: string | null - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["location"]> - composites: {} -} - -export type LocationGetPayload = runtime.Types.Result.GetResult - -export type LocationCountArgs = - Omit & { - select?: LocationCountAggregateInputType | true - } - -export interface LocationDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['Location'], meta: { name: 'Location' } } - /** - * Find zero or one Location that matches the filter. - * @param {LocationFindUniqueArgs} args - Arguments to find a Location - * @example - * // Get one Location - * const location = await prisma.location.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__LocationClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one Location that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {LocationFindUniqueOrThrowArgs} args - Arguments to find a Location - * @example - * // Get one Location - * const location = await prisma.location.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__LocationClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Location that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {LocationFindFirstArgs} args - Arguments to find a Location - * @example - * // Get one Location - * const location = await prisma.location.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__LocationClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Location that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {LocationFindFirstOrThrowArgs} args - Arguments to find a Location - * @example - * // Get one Location - * const location = await prisma.location.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__LocationClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more Locations that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {LocationFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all Locations - * const locations = await prisma.location.findMany() - * - * // Get first 10 Locations - * const locations = await prisma.location.findMany({ take: 10 }) - * - * // Only select the `id` - * const locationWithIdOnly = await prisma.location.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a Location. - * @param {LocationCreateArgs} args - Arguments to create a Location. - * @example - * // Create one Location - * const Location = await prisma.location.create({ - * data: { - * // ... data to create a Location - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__LocationClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many Locations. - * @param {LocationCreateManyArgs} args - Arguments to create many Locations. - * @example - * // Create many Locations - * const location = await prisma.location.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many Locations and returns the data saved in the database. - * @param {LocationCreateManyAndReturnArgs} args - Arguments to create many Locations. - * @example - * // Create many Locations - * const location = await prisma.location.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many Locations and only return the `id` - * const locationWithIdOnly = await prisma.location.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a Location. - * @param {LocationDeleteArgs} args - Arguments to delete one Location. - * @example - * // Delete one Location - * const Location = await prisma.location.delete({ - * where: { - * // ... filter to delete one Location - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__LocationClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one Location. - * @param {LocationUpdateArgs} args - Arguments to update one Location. - * @example - * // Update one Location - * const location = await prisma.location.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__LocationClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more Locations. - * @param {LocationDeleteManyArgs} args - Arguments to filter Locations to delete. - * @example - * // Delete a few Locations - * const { count } = await prisma.location.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Locations. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {LocationUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many Locations - * const location = await prisma.location.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Locations and returns the data updated in the database. - * @param {LocationUpdateManyAndReturnArgs} args - Arguments to update many Locations. - * @example - * // Update many Locations - * const location = await prisma.location.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more Locations and only return the `id` - * const locationWithIdOnly = await prisma.location.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one Location. - * @param {LocationUpsertArgs} args - Arguments to update or create a Location. - * @example - * // Update or create a Location - * const location = await prisma.location.upsert({ - * create: { - * // ... data to create a Location - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the Location we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__LocationClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of Locations. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {LocationCountArgs} args - Arguments to filter Locations to count. - * @example - * // Count the number of Locations - * const count = await prisma.location.count({ - * where: { - * // ... the filter for the Locations we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a Location. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {LocationAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by Location. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {LocationGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends LocationGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: LocationGroupByArgs['orderBy'] } - : { orderBy?: LocationGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetLocationGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the Location model - */ -readonly fields: LocationFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for Location. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__LocationClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - nodes = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the Location model - */ -export interface LocationFieldRefs { - readonly id: Prisma.FieldRef<"Location", 'Int'> - readonly shortCode: Prisma.FieldRef<"Location", 'String'> - readonly description: Prisma.FieldRef<"Location", 'String'> - readonly createdAt: Prisma.FieldRef<"Location", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"Location", 'DateTime'> -} - - -// Custom InputTypes -/** - * Location findUnique - */ -export type LocationFindUniqueArgs = { - /** - * Select specific fields to fetch from the Location - */ - select?: Prisma.LocationSelect | null - /** - * Omit specific fields from the Location - */ - omit?: Prisma.LocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.LocationInclude | null - /** - * Filter, which Location to fetch. - */ - where: Prisma.LocationWhereUniqueInput -} - -/** - * Location findUniqueOrThrow - */ -export type LocationFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the Location - */ - select?: Prisma.LocationSelect | null - /** - * Omit specific fields from the Location - */ - omit?: Prisma.LocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.LocationInclude | null - /** - * Filter, which Location to fetch. - */ - where: Prisma.LocationWhereUniqueInput -} - -/** - * Location findFirst - */ -export type LocationFindFirstArgs = { - /** - * Select specific fields to fetch from the Location - */ - select?: Prisma.LocationSelect | null - /** - * Omit specific fields from the Location - */ - omit?: Prisma.LocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.LocationInclude | null - /** - * Filter, which Location to fetch. - */ - where?: Prisma.LocationWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Locations to fetch. - */ - orderBy?: Prisma.LocationOrderByWithRelationInput | Prisma.LocationOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Locations. - */ - cursor?: Prisma.LocationWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Locations from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Locations. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Locations. - */ - distinct?: Prisma.LocationScalarFieldEnum | Prisma.LocationScalarFieldEnum[] -} - -/** - * Location findFirstOrThrow - */ -export type LocationFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the Location - */ - select?: Prisma.LocationSelect | null - /** - * Omit specific fields from the Location - */ - omit?: Prisma.LocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.LocationInclude | null - /** - * Filter, which Location to fetch. - */ - where?: Prisma.LocationWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Locations to fetch. - */ - orderBy?: Prisma.LocationOrderByWithRelationInput | Prisma.LocationOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Locations. - */ - cursor?: Prisma.LocationWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Locations from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Locations. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Locations. - */ - distinct?: Prisma.LocationScalarFieldEnum | Prisma.LocationScalarFieldEnum[] -} - -/** - * Location findMany - */ -export type LocationFindManyArgs = { - /** - * Select specific fields to fetch from the Location - */ - select?: Prisma.LocationSelect | null - /** - * Omit specific fields from the Location - */ - omit?: Prisma.LocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.LocationInclude | null - /** - * Filter, which Locations to fetch. - */ - where?: Prisma.LocationWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Locations to fetch. - */ - orderBy?: Prisma.LocationOrderByWithRelationInput | Prisma.LocationOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing Locations. - */ - cursor?: Prisma.LocationWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Locations from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Locations. - */ - skip?: number - distinct?: Prisma.LocationScalarFieldEnum | Prisma.LocationScalarFieldEnum[] -} - -/** - * Location create - */ -export type LocationCreateArgs = { - /** - * Select specific fields to fetch from the Location - */ - select?: Prisma.LocationSelect | null - /** - * Omit specific fields from the Location - */ - omit?: Prisma.LocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.LocationInclude | null - /** - * The data needed to create a Location. - */ - data: Prisma.XOR -} - -/** - * Location createMany - */ -export type LocationCreateManyArgs = { - /** - * The data used to create many Locations. - */ - data: Prisma.LocationCreateManyInput | Prisma.LocationCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Location createManyAndReturn - */ -export type LocationCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Location - */ - select?: Prisma.LocationSelectCreateManyAndReturn | null - /** - * Omit specific fields from the Location - */ - omit?: Prisma.LocationOmit | null - /** - * The data used to create many Locations. - */ - data: Prisma.LocationCreateManyInput | Prisma.LocationCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Location update - */ -export type LocationUpdateArgs = { - /** - * Select specific fields to fetch from the Location - */ - select?: Prisma.LocationSelect | null - /** - * Omit specific fields from the Location - */ - omit?: Prisma.LocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.LocationInclude | null - /** - * The data needed to update a Location. - */ - data: Prisma.XOR - /** - * Choose, which Location to update. - */ - where: Prisma.LocationWhereUniqueInput -} - -/** - * Location updateMany - */ -export type LocationUpdateManyArgs = { - /** - * The data used to update Locations. - */ - data: Prisma.XOR - /** - * Filter which Locations to update - */ - where?: Prisma.LocationWhereInput - /** - * Limit how many Locations to update. - */ - limit?: number -} - -/** - * Location updateManyAndReturn - */ -export type LocationUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Location - */ - select?: Prisma.LocationSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the Location - */ - omit?: Prisma.LocationOmit | null - /** - * The data used to update Locations. - */ - data: Prisma.XOR - /** - * Filter which Locations to update - */ - where?: Prisma.LocationWhereInput - /** - * Limit how many Locations to update. - */ - limit?: number -} - -/** - * Location upsert - */ -export type LocationUpsertArgs = { - /** - * Select specific fields to fetch from the Location - */ - select?: Prisma.LocationSelect | null - /** - * Omit specific fields from the Location - */ - omit?: Prisma.LocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.LocationInclude | null - /** - * The filter to search for the Location to update in case it exists. - */ - where: Prisma.LocationWhereUniqueInput - /** - * In case the Location found by the `where` argument doesn't exist, create a new Location with this data. - */ - create: Prisma.XOR - /** - * In case the Location was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * Location delete - */ -export type LocationDeleteArgs = { - /** - * Select specific fields to fetch from the Location - */ - select?: Prisma.LocationSelect | null - /** - * Omit specific fields from the Location - */ - omit?: Prisma.LocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.LocationInclude | null - /** - * Filter which Location to delete. - */ - where: Prisma.LocationWhereUniqueInput -} - -/** - * Location deleteMany - */ -export type LocationDeleteManyArgs = { - /** - * Filter which Locations to delete - */ - where?: Prisma.LocationWhereInput - /** - * Limit how many Locations to delete. - */ - limit?: number -} - -/** - * Location.nodes - */ -export type Location$nodesArgs = { - /** - * Select specific fields to fetch from the Node - */ - select?: Prisma.NodeSelect | null - /** - * Omit specific fields from the Node - */ - omit?: Prisma.NodeOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NodeInclude | null - where?: Prisma.NodeWhereInput - orderBy?: Prisma.NodeOrderByWithRelationInput | Prisma.NodeOrderByWithRelationInput[] - cursor?: Prisma.NodeWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.NodeScalarFieldEnum | Prisma.NodeScalarFieldEnum[] -} - -/** - * Location without action - */ -export type LocationDefaultArgs = { - /** - * Select specific fields to fetch from the Location - */ - select?: Prisma.LocationSelect | null - /** - * Omit specific fields from the Location - */ - omit?: Prisma.LocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.LocationInclude | null -} diff --git a/prisma/generated/prisma/models/Nest.ts b/prisma/generated/prisma/models/Nest.ts deleted file mode 100644 index c109a6d..0000000 --- a/prisma/generated/prisma/models/Nest.ts +++ /dev/null @@ -1,1430 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `Nest` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model Nest - * - */ -export type NestModel = runtime.Types.Result.DefaultSelection - -export type AggregateNest = { - _count: NestCountAggregateOutputType | null - _avg: NestAvgAggregateOutputType | null - _sum: NestSumAggregateOutputType | null - _min: NestMinAggregateOutputType | null - _max: NestMaxAggregateOutputType | null -} - -export type NestAvgAggregateOutputType = { - id: number | null -} - -export type NestSumAggregateOutputType = { - id: number | null -} - -export type NestMinAggregateOutputType = { - id: number | null - uuid: string | null - name: string | null - description: string | null - author: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type NestMaxAggregateOutputType = { - id: number | null - uuid: string | null - name: string | null - description: string | null - author: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type NestCountAggregateOutputType = { - id: number - uuid: number - name: number - description: number - author: number - createdAt: number - updatedAt: number - _all: number -} - - -export type NestAvgAggregateInputType = { - id?: true -} - -export type NestSumAggregateInputType = { - id?: true -} - -export type NestMinAggregateInputType = { - id?: true - uuid?: true - name?: true - description?: true - author?: true - createdAt?: true - updatedAt?: true -} - -export type NestMaxAggregateInputType = { - id?: true - uuid?: true - name?: true - description?: true - author?: true - createdAt?: true - updatedAt?: true -} - -export type NestCountAggregateInputType = { - id?: true - uuid?: true - name?: true - description?: true - author?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type NestAggregateArgs = { - /** - * Filter which Nest to aggregate. - */ - where?: Prisma.NestWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Nests to fetch. - */ - orderBy?: Prisma.NestOrderByWithRelationInput | Prisma.NestOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.NestWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Nests from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Nests. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned Nests - **/ - _count?: true | NestCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: NestAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: NestSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: NestMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: NestMaxAggregateInputType -} - -export type GetNestAggregateType = { - [P in keyof T & keyof AggregateNest]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type NestGroupByArgs = { - where?: Prisma.NestWhereInput - orderBy?: Prisma.NestOrderByWithAggregationInput | Prisma.NestOrderByWithAggregationInput[] - by: Prisma.NestScalarFieldEnum[] | Prisma.NestScalarFieldEnum - having?: Prisma.NestScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: NestCountAggregateInputType | true - _avg?: NestAvgAggregateInputType - _sum?: NestSumAggregateInputType - _min?: NestMinAggregateInputType - _max?: NestMaxAggregateInputType -} - -export type NestGroupByOutputType = { - id: number - uuid: string - name: string - description: string | null - author: string | null - createdAt: Date - updatedAt: Date - _count: NestCountAggregateOutputType | null - _avg: NestAvgAggregateOutputType | null - _sum: NestSumAggregateOutputType | null - _min: NestMinAggregateOutputType | null - _max: NestMaxAggregateOutputType | null -} - -type GetNestGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof NestGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type NestWhereInput = { - AND?: Prisma.NestWhereInput | Prisma.NestWhereInput[] - OR?: Prisma.NestWhereInput[] - NOT?: Prisma.NestWhereInput | Prisma.NestWhereInput[] - id?: Prisma.IntFilter<"Nest"> | number - uuid?: Prisma.StringFilter<"Nest"> | string - name?: Prisma.StringFilter<"Nest"> | string - description?: Prisma.StringNullableFilter<"Nest"> | string | null - author?: Prisma.StringNullableFilter<"Nest"> | string | null - createdAt?: Prisma.DateTimeFilter<"Nest"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Nest"> | Date | string - eggs?: Prisma.EggListRelationFilter -} - -export type NestOrderByWithRelationInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - author?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - eggs?: Prisma.EggOrderByRelationAggregateInput -} - -export type NestWhereUniqueInput = Prisma.AtLeast<{ - id?: number - uuid?: string - AND?: Prisma.NestWhereInput | Prisma.NestWhereInput[] - OR?: Prisma.NestWhereInput[] - NOT?: Prisma.NestWhereInput | Prisma.NestWhereInput[] - name?: Prisma.StringFilter<"Nest"> | string - description?: Prisma.StringNullableFilter<"Nest"> | string | null - author?: Prisma.StringNullableFilter<"Nest"> | string | null - createdAt?: Prisma.DateTimeFilter<"Nest"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Nest"> | Date | string - eggs?: Prisma.EggListRelationFilter -}, "id" | "uuid"> - -export type NestOrderByWithAggregationInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - author?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.NestCountOrderByAggregateInput - _avg?: Prisma.NestAvgOrderByAggregateInput - _max?: Prisma.NestMaxOrderByAggregateInput - _min?: Prisma.NestMinOrderByAggregateInput - _sum?: Prisma.NestSumOrderByAggregateInput -} - -export type NestScalarWhereWithAggregatesInput = { - AND?: Prisma.NestScalarWhereWithAggregatesInput | Prisma.NestScalarWhereWithAggregatesInput[] - OR?: Prisma.NestScalarWhereWithAggregatesInput[] - NOT?: Prisma.NestScalarWhereWithAggregatesInput | Prisma.NestScalarWhereWithAggregatesInput[] - id?: Prisma.IntWithAggregatesFilter<"Nest"> | number - uuid?: Prisma.StringWithAggregatesFilter<"Nest"> | string - name?: Prisma.StringWithAggregatesFilter<"Nest"> | string - description?: Prisma.StringNullableWithAggregatesFilter<"Nest"> | string | null - author?: Prisma.StringNullableWithAggregatesFilter<"Nest"> | string | null - createdAt?: Prisma.DateTimeWithAggregatesFilter<"Nest"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Nest"> | Date | string -} - -export type NestCreateInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - createdAt?: Date | string - updatedAt?: Date | string - eggs?: Prisma.EggCreateNestedManyWithoutNestInput -} - -export type NestUncheckedCreateInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - createdAt?: Date | string - updatedAt?: Date | string - eggs?: Prisma.EggUncheckedCreateNestedManyWithoutNestInput -} - -export type NestUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - eggs?: Prisma.EggUpdateManyWithoutNestNestedInput -} - -export type NestUncheckedUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - eggs?: Prisma.EggUncheckedUpdateManyWithoutNestNestedInput -} - -export type NestCreateManyInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type NestUpdateManyMutationInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type NestUncheckedUpdateManyInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type NestCountOrderByAggregateInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - author?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type NestAvgOrderByAggregateInput = { - id?: Prisma.SortOrder -} - -export type NestMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - author?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type NestMinOrderByAggregateInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - author?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type NestSumOrderByAggregateInput = { - id?: Prisma.SortOrder -} - -export type NestScalarRelationFilter = { - is?: Prisma.NestWhereInput - isNot?: Prisma.NestWhereInput -} - -export type NestCreateNestedOneWithoutEggsInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.NestCreateOrConnectWithoutEggsInput - connect?: Prisma.NestWhereUniqueInput -} - -export type NestUpdateOneRequiredWithoutEggsNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.NestCreateOrConnectWithoutEggsInput - upsert?: Prisma.NestUpsertWithoutEggsInput - connect?: Prisma.NestWhereUniqueInput - update?: Prisma.XOR, Prisma.NestUncheckedUpdateWithoutEggsInput> -} - -export type NestCreateWithoutEggsInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type NestUncheckedCreateWithoutEggsInput = { - id: number - uuid: string - name: string - description?: string | null - author?: string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type NestCreateOrConnectWithoutEggsInput = { - where: Prisma.NestWhereUniqueInput - create: Prisma.XOR -} - -export type NestUpsertWithoutEggsInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.NestWhereInput -} - -export type NestUpdateToOneWithWhereWithoutEggsInput = { - where?: Prisma.NestWhereInput - data: Prisma.XOR -} - -export type NestUpdateWithoutEggsInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type NestUncheckedUpdateWithoutEggsInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - author?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - -/** - * Count Type NestCountOutputType - */ - -export type NestCountOutputType = { - eggs: number -} - -export type NestCountOutputTypeSelect = { - eggs?: boolean | NestCountOutputTypeCountEggsArgs -} - -/** - * NestCountOutputType without action - */ -export type NestCountOutputTypeDefaultArgs = { - /** - * Select specific fields to fetch from the NestCountOutputType - */ - select?: Prisma.NestCountOutputTypeSelect | null -} - -/** - * NestCountOutputType without action - */ -export type NestCountOutputTypeCountEggsArgs = { - where?: Prisma.EggWhereInput -} - - -export type NestSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - uuid?: boolean - name?: boolean - description?: boolean - author?: boolean - createdAt?: boolean - updatedAt?: boolean - eggs?: boolean | Prisma.Nest$eggsArgs - _count?: boolean | Prisma.NestCountOutputTypeDefaultArgs -}, ExtArgs["result"]["nest"]> - -export type NestSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - uuid?: boolean - name?: boolean - description?: boolean - author?: boolean - createdAt?: boolean - updatedAt?: boolean -}, ExtArgs["result"]["nest"]> - -export type NestSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - uuid?: boolean - name?: boolean - description?: boolean - author?: boolean - createdAt?: boolean - updatedAt?: boolean -}, ExtArgs["result"]["nest"]> - -export type NestSelectScalar = { - id?: boolean - uuid?: boolean - name?: boolean - description?: boolean - author?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type NestOmit = runtime.Types.Extensions.GetOmit<"id" | "uuid" | "name" | "description" | "author" | "createdAt" | "updatedAt", ExtArgs["result"]["nest"]> -export type NestInclude = { - eggs?: boolean | Prisma.Nest$eggsArgs - _count?: boolean | Prisma.NestCountOutputTypeDefaultArgs -} -export type NestIncludeCreateManyAndReturn = {} -export type NestIncludeUpdateManyAndReturn = {} - -export type $NestPayload = { - name: "Nest" - objects: { - eggs: Prisma.$EggPayload[] - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: number - uuid: string - name: string - description: string | null - author: string | null - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["nest"]> - composites: {} -} - -export type NestGetPayload = runtime.Types.Result.GetResult - -export type NestCountArgs = - Omit & { - select?: NestCountAggregateInputType | true - } - -export interface NestDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['Nest'], meta: { name: 'Nest' } } - /** - * Find zero or one Nest that matches the filter. - * @param {NestFindUniqueArgs} args - Arguments to find a Nest - * @example - * // Get one Nest - * const nest = await prisma.nest.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__NestClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one Nest that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {NestFindUniqueOrThrowArgs} args - Arguments to find a Nest - * @example - * // Get one Nest - * const nest = await prisma.nest.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__NestClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Nest that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NestFindFirstArgs} args - Arguments to find a Nest - * @example - * // Get one Nest - * const nest = await prisma.nest.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__NestClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Nest that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NestFindFirstOrThrowArgs} args - Arguments to find a Nest - * @example - * // Get one Nest - * const nest = await prisma.nest.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__NestClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more Nests that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NestFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all Nests - * const nests = await prisma.nest.findMany() - * - * // Get first 10 Nests - * const nests = await prisma.nest.findMany({ take: 10 }) - * - * // Only select the `id` - * const nestWithIdOnly = await prisma.nest.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a Nest. - * @param {NestCreateArgs} args - Arguments to create a Nest. - * @example - * // Create one Nest - * const Nest = await prisma.nest.create({ - * data: { - * // ... data to create a Nest - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__NestClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many Nests. - * @param {NestCreateManyArgs} args - Arguments to create many Nests. - * @example - * // Create many Nests - * const nest = await prisma.nest.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many Nests and returns the data saved in the database. - * @param {NestCreateManyAndReturnArgs} args - Arguments to create many Nests. - * @example - * // Create many Nests - * const nest = await prisma.nest.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many Nests and only return the `id` - * const nestWithIdOnly = await prisma.nest.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a Nest. - * @param {NestDeleteArgs} args - Arguments to delete one Nest. - * @example - * // Delete one Nest - * const Nest = await prisma.nest.delete({ - * where: { - * // ... filter to delete one Nest - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__NestClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one Nest. - * @param {NestUpdateArgs} args - Arguments to update one Nest. - * @example - * // Update one Nest - * const nest = await prisma.nest.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__NestClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more Nests. - * @param {NestDeleteManyArgs} args - Arguments to filter Nests to delete. - * @example - * // Delete a few Nests - * const { count } = await prisma.nest.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Nests. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NestUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many Nests - * const nest = await prisma.nest.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Nests and returns the data updated in the database. - * @param {NestUpdateManyAndReturnArgs} args - Arguments to update many Nests. - * @example - * // Update many Nests - * const nest = await prisma.nest.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more Nests and only return the `id` - * const nestWithIdOnly = await prisma.nest.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one Nest. - * @param {NestUpsertArgs} args - Arguments to update or create a Nest. - * @example - * // Update or create a Nest - * const nest = await prisma.nest.upsert({ - * create: { - * // ... data to create a Nest - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the Nest we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__NestClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of Nests. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NestCountArgs} args - Arguments to filter Nests to count. - * @example - * // Count the number of Nests - * const count = await prisma.nest.count({ - * where: { - * // ... the filter for the Nests we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a Nest. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NestAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by Nest. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NestGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends NestGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: NestGroupByArgs['orderBy'] } - : { orderBy?: NestGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetNestGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the Nest model - */ -readonly fields: NestFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for Nest. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__NestClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - eggs = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the Nest model - */ -export interface NestFieldRefs { - readonly id: Prisma.FieldRef<"Nest", 'Int'> - readonly uuid: Prisma.FieldRef<"Nest", 'String'> - readonly name: Prisma.FieldRef<"Nest", 'String'> - readonly description: Prisma.FieldRef<"Nest", 'String'> - readonly author: Prisma.FieldRef<"Nest", 'String'> - readonly createdAt: Prisma.FieldRef<"Nest", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"Nest", 'DateTime'> -} - - -// Custom InputTypes -/** - * Nest findUnique - */ -export type NestFindUniqueArgs = { - /** - * Select specific fields to fetch from the Nest - */ - select?: Prisma.NestSelect | null - /** - * Omit specific fields from the Nest - */ - omit?: Prisma.NestOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NestInclude | null - /** - * Filter, which Nest to fetch. - */ - where: Prisma.NestWhereUniqueInput -} - -/** - * Nest findUniqueOrThrow - */ -export type NestFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the Nest - */ - select?: Prisma.NestSelect | null - /** - * Omit specific fields from the Nest - */ - omit?: Prisma.NestOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NestInclude | null - /** - * Filter, which Nest to fetch. - */ - where: Prisma.NestWhereUniqueInput -} - -/** - * Nest findFirst - */ -export type NestFindFirstArgs = { - /** - * Select specific fields to fetch from the Nest - */ - select?: Prisma.NestSelect | null - /** - * Omit specific fields from the Nest - */ - omit?: Prisma.NestOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NestInclude | null - /** - * Filter, which Nest to fetch. - */ - where?: Prisma.NestWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Nests to fetch. - */ - orderBy?: Prisma.NestOrderByWithRelationInput | Prisma.NestOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Nests. - */ - cursor?: Prisma.NestWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Nests from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Nests. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Nests. - */ - distinct?: Prisma.NestScalarFieldEnum | Prisma.NestScalarFieldEnum[] -} - -/** - * Nest findFirstOrThrow - */ -export type NestFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the Nest - */ - select?: Prisma.NestSelect | null - /** - * Omit specific fields from the Nest - */ - omit?: Prisma.NestOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NestInclude | null - /** - * Filter, which Nest to fetch. - */ - where?: Prisma.NestWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Nests to fetch. - */ - orderBy?: Prisma.NestOrderByWithRelationInput | Prisma.NestOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Nests. - */ - cursor?: Prisma.NestWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Nests from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Nests. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Nests. - */ - distinct?: Prisma.NestScalarFieldEnum | Prisma.NestScalarFieldEnum[] -} - -/** - * Nest findMany - */ -export type NestFindManyArgs = { - /** - * Select specific fields to fetch from the Nest - */ - select?: Prisma.NestSelect | null - /** - * Omit specific fields from the Nest - */ - omit?: Prisma.NestOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NestInclude | null - /** - * Filter, which Nests to fetch. - */ - where?: Prisma.NestWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Nests to fetch. - */ - orderBy?: Prisma.NestOrderByWithRelationInput | Prisma.NestOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing Nests. - */ - cursor?: Prisma.NestWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Nests from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Nests. - */ - skip?: number - distinct?: Prisma.NestScalarFieldEnum | Prisma.NestScalarFieldEnum[] -} - -/** - * Nest create - */ -export type NestCreateArgs = { - /** - * Select specific fields to fetch from the Nest - */ - select?: Prisma.NestSelect | null - /** - * Omit specific fields from the Nest - */ - omit?: Prisma.NestOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NestInclude | null - /** - * The data needed to create a Nest. - */ - data: Prisma.XOR -} - -/** - * Nest createMany - */ -export type NestCreateManyArgs = { - /** - * The data used to create many Nests. - */ - data: Prisma.NestCreateManyInput | Prisma.NestCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Nest createManyAndReturn - */ -export type NestCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Nest - */ - select?: Prisma.NestSelectCreateManyAndReturn | null - /** - * Omit specific fields from the Nest - */ - omit?: Prisma.NestOmit | null - /** - * The data used to create many Nests. - */ - data: Prisma.NestCreateManyInput | Prisma.NestCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Nest update - */ -export type NestUpdateArgs = { - /** - * Select specific fields to fetch from the Nest - */ - select?: Prisma.NestSelect | null - /** - * Omit specific fields from the Nest - */ - omit?: Prisma.NestOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NestInclude | null - /** - * The data needed to update a Nest. - */ - data: Prisma.XOR - /** - * Choose, which Nest to update. - */ - where: Prisma.NestWhereUniqueInput -} - -/** - * Nest updateMany - */ -export type NestUpdateManyArgs = { - /** - * The data used to update Nests. - */ - data: Prisma.XOR - /** - * Filter which Nests to update - */ - where?: Prisma.NestWhereInput - /** - * Limit how many Nests to update. - */ - limit?: number -} - -/** - * Nest updateManyAndReturn - */ -export type NestUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Nest - */ - select?: Prisma.NestSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the Nest - */ - omit?: Prisma.NestOmit | null - /** - * The data used to update Nests. - */ - data: Prisma.XOR - /** - * Filter which Nests to update - */ - where?: Prisma.NestWhereInput - /** - * Limit how many Nests to update. - */ - limit?: number -} - -/** - * Nest upsert - */ -export type NestUpsertArgs = { - /** - * Select specific fields to fetch from the Nest - */ - select?: Prisma.NestSelect | null - /** - * Omit specific fields from the Nest - */ - omit?: Prisma.NestOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NestInclude | null - /** - * The filter to search for the Nest to update in case it exists. - */ - where: Prisma.NestWhereUniqueInput - /** - * In case the Nest found by the `where` argument doesn't exist, create a new Nest with this data. - */ - create: Prisma.XOR - /** - * In case the Nest was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * Nest delete - */ -export type NestDeleteArgs = { - /** - * Select specific fields to fetch from the Nest - */ - select?: Prisma.NestSelect | null - /** - * Omit specific fields from the Nest - */ - omit?: Prisma.NestOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NestInclude | null - /** - * Filter which Nest to delete. - */ - where: Prisma.NestWhereUniqueInput -} - -/** - * Nest deleteMany - */ -export type NestDeleteManyArgs = { - /** - * Filter which Nests to delete - */ - where?: Prisma.NestWhereInput - /** - * Limit how many Nests to delete. - */ - limit?: number -} - -/** - * Nest.eggs - */ -export type Nest$eggsArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelect | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggInclude | null - where?: Prisma.EggWhereInput - orderBy?: Prisma.EggOrderByWithRelationInput | Prisma.EggOrderByWithRelationInput[] - cursor?: Prisma.EggWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.EggScalarFieldEnum | Prisma.EggScalarFieldEnum[] -} - -/** - * Nest without action - */ -export type NestDefaultArgs = { - /** - * Select specific fields to fetch from the Nest - */ - select?: Prisma.NestSelect | null - /** - * Omit specific fields from the Nest - */ - omit?: Prisma.NestOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NestInclude | null -} diff --git a/prisma/generated/prisma/models/Node.ts b/prisma/generated/prisma/models/Node.ts deleted file mode 100644 index 2304690..0000000 --- a/prisma/generated/prisma/models/Node.ts +++ /dev/null @@ -1,2334 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `Node` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model Node - * - */ -export type NodeModel = runtime.Types.Result.DefaultSelection - -export type AggregateNode = { - _count: NodeCountAggregateOutputType | null - _avg: NodeAvgAggregateOutputType | null - _sum: NodeSumAggregateOutputType | null - _min: NodeMinAggregateOutputType | null - _max: NodeMaxAggregateOutputType | null -} - -export type NodeAvgAggregateOutputType = { - id: number | null - memory: number | null - memoryOverallocate: number | null - disk: number | null - diskOverallocate: number | null - daemonListenPort: number | null - daemonSftpPort: number | null - locationId: number | null -} - -export type NodeSumAggregateOutputType = { - id: number | null - memory: bigint | null - memoryOverallocate: number | null - disk: bigint | null - diskOverallocate: number | null - daemonListenPort: number | null - daemonSftpPort: number | null - locationId: number | null -} - -export type NodeMinAggregateOutputType = { - id: number | null - uuid: string | null - name: string | null - description: string | null - fqdn: string | null - scheme: string | null - behindProxy: boolean | null - panelType: string | null - memory: bigint | null - memoryOverallocate: number | null - disk: bigint | null - diskOverallocate: number | null - isPublic: boolean | null - isMaintenanceMode: boolean | null - daemonListenPort: number | null - daemonSftpPort: number | null - daemonBase: string | null - locationId: number | null - createdAt: Date | null - updatedAt: Date | null -} - -export type NodeMaxAggregateOutputType = { - id: number | null - uuid: string | null - name: string | null - description: string | null - fqdn: string | null - scheme: string | null - behindProxy: boolean | null - panelType: string | null - memory: bigint | null - memoryOverallocate: number | null - disk: bigint | null - diskOverallocate: number | null - isPublic: boolean | null - isMaintenanceMode: boolean | null - daemonListenPort: number | null - daemonSftpPort: number | null - daemonBase: string | null - locationId: number | null - createdAt: Date | null - updatedAt: Date | null -} - -export type NodeCountAggregateOutputType = { - id: number - uuid: number - name: number - description: number - fqdn: number - scheme: number - behindProxy: number - panelType: number - memory: number - memoryOverallocate: number - disk: number - diskOverallocate: number - isPublic: number - isMaintenanceMode: number - daemonListenPort: number - daemonSftpPort: number - daemonBase: number - locationId: number - createdAt: number - updatedAt: number - _all: number -} - - -export type NodeAvgAggregateInputType = { - id?: true - memory?: true - memoryOverallocate?: true - disk?: true - diskOverallocate?: true - daemonListenPort?: true - daemonSftpPort?: true - locationId?: true -} - -export type NodeSumAggregateInputType = { - id?: true - memory?: true - memoryOverallocate?: true - disk?: true - diskOverallocate?: true - daemonListenPort?: true - daemonSftpPort?: true - locationId?: true -} - -export type NodeMinAggregateInputType = { - id?: true - uuid?: true - name?: true - description?: true - fqdn?: true - scheme?: true - behindProxy?: true - panelType?: true - memory?: true - memoryOverallocate?: true - disk?: true - diskOverallocate?: true - isPublic?: true - isMaintenanceMode?: true - daemonListenPort?: true - daemonSftpPort?: true - daemonBase?: true - locationId?: true - createdAt?: true - updatedAt?: true -} - -export type NodeMaxAggregateInputType = { - id?: true - uuid?: true - name?: true - description?: true - fqdn?: true - scheme?: true - behindProxy?: true - panelType?: true - memory?: true - memoryOverallocate?: true - disk?: true - diskOverallocate?: true - isPublic?: true - isMaintenanceMode?: true - daemonListenPort?: true - daemonSftpPort?: true - daemonBase?: true - locationId?: true - createdAt?: true - updatedAt?: true -} - -export type NodeCountAggregateInputType = { - id?: true - uuid?: true - name?: true - description?: true - fqdn?: true - scheme?: true - behindProxy?: true - panelType?: true - memory?: true - memoryOverallocate?: true - disk?: true - diskOverallocate?: true - isPublic?: true - isMaintenanceMode?: true - daemonListenPort?: true - daemonSftpPort?: true - daemonBase?: true - locationId?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type NodeAggregateArgs = { - /** - * Filter which Node to aggregate. - */ - where?: Prisma.NodeWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Nodes to fetch. - */ - orderBy?: Prisma.NodeOrderByWithRelationInput | Prisma.NodeOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.NodeWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Nodes from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Nodes. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned Nodes - **/ - _count?: true | NodeCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: NodeAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: NodeSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: NodeMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: NodeMaxAggregateInputType -} - -export type GetNodeAggregateType = { - [P in keyof T & keyof AggregateNode]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type NodeGroupByArgs = { - where?: Prisma.NodeWhereInput - orderBy?: Prisma.NodeOrderByWithAggregationInput | Prisma.NodeOrderByWithAggregationInput[] - by: Prisma.NodeScalarFieldEnum[] | Prisma.NodeScalarFieldEnum - having?: Prisma.NodeScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: NodeCountAggregateInputType | true - _avg?: NodeAvgAggregateInputType - _sum?: NodeSumAggregateInputType - _min?: NodeMinAggregateInputType - _max?: NodeMaxAggregateInputType -} - -export type NodeGroupByOutputType = { - id: number - uuid: string - name: string - description: string | null - fqdn: string - scheme: string - behindProxy: boolean - panelType: string - memory: bigint - memoryOverallocate: number - disk: bigint - diskOverallocate: number - isPublic: boolean - isMaintenanceMode: boolean - daemonListenPort: number - daemonSftpPort: number - daemonBase: string - locationId: number - createdAt: Date - updatedAt: Date - _count: NodeCountAggregateOutputType | null - _avg: NodeAvgAggregateOutputType | null - _sum: NodeSumAggregateOutputType | null - _min: NodeMinAggregateOutputType | null - _max: NodeMaxAggregateOutputType | null -} - -type GetNodeGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof NodeGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type NodeWhereInput = { - AND?: Prisma.NodeWhereInput | Prisma.NodeWhereInput[] - OR?: Prisma.NodeWhereInput[] - NOT?: Prisma.NodeWhereInput | Prisma.NodeWhereInput[] - id?: Prisma.IntFilter<"Node"> | number - uuid?: Prisma.StringFilter<"Node"> | string - name?: Prisma.StringFilter<"Node"> | string - description?: Prisma.StringNullableFilter<"Node"> | string | null - fqdn?: Prisma.StringFilter<"Node"> | string - scheme?: Prisma.StringFilter<"Node"> | string - behindProxy?: Prisma.BoolFilter<"Node"> | boolean - panelType?: Prisma.StringFilter<"Node"> | string - memory?: Prisma.BigIntFilter<"Node"> | bigint | number - memoryOverallocate?: Prisma.IntFilter<"Node"> | number - disk?: Prisma.BigIntFilter<"Node"> | bigint | number - diskOverallocate?: Prisma.IntFilter<"Node"> | number - isPublic?: Prisma.BoolFilter<"Node"> | boolean - isMaintenanceMode?: Prisma.BoolFilter<"Node"> | boolean - daemonListenPort?: Prisma.IntFilter<"Node"> | number - daemonSftpPort?: Prisma.IntFilter<"Node"> | number - daemonBase?: Prisma.StringFilter<"Node"> | string - locationId?: Prisma.IntFilter<"Node"> | number - createdAt?: Prisma.DateTimeFilter<"Node"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Node"> | Date | string - location?: Prisma.XOR - allocations?: Prisma.AllocationListRelationFilter - servers?: Prisma.ServerListRelationFilter -} - -export type NodeOrderByWithRelationInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - fqdn?: Prisma.SortOrder - scheme?: Prisma.SortOrder - behindProxy?: Prisma.SortOrder - panelType?: Prisma.SortOrder - memory?: Prisma.SortOrder - memoryOverallocate?: Prisma.SortOrder - disk?: Prisma.SortOrder - diskOverallocate?: Prisma.SortOrder - isPublic?: Prisma.SortOrder - isMaintenanceMode?: Prisma.SortOrder - daemonListenPort?: Prisma.SortOrder - daemonSftpPort?: Prisma.SortOrder - daemonBase?: Prisma.SortOrder - locationId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - location?: Prisma.LocationOrderByWithRelationInput - allocations?: Prisma.AllocationOrderByRelationAggregateInput - servers?: Prisma.ServerOrderByRelationAggregateInput -} - -export type NodeWhereUniqueInput = Prisma.AtLeast<{ - id?: number - uuid?: string - AND?: Prisma.NodeWhereInput | Prisma.NodeWhereInput[] - OR?: Prisma.NodeWhereInput[] - NOT?: Prisma.NodeWhereInput | Prisma.NodeWhereInput[] - name?: Prisma.StringFilter<"Node"> | string - description?: Prisma.StringNullableFilter<"Node"> | string | null - fqdn?: Prisma.StringFilter<"Node"> | string - scheme?: Prisma.StringFilter<"Node"> | string - behindProxy?: Prisma.BoolFilter<"Node"> | boolean - panelType?: Prisma.StringFilter<"Node"> | string - memory?: Prisma.BigIntFilter<"Node"> | bigint | number - memoryOverallocate?: Prisma.IntFilter<"Node"> | number - disk?: Prisma.BigIntFilter<"Node"> | bigint | number - diskOverallocate?: Prisma.IntFilter<"Node"> | number - isPublic?: Prisma.BoolFilter<"Node"> | boolean - isMaintenanceMode?: Prisma.BoolFilter<"Node"> | boolean - daemonListenPort?: Prisma.IntFilter<"Node"> | number - daemonSftpPort?: Prisma.IntFilter<"Node"> | number - daemonBase?: Prisma.StringFilter<"Node"> | string - locationId?: Prisma.IntFilter<"Node"> | number - createdAt?: Prisma.DateTimeFilter<"Node"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Node"> | Date | string - location?: Prisma.XOR - allocations?: Prisma.AllocationListRelationFilter - servers?: Prisma.ServerListRelationFilter -}, "id" | "uuid"> - -export type NodeOrderByWithAggregationInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - fqdn?: Prisma.SortOrder - scheme?: Prisma.SortOrder - behindProxy?: Prisma.SortOrder - panelType?: Prisma.SortOrder - memory?: Prisma.SortOrder - memoryOverallocate?: Prisma.SortOrder - disk?: Prisma.SortOrder - diskOverallocate?: Prisma.SortOrder - isPublic?: Prisma.SortOrder - isMaintenanceMode?: Prisma.SortOrder - daemonListenPort?: Prisma.SortOrder - daemonSftpPort?: Prisma.SortOrder - daemonBase?: Prisma.SortOrder - locationId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.NodeCountOrderByAggregateInput - _avg?: Prisma.NodeAvgOrderByAggregateInput - _max?: Prisma.NodeMaxOrderByAggregateInput - _min?: Prisma.NodeMinOrderByAggregateInput - _sum?: Prisma.NodeSumOrderByAggregateInput -} - -export type NodeScalarWhereWithAggregatesInput = { - AND?: Prisma.NodeScalarWhereWithAggregatesInput | Prisma.NodeScalarWhereWithAggregatesInput[] - OR?: Prisma.NodeScalarWhereWithAggregatesInput[] - NOT?: Prisma.NodeScalarWhereWithAggregatesInput | Prisma.NodeScalarWhereWithAggregatesInput[] - id?: Prisma.IntWithAggregatesFilter<"Node"> | number - uuid?: Prisma.StringWithAggregatesFilter<"Node"> | string - name?: Prisma.StringWithAggregatesFilter<"Node"> | string - description?: Prisma.StringNullableWithAggregatesFilter<"Node"> | string | null - fqdn?: Prisma.StringWithAggregatesFilter<"Node"> | string - scheme?: Prisma.StringWithAggregatesFilter<"Node"> | string - behindProxy?: Prisma.BoolWithAggregatesFilter<"Node"> | boolean - panelType?: Prisma.StringWithAggregatesFilter<"Node"> | string - memory?: Prisma.BigIntWithAggregatesFilter<"Node"> | bigint | number - memoryOverallocate?: Prisma.IntWithAggregatesFilter<"Node"> | number - disk?: Prisma.BigIntWithAggregatesFilter<"Node"> | bigint | number - diskOverallocate?: Prisma.IntWithAggregatesFilter<"Node"> | number - isPublic?: Prisma.BoolWithAggregatesFilter<"Node"> | boolean - isMaintenanceMode?: Prisma.BoolWithAggregatesFilter<"Node"> | boolean - daemonListenPort?: Prisma.IntWithAggregatesFilter<"Node"> | number - daemonSftpPort?: Prisma.IntWithAggregatesFilter<"Node"> | number - daemonBase?: Prisma.StringWithAggregatesFilter<"Node"> | string - locationId?: Prisma.IntWithAggregatesFilter<"Node"> | number - createdAt?: Prisma.DateTimeWithAggregatesFilter<"Node"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Node"> | Date | string -} - -export type NodeCreateInput = { - id: number - uuid: string - name: string - description?: string | null - fqdn: string - scheme?: string - behindProxy?: boolean - panelType?: string - memory: bigint | number - memoryOverallocate?: number - disk: bigint | number - diskOverallocate?: number - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: number - daemonSftpPort?: number - daemonBase?: string - createdAt?: Date | string - updatedAt?: Date | string - location: Prisma.LocationCreateNestedOneWithoutNodesInput - allocations?: Prisma.AllocationCreateNestedManyWithoutNodeInput - servers?: Prisma.ServerCreateNestedManyWithoutNodeInput -} - -export type NodeUncheckedCreateInput = { - id: number - uuid: string - name: string - description?: string | null - fqdn: string - scheme?: string - behindProxy?: boolean - panelType?: string - memory: bigint | number - memoryOverallocate?: number - disk: bigint | number - diskOverallocate?: number - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: number - daemonSftpPort?: number - daemonBase?: string - locationId: number - createdAt?: Date | string - updatedAt?: Date | string - allocations?: Prisma.AllocationUncheckedCreateNestedManyWithoutNodeInput - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutNodeInput -} - -export type NodeUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - fqdn?: Prisma.StringFieldUpdateOperationsInput | string - scheme?: Prisma.StringFieldUpdateOperationsInput | string - behindProxy?: Prisma.BoolFieldUpdateOperationsInput | boolean - panelType?: Prisma.StringFieldUpdateOperationsInput | string - memory?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - memoryOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - disk?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - diskOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - isPublic?: Prisma.BoolFieldUpdateOperationsInput | boolean - isMaintenanceMode?: Prisma.BoolFieldUpdateOperationsInput | boolean - daemonListenPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonSftpPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonBase?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - location?: Prisma.LocationUpdateOneRequiredWithoutNodesNestedInput - allocations?: Prisma.AllocationUpdateManyWithoutNodeNestedInput - servers?: Prisma.ServerUpdateManyWithoutNodeNestedInput -} - -export type NodeUncheckedUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - fqdn?: Prisma.StringFieldUpdateOperationsInput | string - scheme?: Prisma.StringFieldUpdateOperationsInput | string - behindProxy?: Prisma.BoolFieldUpdateOperationsInput | boolean - panelType?: Prisma.StringFieldUpdateOperationsInput | string - memory?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - memoryOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - disk?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - diskOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - isPublic?: Prisma.BoolFieldUpdateOperationsInput | boolean - isMaintenanceMode?: Prisma.BoolFieldUpdateOperationsInput | boolean - daemonListenPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonSftpPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonBase?: Prisma.StringFieldUpdateOperationsInput | string - locationId?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - allocations?: Prisma.AllocationUncheckedUpdateManyWithoutNodeNestedInput - servers?: Prisma.ServerUncheckedUpdateManyWithoutNodeNestedInput -} - -export type NodeCreateManyInput = { - id: number - uuid: string - name: string - description?: string | null - fqdn: string - scheme?: string - behindProxy?: boolean - panelType?: string - memory: bigint | number - memoryOverallocate?: number - disk: bigint | number - diskOverallocate?: number - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: number - daemonSftpPort?: number - daemonBase?: string - locationId: number - createdAt?: Date | string - updatedAt?: Date | string -} - -export type NodeUpdateManyMutationInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - fqdn?: Prisma.StringFieldUpdateOperationsInput | string - scheme?: Prisma.StringFieldUpdateOperationsInput | string - behindProxy?: Prisma.BoolFieldUpdateOperationsInput | boolean - panelType?: Prisma.StringFieldUpdateOperationsInput | string - memory?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - memoryOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - disk?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - diskOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - isPublic?: Prisma.BoolFieldUpdateOperationsInput | boolean - isMaintenanceMode?: Prisma.BoolFieldUpdateOperationsInput | boolean - daemonListenPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonSftpPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonBase?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type NodeUncheckedUpdateManyInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - fqdn?: Prisma.StringFieldUpdateOperationsInput | string - scheme?: Prisma.StringFieldUpdateOperationsInput | string - behindProxy?: Prisma.BoolFieldUpdateOperationsInput | boolean - panelType?: Prisma.StringFieldUpdateOperationsInput | string - memory?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - memoryOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - disk?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - diskOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - isPublic?: Prisma.BoolFieldUpdateOperationsInput | boolean - isMaintenanceMode?: Prisma.BoolFieldUpdateOperationsInput | boolean - daemonListenPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonSftpPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonBase?: Prisma.StringFieldUpdateOperationsInput | string - locationId?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type NodeListRelationFilter = { - every?: Prisma.NodeWhereInput - some?: Prisma.NodeWhereInput - none?: Prisma.NodeWhereInput -} - -export type NodeOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type NodeCountOrderByAggregateInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - fqdn?: Prisma.SortOrder - scheme?: Prisma.SortOrder - behindProxy?: Prisma.SortOrder - panelType?: Prisma.SortOrder - memory?: Prisma.SortOrder - memoryOverallocate?: Prisma.SortOrder - disk?: Prisma.SortOrder - diskOverallocate?: Prisma.SortOrder - isPublic?: Prisma.SortOrder - isMaintenanceMode?: Prisma.SortOrder - daemonListenPort?: Prisma.SortOrder - daemonSftpPort?: Prisma.SortOrder - daemonBase?: Prisma.SortOrder - locationId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type NodeAvgOrderByAggregateInput = { - id?: Prisma.SortOrder - memory?: Prisma.SortOrder - memoryOverallocate?: Prisma.SortOrder - disk?: Prisma.SortOrder - diskOverallocate?: Prisma.SortOrder - daemonListenPort?: Prisma.SortOrder - daemonSftpPort?: Prisma.SortOrder - locationId?: Prisma.SortOrder -} - -export type NodeMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - fqdn?: Prisma.SortOrder - scheme?: Prisma.SortOrder - behindProxy?: Prisma.SortOrder - panelType?: Prisma.SortOrder - memory?: Prisma.SortOrder - memoryOverallocate?: Prisma.SortOrder - disk?: Prisma.SortOrder - diskOverallocate?: Prisma.SortOrder - isPublic?: Prisma.SortOrder - isMaintenanceMode?: Prisma.SortOrder - daemonListenPort?: Prisma.SortOrder - daemonSftpPort?: Prisma.SortOrder - daemonBase?: Prisma.SortOrder - locationId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type NodeMinOrderByAggregateInput = { - id?: Prisma.SortOrder - uuid?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - fqdn?: Prisma.SortOrder - scheme?: Prisma.SortOrder - behindProxy?: Prisma.SortOrder - panelType?: Prisma.SortOrder - memory?: Prisma.SortOrder - memoryOverallocate?: Prisma.SortOrder - disk?: Prisma.SortOrder - diskOverallocate?: Prisma.SortOrder - isPublic?: Prisma.SortOrder - isMaintenanceMode?: Prisma.SortOrder - daemonListenPort?: Prisma.SortOrder - daemonSftpPort?: Prisma.SortOrder - daemonBase?: Prisma.SortOrder - locationId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type NodeSumOrderByAggregateInput = { - id?: Prisma.SortOrder - memory?: Prisma.SortOrder - memoryOverallocate?: Prisma.SortOrder - disk?: Prisma.SortOrder - diskOverallocate?: Prisma.SortOrder - daemonListenPort?: Prisma.SortOrder - daemonSftpPort?: Prisma.SortOrder - locationId?: Prisma.SortOrder -} - -export type NodeScalarRelationFilter = { - is?: Prisma.NodeWhereInput - isNot?: Prisma.NodeWhereInput -} - -export type NodeCreateNestedManyWithoutLocationInput = { - create?: Prisma.XOR | Prisma.NodeCreateWithoutLocationInput[] | Prisma.NodeUncheckedCreateWithoutLocationInput[] - connectOrCreate?: Prisma.NodeCreateOrConnectWithoutLocationInput | Prisma.NodeCreateOrConnectWithoutLocationInput[] - createMany?: Prisma.NodeCreateManyLocationInputEnvelope - connect?: Prisma.NodeWhereUniqueInput | Prisma.NodeWhereUniqueInput[] -} - -export type NodeUncheckedCreateNestedManyWithoutLocationInput = { - create?: Prisma.XOR | Prisma.NodeCreateWithoutLocationInput[] | Prisma.NodeUncheckedCreateWithoutLocationInput[] - connectOrCreate?: Prisma.NodeCreateOrConnectWithoutLocationInput | Prisma.NodeCreateOrConnectWithoutLocationInput[] - createMany?: Prisma.NodeCreateManyLocationInputEnvelope - connect?: Prisma.NodeWhereUniqueInput | Prisma.NodeWhereUniqueInput[] -} - -export type NodeUpdateManyWithoutLocationNestedInput = { - create?: Prisma.XOR | Prisma.NodeCreateWithoutLocationInput[] | Prisma.NodeUncheckedCreateWithoutLocationInput[] - connectOrCreate?: Prisma.NodeCreateOrConnectWithoutLocationInput | Prisma.NodeCreateOrConnectWithoutLocationInput[] - upsert?: Prisma.NodeUpsertWithWhereUniqueWithoutLocationInput | Prisma.NodeUpsertWithWhereUniqueWithoutLocationInput[] - createMany?: Prisma.NodeCreateManyLocationInputEnvelope - set?: Prisma.NodeWhereUniqueInput | Prisma.NodeWhereUniqueInput[] - disconnect?: Prisma.NodeWhereUniqueInput | Prisma.NodeWhereUniqueInput[] - delete?: Prisma.NodeWhereUniqueInput | Prisma.NodeWhereUniqueInput[] - connect?: Prisma.NodeWhereUniqueInput | Prisma.NodeWhereUniqueInput[] - update?: Prisma.NodeUpdateWithWhereUniqueWithoutLocationInput | Prisma.NodeUpdateWithWhereUniqueWithoutLocationInput[] - updateMany?: Prisma.NodeUpdateManyWithWhereWithoutLocationInput | Prisma.NodeUpdateManyWithWhereWithoutLocationInput[] - deleteMany?: Prisma.NodeScalarWhereInput | Prisma.NodeScalarWhereInput[] -} - -export type NodeUncheckedUpdateManyWithoutLocationNestedInput = { - create?: Prisma.XOR | Prisma.NodeCreateWithoutLocationInput[] | Prisma.NodeUncheckedCreateWithoutLocationInput[] - connectOrCreate?: Prisma.NodeCreateOrConnectWithoutLocationInput | Prisma.NodeCreateOrConnectWithoutLocationInput[] - upsert?: Prisma.NodeUpsertWithWhereUniqueWithoutLocationInput | Prisma.NodeUpsertWithWhereUniqueWithoutLocationInput[] - createMany?: Prisma.NodeCreateManyLocationInputEnvelope - set?: Prisma.NodeWhereUniqueInput | Prisma.NodeWhereUniqueInput[] - disconnect?: Prisma.NodeWhereUniqueInput | Prisma.NodeWhereUniqueInput[] - delete?: Prisma.NodeWhereUniqueInput | Prisma.NodeWhereUniqueInput[] - connect?: Prisma.NodeWhereUniqueInput | Prisma.NodeWhereUniqueInput[] - update?: Prisma.NodeUpdateWithWhereUniqueWithoutLocationInput | Prisma.NodeUpdateWithWhereUniqueWithoutLocationInput[] - updateMany?: Prisma.NodeUpdateManyWithWhereWithoutLocationInput | Prisma.NodeUpdateManyWithWhereWithoutLocationInput[] - deleteMany?: Prisma.NodeScalarWhereInput | Prisma.NodeScalarWhereInput[] -} - -export type BigIntFieldUpdateOperationsInput = { - set?: bigint | number - increment?: bigint | number - decrement?: bigint | number - multiply?: bigint | number - divide?: bigint | number -} - -export type NodeCreateNestedOneWithoutAllocationsInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.NodeCreateOrConnectWithoutAllocationsInput - connect?: Prisma.NodeWhereUniqueInput -} - -export type NodeUpdateOneRequiredWithoutAllocationsNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.NodeCreateOrConnectWithoutAllocationsInput - upsert?: Prisma.NodeUpsertWithoutAllocationsInput - connect?: Prisma.NodeWhereUniqueInput - update?: Prisma.XOR, Prisma.NodeUncheckedUpdateWithoutAllocationsInput> -} - -export type NodeCreateNestedOneWithoutServersInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.NodeCreateOrConnectWithoutServersInput - connect?: Prisma.NodeWhereUniqueInput -} - -export type NodeUpdateOneRequiredWithoutServersNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.NodeCreateOrConnectWithoutServersInput - upsert?: Prisma.NodeUpsertWithoutServersInput - connect?: Prisma.NodeWhereUniqueInput - update?: Prisma.XOR, Prisma.NodeUncheckedUpdateWithoutServersInput> -} - -export type NodeCreateWithoutLocationInput = { - id: number - uuid: string - name: string - description?: string | null - fqdn: string - scheme?: string - behindProxy?: boolean - panelType?: string - memory: bigint | number - memoryOverallocate?: number - disk: bigint | number - diskOverallocate?: number - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: number - daemonSftpPort?: number - daemonBase?: string - createdAt?: Date | string - updatedAt?: Date | string - allocations?: Prisma.AllocationCreateNestedManyWithoutNodeInput - servers?: Prisma.ServerCreateNestedManyWithoutNodeInput -} - -export type NodeUncheckedCreateWithoutLocationInput = { - id: number - uuid: string - name: string - description?: string | null - fqdn: string - scheme?: string - behindProxy?: boolean - panelType?: string - memory: bigint | number - memoryOverallocate?: number - disk: bigint | number - diskOverallocate?: number - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: number - daemonSftpPort?: number - daemonBase?: string - createdAt?: Date | string - updatedAt?: Date | string - allocations?: Prisma.AllocationUncheckedCreateNestedManyWithoutNodeInput - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutNodeInput -} - -export type NodeCreateOrConnectWithoutLocationInput = { - where: Prisma.NodeWhereUniqueInput - create: Prisma.XOR -} - -export type NodeCreateManyLocationInputEnvelope = { - data: Prisma.NodeCreateManyLocationInput | Prisma.NodeCreateManyLocationInput[] - skipDuplicates?: boolean -} - -export type NodeUpsertWithWhereUniqueWithoutLocationInput = { - where: Prisma.NodeWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type NodeUpdateWithWhereUniqueWithoutLocationInput = { - where: Prisma.NodeWhereUniqueInput - data: Prisma.XOR -} - -export type NodeUpdateManyWithWhereWithoutLocationInput = { - where: Prisma.NodeScalarWhereInput - data: Prisma.XOR -} - -export type NodeScalarWhereInput = { - AND?: Prisma.NodeScalarWhereInput | Prisma.NodeScalarWhereInput[] - OR?: Prisma.NodeScalarWhereInput[] - NOT?: Prisma.NodeScalarWhereInput | Prisma.NodeScalarWhereInput[] - id?: Prisma.IntFilter<"Node"> | number - uuid?: Prisma.StringFilter<"Node"> | string - name?: Prisma.StringFilter<"Node"> | string - description?: Prisma.StringNullableFilter<"Node"> | string | null - fqdn?: Prisma.StringFilter<"Node"> | string - scheme?: Prisma.StringFilter<"Node"> | string - behindProxy?: Prisma.BoolFilter<"Node"> | boolean - panelType?: Prisma.StringFilter<"Node"> | string - memory?: Prisma.BigIntFilter<"Node"> | bigint | number - memoryOverallocate?: Prisma.IntFilter<"Node"> | number - disk?: Prisma.BigIntFilter<"Node"> | bigint | number - diskOverallocate?: Prisma.IntFilter<"Node"> | number - isPublic?: Prisma.BoolFilter<"Node"> | boolean - isMaintenanceMode?: Prisma.BoolFilter<"Node"> | boolean - daemonListenPort?: Prisma.IntFilter<"Node"> | number - daemonSftpPort?: Prisma.IntFilter<"Node"> | number - daemonBase?: Prisma.StringFilter<"Node"> | string - locationId?: Prisma.IntFilter<"Node"> | number - createdAt?: Prisma.DateTimeFilter<"Node"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Node"> | Date | string -} - -export type NodeCreateWithoutAllocationsInput = { - id: number - uuid: string - name: string - description?: string | null - fqdn: string - scheme?: string - behindProxy?: boolean - panelType?: string - memory: bigint | number - memoryOverallocate?: number - disk: bigint | number - diskOverallocate?: number - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: number - daemonSftpPort?: number - daemonBase?: string - createdAt?: Date | string - updatedAt?: Date | string - location: Prisma.LocationCreateNestedOneWithoutNodesInput - servers?: Prisma.ServerCreateNestedManyWithoutNodeInput -} - -export type NodeUncheckedCreateWithoutAllocationsInput = { - id: number - uuid: string - name: string - description?: string | null - fqdn: string - scheme?: string - behindProxy?: boolean - panelType?: string - memory: bigint | number - memoryOverallocate?: number - disk: bigint | number - diskOverallocate?: number - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: number - daemonSftpPort?: number - daemonBase?: string - locationId: number - createdAt?: Date | string - updatedAt?: Date | string - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutNodeInput -} - -export type NodeCreateOrConnectWithoutAllocationsInput = { - where: Prisma.NodeWhereUniqueInput - create: Prisma.XOR -} - -export type NodeUpsertWithoutAllocationsInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.NodeWhereInput -} - -export type NodeUpdateToOneWithWhereWithoutAllocationsInput = { - where?: Prisma.NodeWhereInput - data: Prisma.XOR -} - -export type NodeUpdateWithoutAllocationsInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - fqdn?: Prisma.StringFieldUpdateOperationsInput | string - scheme?: Prisma.StringFieldUpdateOperationsInput | string - behindProxy?: Prisma.BoolFieldUpdateOperationsInput | boolean - panelType?: Prisma.StringFieldUpdateOperationsInput | string - memory?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - memoryOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - disk?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - diskOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - isPublic?: Prisma.BoolFieldUpdateOperationsInput | boolean - isMaintenanceMode?: Prisma.BoolFieldUpdateOperationsInput | boolean - daemonListenPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonSftpPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonBase?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - location?: Prisma.LocationUpdateOneRequiredWithoutNodesNestedInput - servers?: Prisma.ServerUpdateManyWithoutNodeNestedInput -} - -export type NodeUncheckedUpdateWithoutAllocationsInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - fqdn?: Prisma.StringFieldUpdateOperationsInput | string - scheme?: Prisma.StringFieldUpdateOperationsInput | string - behindProxy?: Prisma.BoolFieldUpdateOperationsInput | boolean - panelType?: Prisma.StringFieldUpdateOperationsInput | string - memory?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - memoryOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - disk?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - diskOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - isPublic?: Prisma.BoolFieldUpdateOperationsInput | boolean - isMaintenanceMode?: Prisma.BoolFieldUpdateOperationsInput | boolean - daemonListenPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonSftpPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonBase?: Prisma.StringFieldUpdateOperationsInput | string - locationId?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - servers?: Prisma.ServerUncheckedUpdateManyWithoutNodeNestedInput -} - -export type NodeCreateWithoutServersInput = { - id: number - uuid: string - name: string - description?: string | null - fqdn: string - scheme?: string - behindProxy?: boolean - panelType?: string - memory: bigint | number - memoryOverallocate?: number - disk: bigint | number - diskOverallocate?: number - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: number - daemonSftpPort?: number - daemonBase?: string - createdAt?: Date | string - updatedAt?: Date | string - location: Prisma.LocationCreateNestedOneWithoutNodesInput - allocations?: Prisma.AllocationCreateNestedManyWithoutNodeInput -} - -export type NodeUncheckedCreateWithoutServersInput = { - id: number - uuid: string - name: string - description?: string | null - fqdn: string - scheme?: string - behindProxy?: boolean - panelType?: string - memory: bigint | number - memoryOverallocate?: number - disk: bigint | number - diskOverallocate?: number - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: number - daemonSftpPort?: number - daemonBase?: string - locationId: number - createdAt?: Date | string - updatedAt?: Date | string - allocations?: Prisma.AllocationUncheckedCreateNestedManyWithoutNodeInput -} - -export type NodeCreateOrConnectWithoutServersInput = { - where: Prisma.NodeWhereUniqueInput - create: Prisma.XOR -} - -export type NodeUpsertWithoutServersInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.NodeWhereInput -} - -export type NodeUpdateToOneWithWhereWithoutServersInput = { - where?: Prisma.NodeWhereInput - data: Prisma.XOR -} - -export type NodeUpdateWithoutServersInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - fqdn?: Prisma.StringFieldUpdateOperationsInput | string - scheme?: Prisma.StringFieldUpdateOperationsInput | string - behindProxy?: Prisma.BoolFieldUpdateOperationsInput | boolean - panelType?: Prisma.StringFieldUpdateOperationsInput | string - memory?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - memoryOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - disk?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - diskOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - isPublic?: Prisma.BoolFieldUpdateOperationsInput | boolean - isMaintenanceMode?: Prisma.BoolFieldUpdateOperationsInput | boolean - daemonListenPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonSftpPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonBase?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - location?: Prisma.LocationUpdateOneRequiredWithoutNodesNestedInput - allocations?: Prisma.AllocationUpdateManyWithoutNodeNestedInput -} - -export type NodeUncheckedUpdateWithoutServersInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - fqdn?: Prisma.StringFieldUpdateOperationsInput | string - scheme?: Prisma.StringFieldUpdateOperationsInput | string - behindProxy?: Prisma.BoolFieldUpdateOperationsInput | boolean - panelType?: Prisma.StringFieldUpdateOperationsInput | string - memory?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - memoryOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - disk?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - diskOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - isPublic?: Prisma.BoolFieldUpdateOperationsInput | boolean - isMaintenanceMode?: Prisma.BoolFieldUpdateOperationsInput | boolean - daemonListenPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonSftpPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonBase?: Prisma.StringFieldUpdateOperationsInput | string - locationId?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - allocations?: Prisma.AllocationUncheckedUpdateManyWithoutNodeNestedInput -} - -export type NodeCreateManyLocationInput = { - id: number - uuid: string - name: string - description?: string | null - fqdn: string - scheme?: string - behindProxy?: boolean - panelType?: string - memory: bigint | number - memoryOverallocate?: number - disk: bigint | number - diskOverallocate?: number - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: number - daemonSftpPort?: number - daemonBase?: string - createdAt?: Date | string - updatedAt?: Date | string -} - -export type NodeUpdateWithoutLocationInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - fqdn?: Prisma.StringFieldUpdateOperationsInput | string - scheme?: Prisma.StringFieldUpdateOperationsInput | string - behindProxy?: Prisma.BoolFieldUpdateOperationsInput | boolean - panelType?: Prisma.StringFieldUpdateOperationsInput | string - memory?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - memoryOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - disk?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - diskOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - isPublic?: Prisma.BoolFieldUpdateOperationsInput | boolean - isMaintenanceMode?: Prisma.BoolFieldUpdateOperationsInput | boolean - daemonListenPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonSftpPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonBase?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - allocations?: Prisma.AllocationUpdateManyWithoutNodeNestedInput - servers?: Prisma.ServerUpdateManyWithoutNodeNestedInput -} - -export type NodeUncheckedUpdateWithoutLocationInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - fqdn?: Prisma.StringFieldUpdateOperationsInput | string - scheme?: Prisma.StringFieldUpdateOperationsInput | string - behindProxy?: Prisma.BoolFieldUpdateOperationsInput | boolean - panelType?: Prisma.StringFieldUpdateOperationsInput | string - memory?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - memoryOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - disk?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - diskOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - isPublic?: Prisma.BoolFieldUpdateOperationsInput | boolean - isMaintenanceMode?: Prisma.BoolFieldUpdateOperationsInput | boolean - daemonListenPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonSftpPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonBase?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - allocations?: Prisma.AllocationUncheckedUpdateManyWithoutNodeNestedInput - servers?: Prisma.ServerUncheckedUpdateManyWithoutNodeNestedInput -} - -export type NodeUncheckedUpdateManyWithoutLocationInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - uuid?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - fqdn?: Prisma.StringFieldUpdateOperationsInput | string - scheme?: Prisma.StringFieldUpdateOperationsInput | string - behindProxy?: Prisma.BoolFieldUpdateOperationsInput | boolean - panelType?: Prisma.StringFieldUpdateOperationsInput | string - memory?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - memoryOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - disk?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - diskOverallocate?: Prisma.IntFieldUpdateOperationsInput | number - isPublic?: Prisma.BoolFieldUpdateOperationsInput | boolean - isMaintenanceMode?: Prisma.BoolFieldUpdateOperationsInput | boolean - daemonListenPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonSftpPort?: Prisma.IntFieldUpdateOperationsInput | number - daemonBase?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - -/** - * Count Type NodeCountOutputType - */ - -export type NodeCountOutputType = { - allocations: number - servers: number -} - -export type NodeCountOutputTypeSelect = { - allocations?: boolean | NodeCountOutputTypeCountAllocationsArgs - servers?: boolean | NodeCountOutputTypeCountServersArgs -} - -/** - * NodeCountOutputType without action - */ -export type NodeCountOutputTypeDefaultArgs = { - /** - * Select specific fields to fetch from the NodeCountOutputType - */ - select?: Prisma.NodeCountOutputTypeSelect | null -} - -/** - * NodeCountOutputType without action - */ -export type NodeCountOutputTypeCountAllocationsArgs = { - where?: Prisma.AllocationWhereInput -} - -/** - * NodeCountOutputType without action - */ -export type NodeCountOutputTypeCountServersArgs = { - where?: Prisma.ServerWhereInput -} - - -export type NodeSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - uuid?: boolean - name?: boolean - description?: boolean - fqdn?: boolean - scheme?: boolean - behindProxy?: boolean - panelType?: boolean - memory?: boolean - memoryOverallocate?: boolean - disk?: boolean - diskOverallocate?: boolean - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: boolean - daemonSftpPort?: boolean - daemonBase?: boolean - locationId?: boolean - createdAt?: boolean - updatedAt?: boolean - location?: boolean | Prisma.LocationDefaultArgs - allocations?: boolean | Prisma.Node$allocationsArgs - servers?: boolean | Prisma.Node$serversArgs - _count?: boolean | Prisma.NodeCountOutputTypeDefaultArgs -}, ExtArgs["result"]["node"]> - -export type NodeSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - uuid?: boolean - name?: boolean - description?: boolean - fqdn?: boolean - scheme?: boolean - behindProxy?: boolean - panelType?: boolean - memory?: boolean - memoryOverallocate?: boolean - disk?: boolean - diskOverallocate?: boolean - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: boolean - daemonSftpPort?: boolean - daemonBase?: boolean - locationId?: boolean - createdAt?: boolean - updatedAt?: boolean - location?: boolean | Prisma.LocationDefaultArgs -}, ExtArgs["result"]["node"]> - -export type NodeSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - uuid?: boolean - name?: boolean - description?: boolean - fqdn?: boolean - scheme?: boolean - behindProxy?: boolean - panelType?: boolean - memory?: boolean - memoryOverallocate?: boolean - disk?: boolean - diskOverallocate?: boolean - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: boolean - daemonSftpPort?: boolean - daemonBase?: boolean - locationId?: boolean - createdAt?: boolean - updatedAt?: boolean - location?: boolean | Prisma.LocationDefaultArgs -}, ExtArgs["result"]["node"]> - -export type NodeSelectScalar = { - id?: boolean - uuid?: boolean - name?: boolean - description?: boolean - fqdn?: boolean - scheme?: boolean - behindProxy?: boolean - panelType?: boolean - memory?: boolean - memoryOverallocate?: boolean - disk?: boolean - diskOverallocate?: boolean - isPublic?: boolean - isMaintenanceMode?: boolean - daemonListenPort?: boolean - daemonSftpPort?: boolean - daemonBase?: boolean - locationId?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type NodeOmit = runtime.Types.Extensions.GetOmit<"id" | "uuid" | "name" | "description" | "fqdn" | "scheme" | "behindProxy" | "panelType" | "memory" | "memoryOverallocate" | "disk" | "diskOverallocate" | "isPublic" | "isMaintenanceMode" | "daemonListenPort" | "daemonSftpPort" | "daemonBase" | "locationId" | "createdAt" | "updatedAt", ExtArgs["result"]["node"]> -export type NodeInclude = { - location?: boolean | Prisma.LocationDefaultArgs - allocations?: boolean | Prisma.Node$allocationsArgs - servers?: boolean | Prisma.Node$serversArgs - _count?: boolean | Prisma.NodeCountOutputTypeDefaultArgs -} -export type NodeIncludeCreateManyAndReturn = { - location?: boolean | Prisma.LocationDefaultArgs -} -export type NodeIncludeUpdateManyAndReturn = { - location?: boolean | Prisma.LocationDefaultArgs -} - -export type $NodePayload = { - name: "Node" - objects: { - location: Prisma.$LocationPayload - allocations: Prisma.$AllocationPayload[] - servers: Prisma.$ServerPayload[] - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: number - uuid: string - name: string - description: string | null - fqdn: string - scheme: string - behindProxy: boolean - panelType: string - memory: bigint - memoryOverallocate: number - disk: bigint - diskOverallocate: number - isPublic: boolean - isMaintenanceMode: boolean - daemonListenPort: number - daemonSftpPort: number - daemonBase: string - locationId: number - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["node"]> - composites: {} -} - -export type NodeGetPayload = runtime.Types.Result.GetResult - -export type NodeCountArgs = - Omit & { - select?: NodeCountAggregateInputType | true - } - -export interface NodeDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['Node'], meta: { name: 'Node' } } - /** - * Find zero or one Node that matches the filter. - * @param {NodeFindUniqueArgs} args - Arguments to find a Node - * @example - * // Get one Node - * const node = await prisma.node.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__NodeClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one Node that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {NodeFindUniqueOrThrowArgs} args - Arguments to find a Node - * @example - * // Get one Node - * const node = await prisma.node.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__NodeClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Node that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NodeFindFirstArgs} args - Arguments to find a Node - * @example - * // Get one Node - * const node = await prisma.node.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__NodeClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Node that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NodeFindFirstOrThrowArgs} args - Arguments to find a Node - * @example - * // Get one Node - * const node = await prisma.node.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__NodeClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more Nodes that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NodeFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all Nodes - * const nodes = await prisma.node.findMany() - * - * // Get first 10 Nodes - * const nodes = await prisma.node.findMany({ take: 10 }) - * - * // Only select the `id` - * const nodeWithIdOnly = await prisma.node.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a Node. - * @param {NodeCreateArgs} args - Arguments to create a Node. - * @example - * // Create one Node - * const Node = await prisma.node.create({ - * data: { - * // ... data to create a Node - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__NodeClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many Nodes. - * @param {NodeCreateManyArgs} args - Arguments to create many Nodes. - * @example - * // Create many Nodes - * const node = await prisma.node.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many Nodes and returns the data saved in the database. - * @param {NodeCreateManyAndReturnArgs} args - Arguments to create many Nodes. - * @example - * // Create many Nodes - * const node = await prisma.node.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many Nodes and only return the `id` - * const nodeWithIdOnly = await prisma.node.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a Node. - * @param {NodeDeleteArgs} args - Arguments to delete one Node. - * @example - * // Delete one Node - * const Node = await prisma.node.delete({ - * where: { - * // ... filter to delete one Node - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__NodeClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one Node. - * @param {NodeUpdateArgs} args - Arguments to update one Node. - * @example - * // Update one Node - * const node = await prisma.node.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__NodeClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more Nodes. - * @param {NodeDeleteManyArgs} args - Arguments to filter Nodes to delete. - * @example - * // Delete a few Nodes - * const { count } = await prisma.node.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Nodes. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NodeUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many Nodes - * const node = await prisma.node.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Nodes and returns the data updated in the database. - * @param {NodeUpdateManyAndReturnArgs} args - Arguments to update many Nodes. - * @example - * // Update many Nodes - * const node = await prisma.node.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more Nodes and only return the `id` - * const nodeWithIdOnly = await prisma.node.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one Node. - * @param {NodeUpsertArgs} args - Arguments to update or create a Node. - * @example - * // Update or create a Node - * const node = await prisma.node.upsert({ - * create: { - * // ... data to create a Node - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the Node we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__NodeClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of Nodes. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NodeCountArgs} args - Arguments to filter Nodes to count. - * @example - * // Count the number of Nodes - * const count = await prisma.node.count({ - * where: { - * // ... the filter for the Nodes we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a Node. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NodeAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by Node. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {NodeGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends NodeGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: NodeGroupByArgs['orderBy'] } - : { orderBy?: NodeGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetNodeGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the Node model - */ -readonly fields: NodeFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for Node. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__NodeClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - location = {}>(args?: Prisma.Subset>): Prisma.Prisma__LocationClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - allocations = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - servers = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the Node model - */ -export interface NodeFieldRefs { - readonly id: Prisma.FieldRef<"Node", 'Int'> - readonly uuid: Prisma.FieldRef<"Node", 'String'> - readonly name: Prisma.FieldRef<"Node", 'String'> - readonly description: Prisma.FieldRef<"Node", 'String'> - readonly fqdn: Prisma.FieldRef<"Node", 'String'> - readonly scheme: Prisma.FieldRef<"Node", 'String'> - readonly behindProxy: Prisma.FieldRef<"Node", 'Boolean'> - readonly panelType: Prisma.FieldRef<"Node", 'String'> - readonly memory: Prisma.FieldRef<"Node", 'BigInt'> - readonly memoryOverallocate: Prisma.FieldRef<"Node", 'Int'> - readonly disk: Prisma.FieldRef<"Node", 'BigInt'> - readonly diskOverallocate: Prisma.FieldRef<"Node", 'Int'> - readonly isPublic: Prisma.FieldRef<"Node", 'Boolean'> - readonly isMaintenanceMode: Prisma.FieldRef<"Node", 'Boolean'> - readonly daemonListenPort: Prisma.FieldRef<"Node", 'Int'> - readonly daemonSftpPort: Prisma.FieldRef<"Node", 'Int'> - readonly daemonBase: Prisma.FieldRef<"Node", 'String'> - readonly locationId: Prisma.FieldRef<"Node", 'Int'> - readonly createdAt: Prisma.FieldRef<"Node", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"Node", 'DateTime'> -} - - -// Custom InputTypes -/** - * Node findUnique - */ -export type NodeFindUniqueArgs = { - /** - * Select specific fields to fetch from the Node - */ - select?: Prisma.NodeSelect | null - /** - * Omit specific fields from the Node - */ - omit?: Prisma.NodeOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NodeInclude | null - /** - * Filter, which Node to fetch. - */ - where: Prisma.NodeWhereUniqueInput -} - -/** - * Node findUniqueOrThrow - */ -export type NodeFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the Node - */ - select?: Prisma.NodeSelect | null - /** - * Omit specific fields from the Node - */ - omit?: Prisma.NodeOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NodeInclude | null - /** - * Filter, which Node to fetch. - */ - where: Prisma.NodeWhereUniqueInput -} - -/** - * Node findFirst - */ -export type NodeFindFirstArgs = { - /** - * Select specific fields to fetch from the Node - */ - select?: Prisma.NodeSelect | null - /** - * Omit specific fields from the Node - */ - omit?: Prisma.NodeOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NodeInclude | null - /** - * Filter, which Node to fetch. - */ - where?: Prisma.NodeWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Nodes to fetch. - */ - orderBy?: Prisma.NodeOrderByWithRelationInput | Prisma.NodeOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Nodes. - */ - cursor?: Prisma.NodeWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Nodes from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Nodes. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Nodes. - */ - distinct?: Prisma.NodeScalarFieldEnum | Prisma.NodeScalarFieldEnum[] -} - -/** - * Node findFirstOrThrow - */ -export type NodeFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the Node - */ - select?: Prisma.NodeSelect | null - /** - * Omit specific fields from the Node - */ - omit?: Prisma.NodeOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NodeInclude | null - /** - * Filter, which Node to fetch. - */ - where?: Prisma.NodeWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Nodes to fetch. - */ - orderBy?: Prisma.NodeOrderByWithRelationInput | Prisma.NodeOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Nodes. - */ - cursor?: Prisma.NodeWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Nodes from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Nodes. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Nodes. - */ - distinct?: Prisma.NodeScalarFieldEnum | Prisma.NodeScalarFieldEnum[] -} - -/** - * Node findMany - */ -export type NodeFindManyArgs = { - /** - * Select specific fields to fetch from the Node - */ - select?: Prisma.NodeSelect | null - /** - * Omit specific fields from the Node - */ - omit?: Prisma.NodeOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NodeInclude | null - /** - * Filter, which Nodes to fetch. - */ - where?: Prisma.NodeWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Nodes to fetch. - */ - orderBy?: Prisma.NodeOrderByWithRelationInput | Prisma.NodeOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing Nodes. - */ - cursor?: Prisma.NodeWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Nodes from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Nodes. - */ - skip?: number - distinct?: Prisma.NodeScalarFieldEnum | Prisma.NodeScalarFieldEnum[] -} - -/** - * Node create - */ -export type NodeCreateArgs = { - /** - * Select specific fields to fetch from the Node - */ - select?: Prisma.NodeSelect | null - /** - * Omit specific fields from the Node - */ - omit?: Prisma.NodeOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NodeInclude | null - /** - * The data needed to create a Node. - */ - data: Prisma.XOR -} - -/** - * Node createMany - */ -export type NodeCreateManyArgs = { - /** - * The data used to create many Nodes. - */ - data: Prisma.NodeCreateManyInput | Prisma.NodeCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Node createManyAndReturn - */ -export type NodeCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Node - */ - select?: Prisma.NodeSelectCreateManyAndReturn | null - /** - * Omit specific fields from the Node - */ - omit?: Prisma.NodeOmit | null - /** - * The data used to create many Nodes. - */ - data: Prisma.NodeCreateManyInput | Prisma.NodeCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NodeIncludeCreateManyAndReturn | null -} - -/** - * Node update - */ -export type NodeUpdateArgs = { - /** - * Select specific fields to fetch from the Node - */ - select?: Prisma.NodeSelect | null - /** - * Omit specific fields from the Node - */ - omit?: Prisma.NodeOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NodeInclude | null - /** - * The data needed to update a Node. - */ - data: Prisma.XOR - /** - * Choose, which Node to update. - */ - where: Prisma.NodeWhereUniqueInput -} - -/** - * Node updateMany - */ -export type NodeUpdateManyArgs = { - /** - * The data used to update Nodes. - */ - data: Prisma.XOR - /** - * Filter which Nodes to update - */ - where?: Prisma.NodeWhereInput - /** - * Limit how many Nodes to update. - */ - limit?: number -} - -/** - * Node updateManyAndReturn - */ -export type NodeUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Node - */ - select?: Prisma.NodeSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the Node - */ - omit?: Prisma.NodeOmit | null - /** - * The data used to update Nodes. - */ - data: Prisma.XOR - /** - * Filter which Nodes to update - */ - where?: Prisma.NodeWhereInput - /** - * Limit how many Nodes to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NodeIncludeUpdateManyAndReturn | null -} - -/** - * Node upsert - */ -export type NodeUpsertArgs = { - /** - * Select specific fields to fetch from the Node - */ - select?: Prisma.NodeSelect | null - /** - * Omit specific fields from the Node - */ - omit?: Prisma.NodeOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NodeInclude | null - /** - * The filter to search for the Node to update in case it exists. - */ - where: Prisma.NodeWhereUniqueInput - /** - * In case the Node found by the `where` argument doesn't exist, create a new Node with this data. - */ - create: Prisma.XOR - /** - * In case the Node was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * Node delete - */ -export type NodeDeleteArgs = { - /** - * Select specific fields to fetch from the Node - */ - select?: Prisma.NodeSelect | null - /** - * Omit specific fields from the Node - */ - omit?: Prisma.NodeOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NodeInclude | null - /** - * Filter which Node to delete. - */ - where: Prisma.NodeWhereUniqueInput -} - -/** - * Node deleteMany - */ -export type NodeDeleteManyArgs = { - /** - * Filter which Nodes to delete - */ - where?: Prisma.NodeWhereInput - /** - * Limit how many Nodes to delete. - */ - limit?: number -} - -/** - * Node.allocations - */ -export type Node$allocationsArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelect | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationInclude | null - where?: Prisma.AllocationWhereInput - orderBy?: Prisma.AllocationOrderByWithRelationInput | Prisma.AllocationOrderByWithRelationInput[] - cursor?: Prisma.AllocationWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.AllocationScalarFieldEnum | Prisma.AllocationScalarFieldEnum[] -} - -/** - * Node.servers - */ -export type Node$serversArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - where?: Prisma.ServerWhereInput - orderBy?: Prisma.ServerOrderByWithRelationInput | Prisma.ServerOrderByWithRelationInput[] - cursor?: Prisma.ServerWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.ServerScalarFieldEnum | Prisma.ServerScalarFieldEnum[] -} - -/** - * Node without action - */ -export type NodeDefaultArgs = { - /** - * Select specific fields to fetch from the Node - */ - select?: Prisma.NodeSelect | null - /** - * Omit specific fields from the Node - */ - omit?: Prisma.NodeOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.NodeInclude | null -} diff --git a/prisma/generated/prisma/models/Payment.ts b/prisma/generated/prisma/models/Payment.ts deleted file mode 100644 index b50f09b..0000000 --- a/prisma/generated/prisma/models/Payment.ts +++ /dev/null @@ -1,1489 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `Payment` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model Payment - * - */ -export type PaymentModel = runtime.Types.Result.DefaultSelection - -export type AggregatePayment = { - _count: PaymentCountAggregateOutputType | null - _avg: PaymentAvgAggregateOutputType | null - _sum: PaymentSumAggregateOutputType | null - _min: PaymentMinAggregateOutputType | null - _max: PaymentMaxAggregateOutputType | null -} - -export type PaymentAvgAggregateOutputType = { - amount: runtime.Decimal | null -} - -export type PaymentSumAggregateOutputType = { - amount: runtime.Decimal | null -} - -export type PaymentMinAggregateOutputType = { - id: string | null - invoiceId: string | null - amount: runtime.Decimal | null - method: string | null - reference: string | null - status: string | null - notes: string | null - createdAt: Date | null -} - -export type PaymentMaxAggregateOutputType = { - id: string | null - invoiceId: string | null - amount: runtime.Decimal | null - method: string | null - reference: string | null - status: string | null - notes: string | null - createdAt: Date | null -} - -export type PaymentCountAggregateOutputType = { - id: number - invoiceId: number - amount: number - method: number - reference: number - status: number - notes: number - createdAt: number - _all: number -} - - -export type PaymentAvgAggregateInputType = { - amount?: true -} - -export type PaymentSumAggregateInputType = { - amount?: true -} - -export type PaymentMinAggregateInputType = { - id?: true - invoiceId?: true - amount?: true - method?: true - reference?: true - status?: true - notes?: true - createdAt?: true -} - -export type PaymentMaxAggregateInputType = { - id?: true - invoiceId?: true - amount?: true - method?: true - reference?: true - status?: true - notes?: true - createdAt?: true -} - -export type PaymentCountAggregateInputType = { - id?: true - invoiceId?: true - amount?: true - method?: true - reference?: true - status?: true - notes?: true - createdAt?: true - _all?: true -} - -export type PaymentAggregateArgs = { - /** - * Filter which Payment to aggregate. - */ - where?: Prisma.PaymentWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Payments to fetch. - */ - orderBy?: Prisma.PaymentOrderByWithRelationInput | Prisma.PaymentOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.PaymentWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Payments from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Payments. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned Payments - **/ - _count?: true | PaymentCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: PaymentAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: PaymentSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: PaymentMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: PaymentMaxAggregateInputType -} - -export type GetPaymentAggregateType = { - [P in keyof T & keyof AggregatePayment]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type PaymentGroupByArgs = { - where?: Prisma.PaymentWhereInput - orderBy?: Prisma.PaymentOrderByWithAggregationInput | Prisma.PaymentOrderByWithAggregationInput[] - by: Prisma.PaymentScalarFieldEnum[] | Prisma.PaymentScalarFieldEnum - having?: Prisma.PaymentScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: PaymentCountAggregateInputType | true - _avg?: PaymentAvgAggregateInputType - _sum?: PaymentSumAggregateInputType - _min?: PaymentMinAggregateInputType - _max?: PaymentMaxAggregateInputType -} - -export type PaymentGroupByOutputType = { - id: string - invoiceId: string - amount: runtime.Decimal - method: string - reference: string | null - status: string - notes: string | null - createdAt: Date - _count: PaymentCountAggregateOutputType | null - _avg: PaymentAvgAggregateOutputType | null - _sum: PaymentSumAggregateOutputType | null - _min: PaymentMinAggregateOutputType | null - _max: PaymentMaxAggregateOutputType | null -} - -type GetPaymentGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof PaymentGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type PaymentWhereInput = { - AND?: Prisma.PaymentWhereInput | Prisma.PaymentWhereInput[] - OR?: Prisma.PaymentWhereInput[] - NOT?: Prisma.PaymentWhereInput | Prisma.PaymentWhereInput[] - id?: Prisma.StringFilter<"Payment"> | string - invoiceId?: Prisma.StringFilter<"Payment"> | string - amount?: Prisma.DecimalFilter<"Payment"> | runtime.Decimal | runtime.DecimalJsLike | number | string - method?: Prisma.StringFilter<"Payment"> | string - reference?: Prisma.StringNullableFilter<"Payment"> | string | null - status?: Prisma.StringFilter<"Payment"> | string - notes?: Prisma.StringNullableFilter<"Payment"> | string | null - createdAt?: Prisma.DateTimeFilter<"Payment"> | Date | string - invoice?: Prisma.XOR -} - -export type PaymentOrderByWithRelationInput = { - id?: Prisma.SortOrder - invoiceId?: Prisma.SortOrder - amount?: Prisma.SortOrder - method?: Prisma.SortOrder - reference?: Prisma.SortOrderInput | Prisma.SortOrder - status?: Prisma.SortOrder - notes?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - invoice?: Prisma.InvoiceOrderByWithRelationInput -} - -export type PaymentWhereUniqueInput = Prisma.AtLeast<{ - id?: string - AND?: Prisma.PaymentWhereInput | Prisma.PaymentWhereInput[] - OR?: Prisma.PaymentWhereInput[] - NOT?: Prisma.PaymentWhereInput | Prisma.PaymentWhereInput[] - invoiceId?: Prisma.StringFilter<"Payment"> | string - amount?: Prisma.DecimalFilter<"Payment"> | runtime.Decimal | runtime.DecimalJsLike | number | string - method?: Prisma.StringFilter<"Payment"> | string - reference?: Prisma.StringNullableFilter<"Payment"> | string | null - status?: Prisma.StringFilter<"Payment"> | string - notes?: Prisma.StringNullableFilter<"Payment"> | string | null - createdAt?: Prisma.DateTimeFilter<"Payment"> | Date | string - invoice?: Prisma.XOR -}, "id"> - -export type PaymentOrderByWithAggregationInput = { - id?: Prisma.SortOrder - invoiceId?: Prisma.SortOrder - amount?: Prisma.SortOrder - method?: Prisma.SortOrder - reference?: Prisma.SortOrderInput | Prisma.SortOrder - status?: Prisma.SortOrder - notes?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - _count?: Prisma.PaymentCountOrderByAggregateInput - _avg?: Prisma.PaymentAvgOrderByAggregateInput - _max?: Prisma.PaymentMaxOrderByAggregateInput - _min?: Prisma.PaymentMinOrderByAggregateInput - _sum?: Prisma.PaymentSumOrderByAggregateInput -} - -export type PaymentScalarWhereWithAggregatesInput = { - AND?: Prisma.PaymentScalarWhereWithAggregatesInput | Prisma.PaymentScalarWhereWithAggregatesInput[] - OR?: Prisma.PaymentScalarWhereWithAggregatesInput[] - NOT?: Prisma.PaymentScalarWhereWithAggregatesInput | Prisma.PaymentScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"Payment"> | string - invoiceId?: Prisma.StringWithAggregatesFilter<"Payment"> | string - amount?: Prisma.DecimalWithAggregatesFilter<"Payment"> | runtime.Decimal | runtime.DecimalJsLike | number | string - method?: Prisma.StringWithAggregatesFilter<"Payment"> | string - reference?: Prisma.StringNullableWithAggregatesFilter<"Payment"> | string | null - status?: Prisma.StringWithAggregatesFilter<"Payment"> | string - notes?: Prisma.StringNullableWithAggregatesFilter<"Payment"> | string | null - createdAt?: Prisma.DateTimeWithAggregatesFilter<"Payment"> | Date | string -} - -export type PaymentCreateInput = { - id?: string - amount: runtime.Decimal | runtime.DecimalJsLike | number | string - method: string - reference?: string | null - status?: string - notes?: string | null - createdAt?: Date | string - invoice: Prisma.InvoiceCreateNestedOneWithoutPaymentsInput -} - -export type PaymentUncheckedCreateInput = { - id?: string - invoiceId: string - amount: runtime.Decimal | runtime.DecimalJsLike | number | string - method: string - reference?: string | null - status?: string - notes?: string | null - createdAt?: Date | string -} - -export type PaymentUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - method?: Prisma.StringFieldUpdateOperationsInput | string - reference?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.StringFieldUpdateOperationsInput | string - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - invoice?: Prisma.InvoiceUpdateOneRequiredWithoutPaymentsNestedInput -} - -export type PaymentUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceId?: Prisma.StringFieldUpdateOperationsInput | string - amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - method?: Prisma.StringFieldUpdateOperationsInput | string - reference?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.StringFieldUpdateOperationsInput | string - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type PaymentCreateManyInput = { - id?: string - invoiceId: string - amount: runtime.Decimal | runtime.DecimalJsLike | number | string - method: string - reference?: string | null - status?: string - notes?: string | null - createdAt?: Date | string -} - -export type PaymentUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - method?: Prisma.StringFieldUpdateOperationsInput | string - reference?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.StringFieldUpdateOperationsInput | string - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type PaymentUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - invoiceId?: Prisma.StringFieldUpdateOperationsInput | string - amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - method?: Prisma.StringFieldUpdateOperationsInput | string - reference?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.StringFieldUpdateOperationsInput | string - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type PaymentListRelationFilter = { - every?: Prisma.PaymentWhereInput - some?: Prisma.PaymentWhereInput - none?: Prisma.PaymentWhereInput -} - -export type PaymentOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type PaymentCountOrderByAggregateInput = { - id?: Prisma.SortOrder - invoiceId?: Prisma.SortOrder - amount?: Prisma.SortOrder - method?: Prisma.SortOrder - reference?: Prisma.SortOrder - status?: Prisma.SortOrder - notes?: Prisma.SortOrder - createdAt?: Prisma.SortOrder -} - -export type PaymentAvgOrderByAggregateInput = { - amount?: Prisma.SortOrder -} - -export type PaymentMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - invoiceId?: Prisma.SortOrder - amount?: Prisma.SortOrder - method?: Prisma.SortOrder - reference?: Prisma.SortOrder - status?: Prisma.SortOrder - notes?: Prisma.SortOrder - createdAt?: Prisma.SortOrder -} - -export type PaymentMinOrderByAggregateInput = { - id?: Prisma.SortOrder - invoiceId?: Prisma.SortOrder - amount?: Prisma.SortOrder - method?: Prisma.SortOrder - reference?: Prisma.SortOrder - status?: Prisma.SortOrder - notes?: Prisma.SortOrder - createdAt?: Prisma.SortOrder -} - -export type PaymentSumOrderByAggregateInput = { - amount?: Prisma.SortOrder -} - -export type PaymentCreateNestedManyWithoutInvoiceInput = { - create?: Prisma.XOR | Prisma.PaymentCreateWithoutInvoiceInput[] | Prisma.PaymentUncheckedCreateWithoutInvoiceInput[] - connectOrCreate?: Prisma.PaymentCreateOrConnectWithoutInvoiceInput | Prisma.PaymentCreateOrConnectWithoutInvoiceInput[] - createMany?: Prisma.PaymentCreateManyInvoiceInputEnvelope - connect?: Prisma.PaymentWhereUniqueInput | Prisma.PaymentWhereUniqueInput[] -} - -export type PaymentUncheckedCreateNestedManyWithoutInvoiceInput = { - create?: Prisma.XOR | Prisma.PaymentCreateWithoutInvoiceInput[] | Prisma.PaymentUncheckedCreateWithoutInvoiceInput[] - connectOrCreate?: Prisma.PaymentCreateOrConnectWithoutInvoiceInput | Prisma.PaymentCreateOrConnectWithoutInvoiceInput[] - createMany?: Prisma.PaymentCreateManyInvoiceInputEnvelope - connect?: Prisma.PaymentWhereUniqueInput | Prisma.PaymentWhereUniqueInput[] -} - -export type PaymentUpdateManyWithoutInvoiceNestedInput = { - create?: Prisma.XOR | Prisma.PaymentCreateWithoutInvoiceInput[] | Prisma.PaymentUncheckedCreateWithoutInvoiceInput[] - connectOrCreate?: Prisma.PaymentCreateOrConnectWithoutInvoiceInput | Prisma.PaymentCreateOrConnectWithoutInvoiceInput[] - upsert?: Prisma.PaymentUpsertWithWhereUniqueWithoutInvoiceInput | Prisma.PaymentUpsertWithWhereUniqueWithoutInvoiceInput[] - createMany?: Prisma.PaymentCreateManyInvoiceInputEnvelope - set?: Prisma.PaymentWhereUniqueInput | Prisma.PaymentWhereUniqueInput[] - disconnect?: Prisma.PaymentWhereUniqueInput | Prisma.PaymentWhereUniqueInput[] - delete?: Prisma.PaymentWhereUniqueInput | Prisma.PaymentWhereUniqueInput[] - connect?: Prisma.PaymentWhereUniqueInput | Prisma.PaymentWhereUniqueInput[] - update?: Prisma.PaymentUpdateWithWhereUniqueWithoutInvoiceInput | Prisma.PaymentUpdateWithWhereUniqueWithoutInvoiceInput[] - updateMany?: Prisma.PaymentUpdateManyWithWhereWithoutInvoiceInput | Prisma.PaymentUpdateManyWithWhereWithoutInvoiceInput[] - deleteMany?: Prisma.PaymentScalarWhereInput | Prisma.PaymentScalarWhereInput[] -} - -export type PaymentUncheckedUpdateManyWithoutInvoiceNestedInput = { - create?: Prisma.XOR | Prisma.PaymentCreateWithoutInvoiceInput[] | Prisma.PaymentUncheckedCreateWithoutInvoiceInput[] - connectOrCreate?: Prisma.PaymentCreateOrConnectWithoutInvoiceInput | Prisma.PaymentCreateOrConnectWithoutInvoiceInput[] - upsert?: Prisma.PaymentUpsertWithWhereUniqueWithoutInvoiceInput | Prisma.PaymentUpsertWithWhereUniqueWithoutInvoiceInput[] - createMany?: Prisma.PaymentCreateManyInvoiceInputEnvelope - set?: Prisma.PaymentWhereUniqueInput | Prisma.PaymentWhereUniqueInput[] - disconnect?: Prisma.PaymentWhereUniqueInput | Prisma.PaymentWhereUniqueInput[] - delete?: Prisma.PaymentWhereUniqueInput | Prisma.PaymentWhereUniqueInput[] - connect?: Prisma.PaymentWhereUniqueInput | Prisma.PaymentWhereUniqueInput[] - update?: Prisma.PaymentUpdateWithWhereUniqueWithoutInvoiceInput | Prisma.PaymentUpdateWithWhereUniqueWithoutInvoiceInput[] - updateMany?: Prisma.PaymentUpdateManyWithWhereWithoutInvoiceInput | Prisma.PaymentUpdateManyWithWhereWithoutInvoiceInput[] - deleteMany?: Prisma.PaymentScalarWhereInput | Prisma.PaymentScalarWhereInput[] -} - -export type PaymentCreateWithoutInvoiceInput = { - id?: string - amount: runtime.Decimal | runtime.DecimalJsLike | number | string - method: string - reference?: string | null - status?: string - notes?: string | null - createdAt?: Date | string -} - -export type PaymentUncheckedCreateWithoutInvoiceInput = { - id?: string - amount: runtime.Decimal | runtime.DecimalJsLike | number | string - method: string - reference?: string | null - status?: string - notes?: string | null - createdAt?: Date | string -} - -export type PaymentCreateOrConnectWithoutInvoiceInput = { - where: Prisma.PaymentWhereUniqueInput - create: Prisma.XOR -} - -export type PaymentCreateManyInvoiceInputEnvelope = { - data: Prisma.PaymentCreateManyInvoiceInput | Prisma.PaymentCreateManyInvoiceInput[] - skipDuplicates?: boolean -} - -export type PaymentUpsertWithWhereUniqueWithoutInvoiceInput = { - where: Prisma.PaymentWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type PaymentUpdateWithWhereUniqueWithoutInvoiceInput = { - where: Prisma.PaymentWhereUniqueInput - data: Prisma.XOR -} - -export type PaymentUpdateManyWithWhereWithoutInvoiceInput = { - where: Prisma.PaymentScalarWhereInput - data: Prisma.XOR -} - -export type PaymentScalarWhereInput = { - AND?: Prisma.PaymentScalarWhereInput | Prisma.PaymentScalarWhereInput[] - OR?: Prisma.PaymentScalarWhereInput[] - NOT?: Prisma.PaymentScalarWhereInput | Prisma.PaymentScalarWhereInput[] - id?: Prisma.StringFilter<"Payment"> | string - invoiceId?: Prisma.StringFilter<"Payment"> | string - amount?: Prisma.DecimalFilter<"Payment"> | runtime.Decimal | runtime.DecimalJsLike | number | string - method?: Prisma.StringFilter<"Payment"> | string - reference?: Prisma.StringNullableFilter<"Payment"> | string | null - status?: Prisma.StringFilter<"Payment"> | string - notes?: Prisma.StringNullableFilter<"Payment"> | string | null - createdAt?: Prisma.DateTimeFilter<"Payment"> | Date | string -} - -export type PaymentCreateManyInvoiceInput = { - id?: string - amount: runtime.Decimal | runtime.DecimalJsLike | number | string - method: string - reference?: string | null - status?: string - notes?: string | null - createdAt?: Date | string -} - -export type PaymentUpdateWithoutInvoiceInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - method?: Prisma.StringFieldUpdateOperationsInput | string - reference?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.StringFieldUpdateOperationsInput | string - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type PaymentUncheckedUpdateWithoutInvoiceInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - method?: Prisma.StringFieldUpdateOperationsInput | string - reference?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.StringFieldUpdateOperationsInput | string - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type PaymentUncheckedUpdateManyWithoutInvoiceInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - method?: Prisma.StringFieldUpdateOperationsInput | string - reference?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.StringFieldUpdateOperationsInput | string - notes?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - - -export type PaymentSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - invoiceId?: boolean - amount?: boolean - method?: boolean - reference?: boolean - status?: boolean - notes?: boolean - createdAt?: boolean - invoice?: boolean | Prisma.InvoiceDefaultArgs -}, ExtArgs["result"]["payment"]> - -export type PaymentSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - invoiceId?: boolean - amount?: boolean - method?: boolean - reference?: boolean - status?: boolean - notes?: boolean - createdAt?: boolean - invoice?: boolean | Prisma.InvoiceDefaultArgs -}, ExtArgs["result"]["payment"]> - -export type PaymentSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - invoiceId?: boolean - amount?: boolean - method?: boolean - reference?: boolean - status?: boolean - notes?: boolean - createdAt?: boolean - invoice?: boolean | Prisma.InvoiceDefaultArgs -}, ExtArgs["result"]["payment"]> - -export type PaymentSelectScalar = { - id?: boolean - invoiceId?: boolean - amount?: boolean - method?: boolean - reference?: boolean - status?: boolean - notes?: boolean - createdAt?: boolean -} - -export type PaymentOmit = runtime.Types.Extensions.GetOmit<"id" | "invoiceId" | "amount" | "method" | "reference" | "status" | "notes" | "createdAt", ExtArgs["result"]["payment"]> -export type PaymentInclude = { - invoice?: boolean | Prisma.InvoiceDefaultArgs -} -export type PaymentIncludeCreateManyAndReturn = { - invoice?: boolean | Prisma.InvoiceDefaultArgs -} -export type PaymentIncludeUpdateManyAndReturn = { - invoice?: boolean | Prisma.InvoiceDefaultArgs -} - -export type $PaymentPayload = { - name: "Payment" - objects: { - invoice: Prisma.$InvoicePayload - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - invoiceId: string - amount: runtime.Decimal - method: string - reference: string | null - status: string - notes: string | null - createdAt: Date - }, ExtArgs["result"]["payment"]> - composites: {} -} - -export type PaymentGetPayload = runtime.Types.Result.GetResult - -export type PaymentCountArgs = - Omit & { - select?: PaymentCountAggregateInputType | true - } - -export interface PaymentDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['Payment'], meta: { name: 'Payment' } } - /** - * Find zero or one Payment that matches the filter. - * @param {PaymentFindUniqueArgs} args - Arguments to find a Payment - * @example - * // Get one Payment - * const payment = await prisma.payment.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__PaymentClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one Payment that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {PaymentFindUniqueOrThrowArgs} args - Arguments to find a Payment - * @example - * // Get one Payment - * const payment = await prisma.payment.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__PaymentClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Payment that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {PaymentFindFirstArgs} args - Arguments to find a Payment - * @example - * // Get one Payment - * const payment = await prisma.payment.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__PaymentClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Payment that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {PaymentFindFirstOrThrowArgs} args - Arguments to find a Payment - * @example - * // Get one Payment - * const payment = await prisma.payment.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__PaymentClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more Payments that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {PaymentFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all Payments - * const payments = await prisma.payment.findMany() - * - * // Get first 10 Payments - * const payments = await prisma.payment.findMany({ take: 10 }) - * - * // Only select the `id` - * const paymentWithIdOnly = await prisma.payment.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a Payment. - * @param {PaymentCreateArgs} args - Arguments to create a Payment. - * @example - * // Create one Payment - * const Payment = await prisma.payment.create({ - * data: { - * // ... data to create a Payment - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__PaymentClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many Payments. - * @param {PaymentCreateManyArgs} args - Arguments to create many Payments. - * @example - * // Create many Payments - * const payment = await prisma.payment.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many Payments and returns the data saved in the database. - * @param {PaymentCreateManyAndReturnArgs} args - Arguments to create many Payments. - * @example - * // Create many Payments - * const payment = await prisma.payment.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many Payments and only return the `id` - * const paymentWithIdOnly = await prisma.payment.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a Payment. - * @param {PaymentDeleteArgs} args - Arguments to delete one Payment. - * @example - * // Delete one Payment - * const Payment = await prisma.payment.delete({ - * where: { - * // ... filter to delete one Payment - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__PaymentClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one Payment. - * @param {PaymentUpdateArgs} args - Arguments to update one Payment. - * @example - * // Update one Payment - * const payment = await prisma.payment.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__PaymentClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more Payments. - * @param {PaymentDeleteManyArgs} args - Arguments to filter Payments to delete. - * @example - * // Delete a few Payments - * const { count } = await prisma.payment.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Payments. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {PaymentUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many Payments - * const payment = await prisma.payment.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Payments and returns the data updated in the database. - * @param {PaymentUpdateManyAndReturnArgs} args - Arguments to update many Payments. - * @example - * // Update many Payments - * const payment = await prisma.payment.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more Payments and only return the `id` - * const paymentWithIdOnly = await prisma.payment.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one Payment. - * @param {PaymentUpsertArgs} args - Arguments to update or create a Payment. - * @example - * // Update or create a Payment - * const payment = await prisma.payment.upsert({ - * create: { - * // ... data to create a Payment - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the Payment we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__PaymentClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of Payments. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {PaymentCountArgs} args - Arguments to filter Payments to count. - * @example - * // Count the number of Payments - * const count = await prisma.payment.count({ - * where: { - * // ... the filter for the Payments we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a Payment. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {PaymentAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by Payment. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {PaymentGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends PaymentGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: PaymentGroupByArgs['orderBy'] } - : { orderBy?: PaymentGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetPaymentGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the Payment model - */ -readonly fields: PaymentFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for Payment. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__PaymentClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - invoice = {}>(args?: Prisma.Subset>): Prisma.Prisma__InvoiceClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the Payment model - */ -export interface PaymentFieldRefs { - readonly id: Prisma.FieldRef<"Payment", 'String'> - readonly invoiceId: Prisma.FieldRef<"Payment", 'String'> - readonly amount: Prisma.FieldRef<"Payment", 'Decimal'> - readonly method: Prisma.FieldRef<"Payment", 'String'> - readonly reference: Prisma.FieldRef<"Payment", 'String'> - readonly status: Prisma.FieldRef<"Payment", 'String'> - readonly notes: Prisma.FieldRef<"Payment", 'String'> - readonly createdAt: Prisma.FieldRef<"Payment", 'DateTime'> -} - - -// Custom InputTypes -/** - * Payment findUnique - */ -export type PaymentFindUniqueArgs = { - /** - * Select specific fields to fetch from the Payment - */ - select?: Prisma.PaymentSelect | null - /** - * Omit specific fields from the Payment - */ - omit?: Prisma.PaymentOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PaymentInclude | null - /** - * Filter, which Payment to fetch. - */ - where: Prisma.PaymentWhereUniqueInput -} - -/** - * Payment findUniqueOrThrow - */ -export type PaymentFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the Payment - */ - select?: Prisma.PaymentSelect | null - /** - * Omit specific fields from the Payment - */ - omit?: Prisma.PaymentOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PaymentInclude | null - /** - * Filter, which Payment to fetch. - */ - where: Prisma.PaymentWhereUniqueInput -} - -/** - * Payment findFirst - */ -export type PaymentFindFirstArgs = { - /** - * Select specific fields to fetch from the Payment - */ - select?: Prisma.PaymentSelect | null - /** - * Omit specific fields from the Payment - */ - omit?: Prisma.PaymentOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PaymentInclude | null - /** - * Filter, which Payment to fetch. - */ - where?: Prisma.PaymentWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Payments to fetch. - */ - orderBy?: Prisma.PaymentOrderByWithRelationInput | Prisma.PaymentOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Payments. - */ - cursor?: Prisma.PaymentWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Payments from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Payments. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Payments. - */ - distinct?: Prisma.PaymentScalarFieldEnum | Prisma.PaymentScalarFieldEnum[] -} - -/** - * Payment findFirstOrThrow - */ -export type PaymentFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the Payment - */ - select?: Prisma.PaymentSelect | null - /** - * Omit specific fields from the Payment - */ - omit?: Prisma.PaymentOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PaymentInclude | null - /** - * Filter, which Payment to fetch. - */ - where?: Prisma.PaymentWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Payments to fetch. - */ - orderBy?: Prisma.PaymentOrderByWithRelationInput | Prisma.PaymentOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Payments. - */ - cursor?: Prisma.PaymentWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Payments from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Payments. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Payments. - */ - distinct?: Prisma.PaymentScalarFieldEnum | Prisma.PaymentScalarFieldEnum[] -} - -/** - * Payment findMany - */ -export type PaymentFindManyArgs = { - /** - * Select specific fields to fetch from the Payment - */ - select?: Prisma.PaymentSelect | null - /** - * Omit specific fields from the Payment - */ - omit?: Prisma.PaymentOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PaymentInclude | null - /** - * Filter, which Payments to fetch. - */ - where?: Prisma.PaymentWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Payments to fetch. - */ - orderBy?: Prisma.PaymentOrderByWithRelationInput | Prisma.PaymentOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing Payments. - */ - cursor?: Prisma.PaymentWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Payments from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Payments. - */ - skip?: number - distinct?: Prisma.PaymentScalarFieldEnum | Prisma.PaymentScalarFieldEnum[] -} - -/** - * Payment create - */ -export type PaymentCreateArgs = { - /** - * Select specific fields to fetch from the Payment - */ - select?: Prisma.PaymentSelect | null - /** - * Omit specific fields from the Payment - */ - omit?: Prisma.PaymentOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PaymentInclude | null - /** - * The data needed to create a Payment. - */ - data: Prisma.XOR -} - -/** - * Payment createMany - */ -export type PaymentCreateManyArgs = { - /** - * The data used to create many Payments. - */ - data: Prisma.PaymentCreateManyInput | Prisma.PaymentCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Payment createManyAndReturn - */ -export type PaymentCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Payment - */ - select?: Prisma.PaymentSelectCreateManyAndReturn | null - /** - * Omit specific fields from the Payment - */ - omit?: Prisma.PaymentOmit | null - /** - * The data used to create many Payments. - */ - data: Prisma.PaymentCreateManyInput | Prisma.PaymentCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PaymentIncludeCreateManyAndReturn | null -} - -/** - * Payment update - */ -export type PaymentUpdateArgs = { - /** - * Select specific fields to fetch from the Payment - */ - select?: Prisma.PaymentSelect | null - /** - * Omit specific fields from the Payment - */ - omit?: Prisma.PaymentOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PaymentInclude | null - /** - * The data needed to update a Payment. - */ - data: Prisma.XOR - /** - * Choose, which Payment to update. - */ - where: Prisma.PaymentWhereUniqueInput -} - -/** - * Payment updateMany - */ -export type PaymentUpdateManyArgs = { - /** - * The data used to update Payments. - */ - data: Prisma.XOR - /** - * Filter which Payments to update - */ - where?: Prisma.PaymentWhereInput - /** - * Limit how many Payments to update. - */ - limit?: number -} - -/** - * Payment updateManyAndReturn - */ -export type PaymentUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Payment - */ - select?: Prisma.PaymentSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the Payment - */ - omit?: Prisma.PaymentOmit | null - /** - * The data used to update Payments. - */ - data: Prisma.XOR - /** - * Filter which Payments to update - */ - where?: Prisma.PaymentWhereInput - /** - * Limit how many Payments to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PaymentIncludeUpdateManyAndReturn | null -} - -/** - * Payment upsert - */ -export type PaymentUpsertArgs = { - /** - * Select specific fields to fetch from the Payment - */ - select?: Prisma.PaymentSelect | null - /** - * Omit specific fields from the Payment - */ - omit?: Prisma.PaymentOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PaymentInclude | null - /** - * The filter to search for the Payment to update in case it exists. - */ - where: Prisma.PaymentWhereUniqueInput - /** - * In case the Payment found by the `where` argument doesn't exist, create a new Payment with this data. - */ - create: Prisma.XOR - /** - * In case the Payment was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * Payment delete - */ -export type PaymentDeleteArgs = { - /** - * Select specific fields to fetch from the Payment - */ - select?: Prisma.PaymentSelect | null - /** - * Omit specific fields from the Payment - */ - omit?: Prisma.PaymentOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PaymentInclude | null - /** - * Filter which Payment to delete. - */ - where: Prisma.PaymentWhereUniqueInput -} - -/** - * Payment deleteMany - */ -export type PaymentDeleteManyArgs = { - /** - * Filter which Payments to delete - */ - where?: Prisma.PaymentWhereInput - /** - * Limit how many Payments to delete. - */ - limit?: number -} - -/** - * Payment without action - */ -export type PaymentDefaultArgs = { - /** - * Select specific fields to fetch from the Payment - */ - select?: Prisma.PaymentSelect | null - /** - * Omit specific fields from the Payment - */ - omit?: Prisma.PaymentOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.PaymentInclude | null -} diff --git a/prisma/generated/prisma/models/Product.ts b/prisma/generated/prisma/models/Product.ts deleted file mode 100644 index 4453122..0000000 --- a/prisma/generated/prisma/models/Product.ts +++ /dev/null @@ -1,2036 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `Product` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model Product - * - */ -export type ProductModel = runtime.Types.Result.DefaultSelection - -export type AggregateProduct = { - _count: ProductCountAggregateOutputType | null - _avg: ProductAvgAggregateOutputType | null - _sum: ProductSumAggregateOutputType | null - _min: ProductMinAggregateOutputType | null - _max: ProductMaxAggregateOutputType | null -} - -export type ProductAvgAggregateOutputType = { - basePrice: runtime.Decimal | null - setupFee: runtime.Decimal | null - displayOrder: number | null -} - -export type ProductSumAggregateOutputType = { - basePrice: runtime.Decimal | null - setupFee: runtime.Decimal | null - displayOrder: number | null -} - -export type ProductMinAggregateOutputType = { - id: string | null - name: string | null - description: string | null - category: string | null - basePrice: runtime.Decimal | null - setupFee: runtime.Decimal | null - currency: string | null - billingCycle: string | null - isActive: boolean | null - displayOrder: number | null - creatorId: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type ProductMaxAggregateOutputType = { - id: string | null - name: string | null - description: string | null - category: string | null - basePrice: runtime.Decimal | null - setupFee: runtime.Decimal | null - currency: string | null - billingCycle: string | null - isActive: boolean | null - displayOrder: number | null - creatorId: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type ProductCountAggregateOutputType = { - id: number - name: number - description: number - category: number - basePrice: number - setupFee: number - currency: number - billingCycle: number - isActive: number - displayOrder: number - creatorId: number - metadata: number - createdAt: number - updatedAt: number - _all: number -} - - -export type ProductAvgAggregateInputType = { - basePrice?: true - setupFee?: true - displayOrder?: true -} - -export type ProductSumAggregateInputType = { - basePrice?: true - setupFee?: true - displayOrder?: true -} - -export type ProductMinAggregateInputType = { - id?: true - name?: true - description?: true - category?: true - basePrice?: true - setupFee?: true - currency?: true - billingCycle?: true - isActive?: true - displayOrder?: true - creatorId?: true - createdAt?: true - updatedAt?: true -} - -export type ProductMaxAggregateInputType = { - id?: true - name?: true - description?: true - category?: true - basePrice?: true - setupFee?: true - currency?: true - billingCycle?: true - isActive?: true - displayOrder?: true - creatorId?: true - createdAt?: true - updatedAt?: true -} - -export type ProductCountAggregateInputType = { - id?: true - name?: true - description?: true - category?: true - basePrice?: true - setupFee?: true - currency?: true - billingCycle?: true - isActive?: true - displayOrder?: true - creatorId?: true - metadata?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type ProductAggregateArgs = { - /** - * Filter which Product to aggregate. - */ - where?: Prisma.ProductWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Products to fetch. - */ - orderBy?: Prisma.ProductOrderByWithRelationInput | Prisma.ProductOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.ProductWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Products from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Products. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned Products - **/ - _count?: true | ProductCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: ProductAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: ProductSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: ProductMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: ProductMaxAggregateInputType -} - -export type GetProductAggregateType = { - [P in keyof T & keyof AggregateProduct]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type ProductGroupByArgs = { - where?: Prisma.ProductWhereInput - orderBy?: Prisma.ProductOrderByWithAggregationInput | Prisma.ProductOrderByWithAggregationInput[] - by: Prisma.ProductScalarFieldEnum[] | Prisma.ProductScalarFieldEnum - having?: Prisma.ProductScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: ProductCountAggregateInputType | true - _avg?: ProductAvgAggregateInputType - _sum?: ProductSumAggregateInputType - _min?: ProductMinAggregateInputType - _max?: ProductMaxAggregateInputType -} - -export type ProductGroupByOutputType = { - id: string - name: string - description: string | null - category: string - basePrice: runtime.Decimal - setupFee: runtime.Decimal - currency: string - billingCycle: string - isActive: boolean - displayOrder: number - creatorId: string - metadata: runtime.JsonValue | null - createdAt: Date - updatedAt: Date - _count: ProductCountAggregateOutputType | null - _avg: ProductAvgAggregateOutputType | null - _sum: ProductSumAggregateOutputType | null - _min: ProductMinAggregateOutputType | null - _max: ProductMaxAggregateOutputType | null -} - -type GetProductGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof ProductGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type ProductWhereInput = { - AND?: Prisma.ProductWhereInput | Prisma.ProductWhereInput[] - OR?: Prisma.ProductWhereInput[] - NOT?: Prisma.ProductWhereInput | Prisma.ProductWhereInput[] - id?: Prisma.StringFilter<"Product"> | string - name?: Prisma.StringFilter<"Product"> | string - description?: Prisma.StringNullableFilter<"Product"> | string | null - category?: Prisma.StringFilter<"Product"> | string - basePrice?: Prisma.DecimalFilter<"Product"> | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFilter<"Product"> | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFilter<"Product"> | string - billingCycle?: Prisma.StringFilter<"Product"> | string - isActive?: Prisma.BoolFilter<"Product"> | boolean - displayOrder?: Prisma.IntFilter<"Product"> | number - creatorId?: Prisma.StringFilter<"Product"> | string - metadata?: Prisma.JsonNullableFilter<"Product"> - createdAt?: Prisma.DateTimeFilter<"Product"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Product"> | Date | string - creator?: Prisma.XOR - servers?: Prisma.ServerListRelationFilter - invoices?: Prisma.InvoiceItemListRelationFilter -} - -export type ProductOrderByWithRelationInput = { - id?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - category?: Prisma.SortOrder - basePrice?: Prisma.SortOrder - setupFee?: Prisma.SortOrder - currency?: Prisma.SortOrder - billingCycle?: Prisma.SortOrder - isActive?: Prisma.SortOrder - displayOrder?: Prisma.SortOrder - creatorId?: Prisma.SortOrder - metadata?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - creator?: Prisma.UserOrderByWithRelationInput - servers?: Prisma.ServerOrderByRelationAggregateInput - invoices?: Prisma.InvoiceItemOrderByRelationAggregateInput -} - -export type ProductWhereUniqueInput = Prisma.AtLeast<{ - id?: string - AND?: Prisma.ProductWhereInput | Prisma.ProductWhereInput[] - OR?: Prisma.ProductWhereInput[] - NOT?: Prisma.ProductWhereInput | Prisma.ProductWhereInput[] - name?: Prisma.StringFilter<"Product"> | string - description?: Prisma.StringNullableFilter<"Product"> | string | null - category?: Prisma.StringFilter<"Product"> | string - basePrice?: Prisma.DecimalFilter<"Product"> | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFilter<"Product"> | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFilter<"Product"> | string - billingCycle?: Prisma.StringFilter<"Product"> | string - isActive?: Prisma.BoolFilter<"Product"> | boolean - displayOrder?: Prisma.IntFilter<"Product"> | number - creatorId?: Prisma.StringFilter<"Product"> | string - metadata?: Prisma.JsonNullableFilter<"Product"> - createdAt?: Prisma.DateTimeFilter<"Product"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Product"> | Date | string - creator?: Prisma.XOR - servers?: Prisma.ServerListRelationFilter - invoices?: Prisma.InvoiceItemListRelationFilter -}, "id"> - -export type ProductOrderByWithAggregationInput = { - id?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - category?: Prisma.SortOrder - basePrice?: Prisma.SortOrder - setupFee?: Prisma.SortOrder - currency?: Prisma.SortOrder - billingCycle?: Prisma.SortOrder - isActive?: Prisma.SortOrder - displayOrder?: Prisma.SortOrder - creatorId?: Prisma.SortOrder - metadata?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.ProductCountOrderByAggregateInput - _avg?: Prisma.ProductAvgOrderByAggregateInput - _max?: Prisma.ProductMaxOrderByAggregateInput - _min?: Prisma.ProductMinOrderByAggregateInput - _sum?: Prisma.ProductSumOrderByAggregateInput -} - -export type ProductScalarWhereWithAggregatesInput = { - AND?: Prisma.ProductScalarWhereWithAggregatesInput | Prisma.ProductScalarWhereWithAggregatesInput[] - OR?: Prisma.ProductScalarWhereWithAggregatesInput[] - NOT?: Prisma.ProductScalarWhereWithAggregatesInput | Prisma.ProductScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"Product"> | string - name?: Prisma.StringWithAggregatesFilter<"Product"> | string - description?: Prisma.StringNullableWithAggregatesFilter<"Product"> | string | null - category?: Prisma.StringWithAggregatesFilter<"Product"> | string - basePrice?: Prisma.DecimalWithAggregatesFilter<"Product"> | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalWithAggregatesFilter<"Product"> | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringWithAggregatesFilter<"Product"> | string - billingCycle?: Prisma.StringWithAggregatesFilter<"Product"> | string - isActive?: Prisma.BoolWithAggregatesFilter<"Product"> | boolean - displayOrder?: Prisma.IntWithAggregatesFilter<"Product"> | number - creatorId?: Prisma.StringWithAggregatesFilter<"Product"> | string - metadata?: Prisma.JsonNullableWithAggregatesFilter<"Product"> - createdAt?: Prisma.DateTimeWithAggregatesFilter<"Product"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Product"> | Date | string -} - -export type ProductCreateInput = { - id?: string - name: string - description?: string | null - category: string - basePrice: runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: string - billingCycle?: string - isActive?: boolean - displayOrder?: number - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - creator: Prisma.UserCreateNestedOneWithoutProductsInput - servers?: Prisma.ServerCreateNestedManyWithoutProductInput - invoices?: Prisma.InvoiceItemCreateNestedManyWithoutProductInput -} - -export type ProductUncheckedCreateInput = { - id?: string - name: string - description?: string | null - category: string - basePrice: runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: string - billingCycle?: string - isActive?: boolean - displayOrder?: number - creatorId: string - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutProductInput - invoices?: Prisma.InvoiceItemUncheckedCreateNestedManyWithoutProductInput -} - -export type ProductUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - category?: Prisma.StringFieldUpdateOperationsInput | string - basePrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFieldUpdateOperationsInput | string - billingCycle?: Prisma.StringFieldUpdateOperationsInput | string - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - displayOrder?: Prisma.IntFieldUpdateOperationsInput | number - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - creator?: Prisma.UserUpdateOneRequiredWithoutProductsNestedInput - servers?: Prisma.ServerUpdateManyWithoutProductNestedInput - invoices?: Prisma.InvoiceItemUpdateManyWithoutProductNestedInput -} - -export type ProductUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - category?: Prisma.StringFieldUpdateOperationsInput | string - basePrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFieldUpdateOperationsInput | string - billingCycle?: Prisma.StringFieldUpdateOperationsInput | string - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - displayOrder?: Prisma.IntFieldUpdateOperationsInput | number - creatorId?: Prisma.StringFieldUpdateOperationsInput | string - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - servers?: Prisma.ServerUncheckedUpdateManyWithoutProductNestedInput - invoices?: Prisma.InvoiceItemUncheckedUpdateManyWithoutProductNestedInput -} - -export type ProductCreateManyInput = { - id?: string - name: string - description?: string | null - category: string - basePrice: runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: string - billingCycle?: string - isActive?: boolean - displayOrder?: number - creatorId: string - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ProductUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - category?: Prisma.StringFieldUpdateOperationsInput | string - basePrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFieldUpdateOperationsInput | string - billingCycle?: Prisma.StringFieldUpdateOperationsInput | string - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - displayOrder?: Prisma.IntFieldUpdateOperationsInput | number - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ProductUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - category?: Prisma.StringFieldUpdateOperationsInput | string - basePrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFieldUpdateOperationsInput | string - billingCycle?: Prisma.StringFieldUpdateOperationsInput | string - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - displayOrder?: Prisma.IntFieldUpdateOperationsInput | number - creatorId?: Prisma.StringFieldUpdateOperationsInput | string - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ProductListRelationFilter = { - every?: Prisma.ProductWhereInput - some?: Prisma.ProductWhereInput - none?: Prisma.ProductWhereInput -} - -export type ProductOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type ProductNullableScalarRelationFilter = { - is?: Prisma.ProductWhereInput | null - isNot?: Prisma.ProductWhereInput | null -} - -export type ProductCountOrderByAggregateInput = { - id?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - category?: Prisma.SortOrder - basePrice?: Prisma.SortOrder - setupFee?: Prisma.SortOrder - currency?: Prisma.SortOrder - billingCycle?: Prisma.SortOrder - isActive?: Prisma.SortOrder - displayOrder?: Prisma.SortOrder - creatorId?: Prisma.SortOrder - metadata?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ProductAvgOrderByAggregateInput = { - basePrice?: Prisma.SortOrder - setupFee?: Prisma.SortOrder - displayOrder?: Prisma.SortOrder -} - -export type ProductMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - category?: Prisma.SortOrder - basePrice?: Prisma.SortOrder - setupFee?: Prisma.SortOrder - currency?: Prisma.SortOrder - billingCycle?: Prisma.SortOrder - isActive?: Prisma.SortOrder - displayOrder?: Prisma.SortOrder - creatorId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ProductMinOrderByAggregateInput = { - id?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - category?: Prisma.SortOrder - basePrice?: Prisma.SortOrder - setupFee?: Prisma.SortOrder - currency?: Prisma.SortOrder - billingCycle?: Prisma.SortOrder - isActive?: Prisma.SortOrder - displayOrder?: Prisma.SortOrder - creatorId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ProductSumOrderByAggregateInput = { - basePrice?: Prisma.SortOrder - setupFee?: Prisma.SortOrder - displayOrder?: Prisma.SortOrder -} - -export type ProductCreateNestedManyWithoutCreatorInput = { - create?: Prisma.XOR | Prisma.ProductCreateWithoutCreatorInput[] | Prisma.ProductUncheckedCreateWithoutCreatorInput[] - connectOrCreate?: Prisma.ProductCreateOrConnectWithoutCreatorInput | Prisma.ProductCreateOrConnectWithoutCreatorInput[] - createMany?: Prisma.ProductCreateManyCreatorInputEnvelope - connect?: Prisma.ProductWhereUniqueInput | Prisma.ProductWhereUniqueInput[] -} - -export type ProductUncheckedCreateNestedManyWithoutCreatorInput = { - create?: Prisma.XOR | Prisma.ProductCreateWithoutCreatorInput[] | Prisma.ProductUncheckedCreateWithoutCreatorInput[] - connectOrCreate?: Prisma.ProductCreateOrConnectWithoutCreatorInput | Prisma.ProductCreateOrConnectWithoutCreatorInput[] - createMany?: Prisma.ProductCreateManyCreatorInputEnvelope - connect?: Prisma.ProductWhereUniqueInput | Prisma.ProductWhereUniqueInput[] -} - -export type ProductUpdateManyWithoutCreatorNestedInput = { - create?: Prisma.XOR | Prisma.ProductCreateWithoutCreatorInput[] | Prisma.ProductUncheckedCreateWithoutCreatorInput[] - connectOrCreate?: Prisma.ProductCreateOrConnectWithoutCreatorInput | Prisma.ProductCreateOrConnectWithoutCreatorInput[] - upsert?: Prisma.ProductUpsertWithWhereUniqueWithoutCreatorInput | Prisma.ProductUpsertWithWhereUniqueWithoutCreatorInput[] - createMany?: Prisma.ProductCreateManyCreatorInputEnvelope - set?: Prisma.ProductWhereUniqueInput | Prisma.ProductWhereUniqueInput[] - disconnect?: Prisma.ProductWhereUniqueInput | Prisma.ProductWhereUniqueInput[] - delete?: Prisma.ProductWhereUniqueInput | Prisma.ProductWhereUniqueInput[] - connect?: Prisma.ProductWhereUniqueInput | Prisma.ProductWhereUniqueInput[] - update?: Prisma.ProductUpdateWithWhereUniqueWithoutCreatorInput | Prisma.ProductUpdateWithWhereUniqueWithoutCreatorInput[] - updateMany?: Prisma.ProductUpdateManyWithWhereWithoutCreatorInput | Prisma.ProductUpdateManyWithWhereWithoutCreatorInput[] - deleteMany?: Prisma.ProductScalarWhereInput | Prisma.ProductScalarWhereInput[] -} - -export type ProductUncheckedUpdateManyWithoutCreatorNestedInput = { - create?: Prisma.XOR | Prisma.ProductCreateWithoutCreatorInput[] | Prisma.ProductUncheckedCreateWithoutCreatorInput[] - connectOrCreate?: Prisma.ProductCreateOrConnectWithoutCreatorInput | Prisma.ProductCreateOrConnectWithoutCreatorInput[] - upsert?: Prisma.ProductUpsertWithWhereUniqueWithoutCreatorInput | Prisma.ProductUpsertWithWhereUniqueWithoutCreatorInput[] - createMany?: Prisma.ProductCreateManyCreatorInputEnvelope - set?: Prisma.ProductWhereUniqueInput | Prisma.ProductWhereUniqueInput[] - disconnect?: Prisma.ProductWhereUniqueInput | Prisma.ProductWhereUniqueInput[] - delete?: Prisma.ProductWhereUniqueInput | Prisma.ProductWhereUniqueInput[] - connect?: Prisma.ProductWhereUniqueInput | Prisma.ProductWhereUniqueInput[] - update?: Prisma.ProductUpdateWithWhereUniqueWithoutCreatorInput | Prisma.ProductUpdateWithWhereUniqueWithoutCreatorInput[] - updateMany?: Prisma.ProductUpdateManyWithWhereWithoutCreatorInput | Prisma.ProductUpdateManyWithWhereWithoutCreatorInput[] - deleteMany?: Prisma.ProductScalarWhereInput | Prisma.ProductScalarWhereInput[] -} - -export type ProductCreateNestedOneWithoutServersInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ProductCreateOrConnectWithoutServersInput - connect?: Prisma.ProductWhereUniqueInput -} - -export type ProductUpdateOneWithoutServersNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ProductCreateOrConnectWithoutServersInput - upsert?: Prisma.ProductUpsertWithoutServersInput - disconnect?: Prisma.ProductWhereInput | boolean - delete?: Prisma.ProductWhereInput | boolean - connect?: Prisma.ProductWhereUniqueInput - update?: Prisma.XOR, Prisma.ProductUncheckedUpdateWithoutServersInput> -} - -export type ProductCreateNestedOneWithoutInvoicesInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ProductCreateOrConnectWithoutInvoicesInput - connect?: Prisma.ProductWhereUniqueInput -} - -export type ProductUpdateOneWithoutInvoicesNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ProductCreateOrConnectWithoutInvoicesInput - upsert?: Prisma.ProductUpsertWithoutInvoicesInput - disconnect?: Prisma.ProductWhereInput | boolean - delete?: Prisma.ProductWhereInput | boolean - connect?: Prisma.ProductWhereUniqueInput - update?: Prisma.XOR, Prisma.ProductUncheckedUpdateWithoutInvoicesInput> -} - -export type ProductCreateWithoutCreatorInput = { - id?: string - name: string - description?: string | null - category: string - basePrice: runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: string - billingCycle?: string - isActive?: boolean - displayOrder?: number - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - servers?: Prisma.ServerCreateNestedManyWithoutProductInput - invoices?: Prisma.InvoiceItemCreateNestedManyWithoutProductInput -} - -export type ProductUncheckedCreateWithoutCreatorInput = { - id?: string - name: string - description?: string | null - category: string - basePrice: runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: string - billingCycle?: string - isActive?: boolean - displayOrder?: number - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutProductInput - invoices?: Prisma.InvoiceItemUncheckedCreateNestedManyWithoutProductInput -} - -export type ProductCreateOrConnectWithoutCreatorInput = { - where: Prisma.ProductWhereUniqueInput - create: Prisma.XOR -} - -export type ProductCreateManyCreatorInputEnvelope = { - data: Prisma.ProductCreateManyCreatorInput | Prisma.ProductCreateManyCreatorInput[] - skipDuplicates?: boolean -} - -export type ProductUpsertWithWhereUniqueWithoutCreatorInput = { - where: Prisma.ProductWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type ProductUpdateWithWhereUniqueWithoutCreatorInput = { - where: Prisma.ProductWhereUniqueInput - data: Prisma.XOR -} - -export type ProductUpdateManyWithWhereWithoutCreatorInput = { - where: Prisma.ProductScalarWhereInput - data: Prisma.XOR -} - -export type ProductScalarWhereInput = { - AND?: Prisma.ProductScalarWhereInput | Prisma.ProductScalarWhereInput[] - OR?: Prisma.ProductScalarWhereInput[] - NOT?: Prisma.ProductScalarWhereInput | Prisma.ProductScalarWhereInput[] - id?: Prisma.StringFilter<"Product"> | string - name?: Prisma.StringFilter<"Product"> | string - description?: Prisma.StringNullableFilter<"Product"> | string | null - category?: Prisma.StringFilter<"Product"> | string - basePrice?: Prisma.DecimalFilter<"Product"> | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFilter<"Product"> | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFilter<"Product"> | string - billingCycle?: Prisma.StringFilter<"Product"> | string - isActive?: Prisma.BoolFilter<"Product"> | boolean - displayOrder?: Prisma.IntFilter<"Product"> | number - creatorId?: Prisma.StringFilter<"Product"> | string - metadata?: Prisma.JsonNullableFilter<"Product"> - createdAt?: Prisma.DateTimeFilter<"Product"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Product"> | Date | string -} - -export type ProductCreateWithoutServersInput = { - id?: string - name: string - description?: string | null - category: string - basePrice: runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: string - billingCycle?: string - isActive?: boolean - displayOrder?: number - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - creator: Prisma.UserCreateNestedOneWithoutProductsInput - invoices?: Prisma.InvoiceItemCreateNestedManyWithoutProductInput -} - -export type ProductUncheckedCreateWithoutServersInput = { - id?: string - name: string - description?: string | null - category: string - basePrice: runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: string - billingCycle?: string - isActive?: boolean - displayOrder?: number - creatorId: string - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - invoices?: Prisma.InvoiceItemUncheckedCreateNestedManyWithoutProductInput -} - -export type ProductCreateOrConnectWithoutServersInput = { - where: Prisma.ProductWhereUniqueInput - create: Prisma.XOR -} - -export type ProductUpsertWithoutServersInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.ProductWhereInput -} - -export type ProductUpdateToOneWithWhereWithoutServersInput = { - where?: Prisma.ProductWhereInput - data: Prisma.XOR -} - -export type ProductUpdateWithoutServersInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - category?: Prisma.StringFieldUpdateOperationsInput | string - basePrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFieldUpdateOperationsInput | string - billingCycle?: Prisma.StringFieldUpdateOperationsInput | string - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - displayOrder?: Prisma.IntFieldUpdateOperationsInput | number - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - creator?: Prisma.UserUpdateOneRequiredWithoutProductsNestedInput - invoices?: Prisma.InvoiceItemUpdateManyWithoutProductNestedInput -} - -export type ProductUncheckedUpdateWithoutServersInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - category?: Prisma.StringFieldUpdateOperationsInput | string - basePrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFieldUpdateOperationsInput | string - billingCycle?: Prisma.StringFieldUpdateOperationsInput | string - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - displayOrder?: Prisma.IntFieldUpdateOperationsInput | number - creatorId?: Prisma.StringFieldUpdateOperationsInput | string - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - invoices?: Prisma.InvoiceItemUncheckedUpdateManyWithoutProductNestedInput -} - -export type ProductCreateWithoutInvoicesInput = { - id?: string - name: string - description?: string | null - category: string - basePrice: runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: string - billingCycle?: string - isActive?: boolean - displayOrder?: number - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - creator: Prisma.UserCreateNestedOneWithoutProductsInput - servers?: Prisma.ServerCreateNestedManyWithoutProductInput -} - -export type ProductUncheckedCreateWithoutInvoicesInput = { - id?: string - name: string - description?: string | null - category: string - basePrice: runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: string - billingCycle?: string - isActive?: boolean - displayOrder?: number - creatorId: string - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutProductInput -} - -export type ProductCreateOrConnectWithoutInvoicesInput = { - where: Prisma.ProductWhereUniqueInput - create: Prisma.XOR -} - -export type ProductUpsertWithoutInvoicesInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.ProductWhereInput -} - -export type ProductUpdateToOneWithWhereWithoutInvoicesInput = { - where?: Prisma.ProductWhereInput - data: Prisma.XOR -} - -export type ProductUpdateWithoutInvoicesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - category?: Prisma.StringFieldUpdateOperationsInput | string - basePrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFieldUpdateOperationsInput | string - billingCycle?: Prisma.StringFieldUpdateOperationsInput | string - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - displayOrder?: Prisma.IntFieldUpdateOperationsInput | number - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - creator?: Prisma.UserUpdateOneRequiredWithoutProductsNestedInput - servers?: Prisma.ServerUpdateManyWithoutProductNestedInput -} - -export type ProductUncheckedUpdateWithoutInvoicesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - category?: Prisma.StringFieldUpdateOperationsInput | string - basePrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFieldUpdateOperationsInput | string - billingCycle?: Prisma.StringFieldUpdateOperationsInput | string - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - displayOrder?: Prisma.IntFieldUpdateOperationsInput | number - creatorId?: Prisma.StringFieldUpdateOperationsInput | string - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - servers?: Prisma.ServerUncheckedUpdateManyWithoutProductNestedInput -} - -export type ProductCreateManyCreatorInput = { - id?: string - name: string - description?: string | null - category: string - basePrice: runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: string - billingCycle?: string - isActive?: boolean - displayOrder?: number - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ProductUpdateWithoutCreatorInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - category?: Prisma.StringFieldUpdateOperationsInput | string - basePrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFieldUpdateOperationsInput | string - billingCycle?: Prisma.StringFieldUpdateOperationsInput | string - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - displayOrder?: Prisma.IntFieldUpdateOperationsInput | number - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - servers?: Prisma.ServerUpdateManyWithoutProductNestedInput - invoices?: Prisma.InvoiceItemUpdateManyWithoutProductNestedInput -} - -export type ProductUncheckedUpdateWithoutCreatorInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - category?: Prisma.StringFieldUpdateOperationsInput | string - basePrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFieldUpdateOperationsInput | string - billingCycle?: Prisma.StringFieldUpdateOperationsInput | string - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - displayOrder?: Prisma.IntFieldUpdateOperationsInput | number - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - servers?: Prisma.ServerUncheckedUpdateManyWithoutProductNestedInput - invoices?: Prisma.InvoiceItemUncheckedUpdateManyWithoutProductNestedInput -} - -export type ProductUncheckedUpdateManyWithoutCreatorInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - category?: Prisma.StringFieldUpdateOperationsInput | string - basePrice?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - setupFee?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - currency?: Prisma.StringFieldUpdateOperationsInput | string - billingCycle?: Prisma.StringFieldUpdateOperationsInput | string - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - displayOrder?: Prisma.IntFieldUpdateOperationsInput | number - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - -/** - * Count Type ProductCountOutputType - */ - -export type ProductCountOutputType = { - servers: number - invoices: number -} - -export type ProductCountOutputTypeSelect = { - servers?: boolean | ProductCountOutputTypeCountServersArgs - invoices?: boolean | ProductCountOutputTypeCountInvoicesArgs -} - -/** - * ProductCountOutputType without action - */ -export type ProductCountOutputTypeDefaultArgs = { - /** - * Select specific fields to fetch from the ProductCountOutputType - */ - select?: Prisma.ProductCountOutputTypeSelect | null -} - -/** - * ProductCountOutputType without action - */ -export type ProductCountOutputTypeCountServersArgs = { - where?: Prisma.ServerWhereInput -} - -/** - * ProductCountOutputType without action - */ -export type ProductCountOutputTypeCountInvoicesArgs = { - where?: Prisma.InvoiceItemWhereInput -} - - -export type ProductSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - name?: boolean - description?: boolean - category?: boolean - basePrice?: boolean - setupFee?: boolean - currency?: boolean - billingCycle?: boolean - isActive?: boolean - displayOrder?: boolean - creatorId?: boolean - metadata?: boolean - createdAt?: boolean - updatedAt?: boolean - creator?: boolean | Prisma.UserDefaultArgs - servers?: boolean | Prisma.Product$serversArgs - invoices?: boolean | Prisma.Product$invoicesArgs - _count?: boolean | Prisma.ProductCountOutputTypeDefaultArgs -}, ExtArgs["result"]["product"]> - -export type ProductSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - name?: boolean - description?: boolean - category?: boolean - basePrice?: boolean - setupFee?: boolean - currency?: boolean - billingCycle?: boolean - isActive?: boolean - displayOrder?: boolean - creatorId?: boolean - metadata?: boolean - createdAt?: boolean - updatedAt?: boolean - creator?: boolean | Prisma.UserDefaultArgs -}, ExtArgs["result"]["product"]> - -export type ProductSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - name?: boolean - description?: boolean - category?: boolean - basePrice?: boolean - setupFee?: boolean - currency?: boolean - billingCycle?: boolean - isActive?: boolean - displayOrder?: boolean - creatorId?: boolean - metadata?: boolean - createdAt?: boolean - updatedAt?: boolean - creator?: boolean | Prisma.UserDefaultArgs -}, ExtArgs["result"]["product"]> - -export type ProductSelectScalar = { - id?: boolean - name?: boolean - description?: boolean - category?: boolean - basePrice?: boolean - setupFee?: boolean - currency?: boolean - billingCycle?: boolean - isActive?: boolean - displayOrder?: boolean - creatorId?: boolean - metadata?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type ProductOmit = runtime.Types.Extensions.GetOmit<"id" | "name" | "description" | "category" | "basePrice" | "setupFee" | "currency" | "billingCycle" | "isActive" | "displayOrder" | "creatorId" | "metadata" | "createdAt" | "updatedAt", ExtArgs["result"]["product"]> -export type ProductInclude = { - creator?: boolean | Prisma.UserDefaultArgs - servers?: boolean | Prisma.Product$serversArgs - invoices?: boolean | Prisma.Product$invoicesArgs - _count?: boolean | Prisma.ProductCountOutputTypeDefaultArgs -} -export type ProductIncludeCreateManyAndReturn = { - creator?: boolean | Prisma.UserDefaultArgs -} -export type ProductIncludeUpdateManyAndReturn = { - creator?: boolean | Prisma.UserDefaultArgs -} - -export type $ProductPayload = { - name: "Product" - objects: { - creator: Prisma.$UserPayload - servers: Prisma.$ServerPayload[] - invoices: Prisma.$InvoiceItemPayload[] - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - name: string - description: string | null - category: string - basePrice: runtime.Decimal - setupFee: runtime.Decimal - currency: string - billingCycle: string - isActive: boolean - displayOrder: number - creatorId: string - metadata: runtime.JsonValue | null - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["product"]> - composites: {} -} - -export type ProductGetPayload = runtime.Types.Result.GetResult - -export type ProductCountArgs = - Omit & { - select?: ProductCountAggregateInputType | true - } - -export interface ProductDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['Product'], meta: { name: 'Product' } } - /** - * Find zero or one Product that matches the filter. - * @param {ProductFindUniqueArgs} args - Arguments to find a Product - * @example - * // Get one Product - * const product = await prisma.product.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__ProductClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one Product that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {ProductFindUniqueOrThrowArgs} args - Arguments to find a Product - * @example - * // Get one Product - * const product = await prisma.product.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__ProductClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Product that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ProductFindFirstArgs} args - Arguments to find a Product - * @example - * // Get one Product - * const product = await prisma.product.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__ProductClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Product that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ProductFindFirstOrThrowArgs} args - Arguments to find a Product - * @example - * // Get one Product - * const product = await prisma.product.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__ProductClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more Products that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ProductFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all Products - * const products = await prisma.product.findMany() - * - * // Get first 10 Products - * const products = await prisma.product.findMany({ take: 10 }) - * - * // Only select the `id` - * const productWithIdOnly = await prisma.product.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a Product. - * @param {ProductCreateArgs} args - Arguments to create a Product. - * @example - * // Create one Product - * const Product = await prisma.product.create({ - * data: { - * // ... data to create a Product - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__ProductClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many Products. - * @param {ProductCreateManyArgs} args - Arguments to create many Products. - * @example - * // Create many Products - * const product = await prisma.product.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many Products and returns the data saved in the database. - * @param {ProductCreateManyAndReturnArgs} args - Arguments to create many Products. - * @example - * // Create many Products - * const product = await prisma.product.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many Products and only return the `id` - * const productWithIdOnly = await prisma.product.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a Product. - * @param {ProductDeleteArgs} args - Arguments to delete one Product. - * @example - * // Delete one Product - * const Product = await prisma.product.delete({ - * where: { - * // ... filter to delete one Product - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__ProductClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one Product. - * @param {ProductUpdateArgs} args - Arguments to update one Product. - * @example - * // Update one Product - * const product = await prisma.product.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__ProductClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more Products. - * @param {ProductDeleteManyArgs} args - Arguments to filter Products to delete. - * @example - * // Delete a few Products - * const { count } = await prisma.product.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Products. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ProductUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many Products - * const product = await prisma.product.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Products and returns the data updated in the database. - * @param {ProductUpdateManyAndReturnArgs} args - Arguments to update many Products. - * @example - * // Update many Products - * const product = await prisma.product.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more Products and only return the `id` - * const productWithIdOnly = await prisma.product.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one Product. - * @param {ProductUpsertArgs} args - Arguments to update or create a Product. - * @example - * // Update or create a Product - * const product = await prisma.product.upsert({ - * create: { - * // ... data to create a Product - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the Product we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__ProductClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of Products. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ProductCountArgs} args - Arguments to filter Products to count. - * @example - * // Count the number of Products - * const count = await prisma.product.count({ - * where: { - * // ... the filter for the Products we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a Product. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ProductAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by Product. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ProductGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends ProductGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: ProductGroupByArgs['orderBy'] } - : { orderBy?: ProductGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetProductGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the Product model - */ -readonly fields: ProductFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for Product. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__ProductClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - creator = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - servers = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - invoices = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the Product model - */ -export interface ProductFieldRefs { - readonly id: Prisma.FieldRef<"Product", 'String'> - readonly name: Prisma.FieldRef<"Product", 'String'> - readonly description: Prisma.FieldRef<"Product", 'String'> - readonly category: Prisma.FieldRef<"Product", 'String'> - readonly basePrice: Prisma.FieldRef<"Product", 'Decimal'> - readonly setupFee: Prisma.FieldRef<"Product", 'Decimal'> - readonly currency: Prisma.FieldRef<"Product", 'String'> - readonly billingCycle: Prisma.FieldRef<"Product", 'String'> - readonly isActive: Prisma.FieldRef<"Product", 'Boolean'> - readonly displayOrder: Prisma.FieldRef<"Product", 'Int'> - readonly creatorId: Prisma.FieldRef<"Product", 'String'> - readonly metadata: Prisma.FieldRef<"Product", 'Json'> - readonly createdAt: Prisma.FieldRef<"Product", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"Product", 'DateTime'> -} - - -// Custom InputTypes -/** - * Product findUnique - */ -export type ProductFindUniqueArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelect | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductInclude | null - /** - * Filter, which Product to fetch. - */ - where: Prisma.ProductWhereUniqueInput -} - -/** - * Product findUniqueOrThrow - */ -export type ProductFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelect | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductInclude | null - /** - * Filter, which Product to fetch. - */ - where: Prisma.ProductWhereUniqueInput -} - -/** - * Product findFirst - */ -export type ProductFindFirstArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelect | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductInclude | null - /** - * Filter, which Product to fetch. - */ - where?: Prisma.ProductWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Products to fetch. - */ - orderBy?: Prisma.ProductOrderByWithRelationInput | Prisma.ProductOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Products. - */ - cursor?: Prisma.ProductWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Products from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Products. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Products. - */ - distinct?: Prisma.ProductScalarFieldEnum | Prisma.ProductScalarFieldEnum[] -} - -/** - * Product findFirstOrThrow - */ -export type ProductFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelect | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductInclude | null - /** - * Filter, which Product to fetch. - */ - where?: Prisma.ProductWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Products to fetch. - */ - orderBy?: Prisma.ProductOrderByWithRelationInput | Prisma.ProductOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Products. - */ - cursor?: Prisma.ProductWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Products from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Products. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Products. - */ - distinct?: Prisma.ProductScalarFieldEnum | Prisma.ProductScalarFieldEnum[] -} - -/** - * Product findMany - */ -export type ProductFindManyArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelect | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductInclude | null - /** - * Filter, which Products to fetch. - */ - where?: Prisma.ProductWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Products to fetch. - */ - orderBy?: Prisma.ProductOrderByWithRelationInput | Prisma.ProductOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing Products. - */ - cursor?: Prisma.ProductWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Products from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Products. - */ - skip?: number - distinct?: Prisma.ProductScalarFieldEnum | Prisma.ProductScalarFieldEnum[] -} - -/** - * Product create - */ -export type ProductCreateArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelect | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductInclude | null - /** - * The data needed to create a Product. - */ - data: Prisma.XOR -} - -/** - * Product createMany - */ -export type ProductCreateManyArgs = { - /** - * The data used to create many Products. - */ - data: Prisma.ProductCreateManyInput | Prisma.ProductCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Product createManyAndReturn - */ -export type ProductCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelectCreateManyAndReturn | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * The data used to create many Products. - */ - data: Prisma.ProductCreateManyInput | Prisma.ProductCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductIncludeCreateManyAndReturn | null -} - -/** - * Product update - */ -export type ProductUpdateArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelect | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductInclude | null - /** - * The data needed to update a Product. - */ - data: Prisma.XOR - /** - * Choose, which Product to update. - */ - where: Prisma.ProductWhereUniqueInput -} - -/** - * Product updateMany - */ -export type ProductUpdateManyArgs = { - /** - * The data used to update Products. - */ - data: Prisma.XOR - /** - * Filter which Products to update - */ - where?: Prisma.ProductWhereInput - /** - * Limit how many Products to update. - */ - limit?: number -} - -/** - * Product updateManyAndReturn - */ -export type ProductUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * The data used to update Products. - */ - data: Prisma.XOR - /** - * Filter which Products to update - */ - where?: Prisma.ProductWhereInput - /** - * Limit how many Products to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductIncludeUpdateManyAndReturn | null -} - -/** - * Product upsert - */ -export type ProductUpsertArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelect | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductInclude | null - /** - * The filter to search for the Product to update in case it exists. - */ - where: Prisma.ProductWhereUniqueInput - /** - * In case the Product found by the `where` argument doesn't exist, create a new Product with this data. - */ - create: Prisma.XOR - /** - * In case the Product was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * Product delete - */ -export type ProductDeleteArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelect | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductInclude | null - /** - * Filter which Product to delete. - */ - where: Prisma.ProductWhereUniqueInput -} - -/** - * Product deleteMany - */ -export type ProductDeleteManyArgs = { - /** - * Filter which Products to delete - */ - where?: Prisma.ProductWhereInput - /** - * Limit how many Products to delete. - */ - limit?: number -} - -/** - * Product.servers - */ -export type Product$serversArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - where?: Prisma.ServerWhereInput - orderBy?: Prisma.ServerOrderByWithRelationInput | Prisma.ServerOrderByWithRelationInput[] - cursor?: Prisma.ServerWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.ServerScalarFieldEnum | Prisma.ServerScalarFieldEnum[] -} - -/** - * Product.invoices - */ -export type Product$invoicesArgs = { - /** - * Select specific fields to fetch from the InvoiceItem - */ - select?: Prisma.InvoiceItemSelect | null - /** - * Omit specific fields from the InvoiceItem - */ - omit?: Prisma.InvoiceItemOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceItemInclude | null - where?: Prisma.InvoiceItemWhereInput - orderBy?: Prisma.InvoiceItemOrderByWithRelationInput | Prisma.InvoiceItemOrderByWithRelationInput[] - cursor?: Prisma.InvoiceItemWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.InvoiceItemScalarFieldEnum | Prisma.InvoiceItemScalarFieldEnum[] -} - -/** - * Product without action - */ -export type ProductDefaultArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelect | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductInclude | null -} diff --git a/prisma/generated/prisma/models/Server.ts b/prisma/generated/prisma/models/Server.ts deleted file mode 100644 index 7d91332..0000000 --- a/prisma/generated/prisma/models/Server.ts +++ /dev/null @@ -1,3770 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `Server` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model Server - * - */ -export type ServerModel = runtime.Types.Result.DefaultSelection - -export type AggregateServer = { - _count: ServerCountAggregateOutputType | null - _avg: ServerAvgAggregateOutputType | null - _sum: ServerSumAggregateOutputType | null - _min: ServerMinAggregateOutputType | null - _max: ServerMaxAggregateOutputType | null -} - -export type ServerAvgAggregateOutputType = { - pterodactylId: number | null - virtfusionId: number | null - nodeId: number | null - eggId: number | null -} - -export type ServerSumAggregateOutputType = { - pterodactylId: number | null - virtfusionId: number | null - nodeId: number | null - eggId: number | null -} - -export type ServerMinAggregateOutputType = { - id: string | null - pterodactylId: number | null - virtfusionId: number | null - uuid: string | null - uuidShort: string | null - externalId: string | null - panelType: string | null - name: string | null - description: string | null - status: $Enums.ServerStatus | null - isSuspended: boolean | null - productId: string | null - ownerId: string | null - nodeId: number | null - eggId: number | null - createdAt: Date | null - updatedAt: Date | null - installedAt: Date | null - lastSyncedAt: Date | null -} - -export type ServerMaxAggregateOutputType = { - id: string | null - pterodactylId: number | null - virtfusionId: number | null - uuid: string | null - uuidShort: string | null - externalId: string | null - panelType: string | null - name: string | null - description: string | null - status: $Enums.ServerStatus | null - isSuspended: boolean | null - productId: string | null - ownerId: string | null - nodeId: number | null - eggId: number | null - createdAt: Date | null - updatedAt: Date | null - installedAt: Date | null - lastSyncedAt: Date | null -} - -export type ServerCountAggregateOutputType = { - id: number - pterodactylId: number - virtfusionId: number - uuid: number - uuidShort: number - externalId: number - panelType: number - name: number - description: number - status: number - isSuspended: number - productId: number - ownerId: number - nodeId: number - eggId: number - createdAt: number - updatedAt: number - installedAt: number - lastSyncedAt: number - _all: number -} - - -export type ServerAvgAggregateInputType = { - pterodactylId?: true - virtfusionId?: true - nodeId?: true - eggId?: true -} - -export type ServerSumAggregateInputType = { - pterodactylId?: true - virtfusionId?: true - nodeId?: true - eggId?: true -} - -export type ServerMinAggregateInputType = { - id?: true - pterodactylId?: true - virtfusionId?: true - uuid?: true - uuidShort?: true - externalId?: true - panelType?: true - name?: true - description?: true - status?: true - isSuspended?: true - productId?: true - ownerId?: true - nodeId?: true - eggId?: true - createdAt?: true - updatedAt?: true - installedAt?: true - lastSyncedAt?: true -} - -export type ServerMaxAggregateInputType = { - id?: true - pterodactylId?: true - virtfusionId?: true - uuid?: true - uuidShort?: true - externalId?: true - panelType?: true - name?: true - description?: true - status?: true - isSuspended?: true - productId?: true - ownerId?: true - nodeId?: true - eggId?: true - createdAt?: true - updatedAt?: true - installedAt?: true - lastSyncedAt?: true -} - -export type ServerCountAggregateInputType = { - id?: true - pterodactylId?: true - virtfusionId?: true - uuid?: true - uuidShort?: true - externalId?: true - panelType?: true - name?: true - description?: true - status?: true - isSuspended?: true - productId?: true - ownerId?: true - nodeId?: true - eggId?: true - createdAt?: true - updatedAt?: true - installedAt?: true - lastSyncedAt?: true - _all?: true -} - -export type ServerAggregateArgs = { - /** - * Filter which Server to aggregate. - */ - where?: Prisma.ServerWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Servers to fetch. - */ - orderBy?: Prisma.ServerOrderByWithRelationInput | Prisma.ServerOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.ServerWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Servers from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Servers. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned Servers - **/ - _count?: true | ServerCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: ServerAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: ServerSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: ServerMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: ServerMaxAggregateInputType -} - -export type GetServerAggregateType = { - [P in keyof T & keyof AggregateServer]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type ServerGroupByArgs = { - where?: Prisma.ServerWhereInput - orderBy?: Prisma.ServerOrderByWithAggregationInput | Prisma.ServerOrderByWithAggregationInput[] - by: Prisma.ServerScalarFieldEnum[] | Prisma.ServerScalarFieldEnum - having?: Prisma.ServerScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: ServerCountAggregateInputType | true - _avg?: ServerAvgAggregateInputType - _sum?: ServerSumAggregateInputType - _min?: ServerMinAggregateInputType - _max?: ServerMaxAggregateInputType -} - -export type ServerGroupByOutputType = { - id: string - pterodactylId: number | null - virtfusionId: number | null - uuid: string - uuidShort: string | null - externalId: string | null - panelType: string - name: string - description: string | null - status: $Enums.ServerStatus - isSuspended: boolean - productId: string | null - ownerId: string - nodeId: number - eggId: number | null - createdAt: Date - updatedAt: Date - installedAt: Date | null - lastSyncedAt: Date | null - _count: ServerCountAggregateOutputType | null - _avg: ServerAvgAggregateOutputType | null - _sum: ServerSumAggregateOutputType | null - _min: ServerMinAggregateOutputType | null - _max: ServerMaxAggregateOutputType | null -} - -type GetServerGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof ServerGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type ServerWhereInput = { - AND?: Prisma.ServerWhereInput | Prisma.ServerWhereInput[] - OR?: Prisma.ServerWhereInput[] - NOT?: Prisma.ServerWhereInput | Prisma.ServerWhereInput[] - id?: Prisma.StringFilter<"Server"> | string - pterodactylId?: Prisma.IntNullableFilter<"Server"> | number | null - virtfusionId?: Prisma.IntNullableFilter<"Server"> | number | null - uuid?: Prisma.StringFilter<"Server"> | string - uuidShort?: Prisma.StringNullableFilter<"Server"> | string | null - externalId?: Prisma.StringNullableFilter<"Server"> | string | null - panelType?: Prisma.StringFilter<"Server"> | string - name?: Prisma.StringFilter<"Server"> | string - description?: Prisma.StringNullableFilter<"Server"> | string | null - status?: Prisma.EnumServerStatusFilter<"Server"> | $Enums.ServerStatus - isSuspended?: Prisma.BoolFilter<"Server"> | boolean - productId?: Prisma.StringNullableFilter<"Server"> | string | null - ownerId?: Prisma.StringFilter<"Server"> | string - nodeId?: Prisma.IntFilter<"Server"> | number - eggId?: Prisma.IntNullableFilter<"Server"> | number | null - createdAt?: Prisma.DateTimeFilter<"Server"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Server"> | Date | string - installedAt?: Prisma.DateTimeNullableFilter<"Server"> | Date | string | null - lastSyncedAt?: Prisma.DateTimeNullableFilter<"Server"> | Date | string | null - product?: Prisma.XOR | null - owner?: Prisma.XOR - node?: Prisma.XOR - egg?: Prisma.XOR | null - allocations?: Prisma.AllocationListRelationFilter - variables?: Prisma.ServerVariableListRelationFilter - databases?: Prisma.ServerDatabaseListRelationFilter - backups?: Prisma.ServerBackupListRelationFilter - properties?: Prisma.ServerPropertyListRelationFilter - tickets?: Prisma.SupportTicketListRelationFilter -} - -export type ServerOrderByWithRelationInput = { - id?: Prisma.SortOrder - pterodactylId?: Prisma.SortOrderInput | Prisma.SortOrder - virtfusionId?: Prisma.SortOrderInput | Prisma.SortOrder - uuid?: Prisma.SortOrder - uuidShort?: Prisma.SortOrderInput | Prisma.SortOrder - externalId?: Prisma.SortOrderInput | Prisma.SortOrder - panelType?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - status?: Prisma.SortOrder - isSuspended?: Prisma.SortOrder - productId?: Prisma.SortOrderInput | Prisma.SortOrder - ownerId?: Prisma.SortOrder - nodeId?: Prisma.SortOrder - eggId?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - installedAt?: Prisma.SortOrderInput | Prisma.SortOrder - lastSyncedAt?: Prisma.SortOrderInput | Prisma.SortOrder - product?: Prisma.ProductOrderByWithRelationInput - owner?: Prisma.UserOrderByWithRelationInput - node?: Prisma.NodeOrderByWithRelationInput - egg?: Prisma.EggOrderByWithRelationInput - allocations?: Prisma.AllocationOrderByRelationAggregateInput - variables?: Prisma.ServerVariableOrderByRelationAggregateInput - databases?: Prisma.ServerDatabaseOrderByRelationAggregateInput - backups?: Prisma.ServerBackupOrderByRelationAggregateInput - properties?: Prisma.ServerPropertyOrderByRelationAggregateInput - tickets?: Prisma.SupportTicketOrderByRelationAggregateInput -} - -export type ServerWhereUniqueInput = Prisma.AtLeast<{ - id?: string - pterodactylId?: number - virtfusionId?: number - uuid?: string - externalId?: string - AND?: Prisma.ServerWhereInput | Prisma.ServerWhereInput[] - OR?: Prisma.ServerWhereInput[] - NOT?: Prisma.ServerWhereInput | Prisma.ServerWhereInput[] - uuidShort?: Prisma.StringNullableFilter<"Server"> | string | null - panelType?: Prisma.StringFilter<"Server"> | string - name?: Prisma.StringFilter<"Server"> | string - description?: Prisma.StringNullableFilter<"Server"> | string | null - status?: Prisma.EnumServerStatusFilter<"Server"> | $Enums.ServerStatus - isSuspended?: Prisma.BoolFilter<"Server"> | boolean - productId?: Prisma.StringNullableFilter<"Server"> | string | null - ownerId?: Prisma.StringFilter<"Server"> | string - nodeId?: Prisma.IntFilter<"Server"> | number - eggId?: Prisma.IntNullableFilter<"Server"> | number | null - createdAt?: Prisma.DateTimeFilter<"Server"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Server"> | Date | string - installedAt?: Prisma.DateTimeNullableFilter<"Server"> | Date | string | null - lastSyncedAt?: Prisma.DateTimeNullableFilter<"Server"> | Date | string | null - product?: Prisma.XOR | null - owner?: Prisma.XOR - node?: Prisma.XOR - egg?: Prisma.XOR | null - allocations?: Prisma.AllocationListRelationFilter - variables?: Prisma.ServerVariableListRelationFilter - databases?: Prisma.ServerDatabaseListRelationFilter - backups?: Prisma.ServerBackupListRelationFilter - properties?: Prisma.ServerPropertyListRelationFilter - tickets?: Prisma.SupportTicketListRelationFilter -}, "id" | "pterodactylId" | "virtfusionId" | "uuid" | "externalId"> - -export type ServerOrderByWithAggregationInput = { - id?: Prisma.SortOrder - pterodactylId?: Prisma.SortOrderInput | Prisma.SortOrder - virtfusionId?: Prisma.SortOrderInput | Prisma.SortOrder - uuid?: Prisma.SortOrder - uuidShort?: Prisma.SortOrderInput | Prisma.SortOrder - externalId?: Prisma.SortOrderInput | Prisma.SortOrder - panelType?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrderInput | Prisma.SortOrder - status?: Prisma.SortOrder - isSuspended?: Prisma.SortOrder - productId?: Prisma.SortOrderInput | Prisma.SortOrder - ownerId?: Prisma.SortOrder - nodeId?: Prisma.SortOrder - eggId?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - installedAt?: Prisma.SortOrderInput | Prisma.SortOrder - lastSyncedAt?: Prisma.SortOrderInput | Prisma.SortOrder - _count?: Prisma.ServerCountOrderByAggregateInput - _avg?: Prisma.ServerAvgOrderByAggregateInput - _max?: Prisma.ServerMaxOrderByAggregateInput - _min?: Prisma.ServerMinOrderByAggregateInput - _sum?: Prisma.ServerSumOrderByAggregateInput -} - -export type ServerScalarWhereWithAggregatesInput = { - AND?: Prisma.ServerScalarWhereWithAggregatesInput | Prisma.ServerScalarWhereWithAggregatesInput[] - OR?: Prisma.ServerScalarWhereWithAggregatesInput[] - NOT?: Prisma.ServerScalarWhereWithAggregatesInput | Prisma.ServerScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"Server"> | string - pterodactylId?: Prisma.IntNullableWithAggregatesFilter<"Server"> | number | null - virtfusionId?: Prisma.IntNullableWithAggregatesFilter<"Server"> | number | null - uuid?: Prisma.StringWithAggregatesFilter<"Server"> | string - uuidShort?: Prisma.StringNullableWithAggregatesFilter<"Server"> | string | null - externalId?: Prisma.StringNullableWithAggregatesFilter<"Server"> | string | null - panelType?: Prisma.StringWithAggregatesFilter<"Server"> | string - name?: Prisma.StringWithAggregatesFilter<"Server"> | string - description?: Prisma.StringNullableWithAggregatesFilter<"Server"> | string | null - status?: Prisma.EnumServerStatusWithAggregatesFilter<"Server"> | $Enums.ServerStatus - isSuspended?: Prisma.BoolWithAggregatesFilter<"Server"> | boolean - productId?: Prisma.StringNullableWithAggregatesFilter<"Server"> | string | null - ownerId?: Prisma.StringWithAggregatesFilter<"Server"> | string - nodeId?: Prisma.IntWithAggregatesFilter<"Server"> | number - eggId?: Prisma.IntNullableWithAggregatesFilter<"Server"> | number | null - createdAt?: Prisma.DateTimeWithAggregatesFilter<"Server"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Server"> | Date | string - installedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"Server"> | Date | string | null - lastSyncedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"Server"> | Date | string | null -} - -export type ServerCreateInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - product?: Prisma.ProductCreateNestedOneWithoutServersInput - owner: Prisma.UserCreateNestedOneWithoutServersInput - node: Prisma.NodeCreateNestedOneWithoutServersInput - egg?: Prisma.EggCreateNestedOneWithoutServersInput - allocations?: Prisma.AllocationCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutServerInput -} - -export type ServerUncheckedCreateInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - ownerId: string - nodeId: number - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - allocations?: Prisma.AllocationUncheckedCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableUncheckedCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseUncheckedCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupUncheckedCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyUncheckedCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutServerInput -} - -export type ServerUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - product?: Prisma.ProductUpdateOneWithoutServersNestedInput - owner?: Prisma.UserUpdateOneRequiredWithoutServersNestedInput - node?: Prisma.NodeUpdateOneRequiredWithoutServersNestedInput - egg?: Prisma.EggUpdateOneWithoutServersNestedInput - allocations?: Prisma.AllocationUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - allocations?: Prisma.AllocationUncheckedUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUncheckedUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUncheckedUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUncheckedUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUncheckedUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutServerNestedInput -} - -export type ServerCreateManyInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - ownerId: string - nodeId: number - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null -} - -export type ServerUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type ServerUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type ServerListRelationFilter = { - every?: Prisma.ServerWhereInput - some?: Prisma.ServerWhereInput - none?: Prisma.ServerWhereInput -} - -export type ServerOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type ServerNullableScalarRelationFilter = { - is?: Prisma.ServerWhereInput | null - isNot?: Prisma.ServerWhereInput | null -} - -export type ServerCountOrderByAggregateInput = { - id?: Prisma.SortOrder - pterodactylId?: Prisma.SortOrder - virtfusionId?: Prisma.SortOrder - uuid?: Prisma.SortOrder - uuidShort?: Prisma.SortOrder - externalId?: Prisma.SortOrder - panelType?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - status?: Prisma.SortOrder - isSuspended?: Prisma.SortOrder - productId?: Prisma.SortOrder - ownerId?: Prisma.SortOrder - nodeId?: Prisma.SortOrder - eggId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - installedAt?: Prisma.SortOrder - lastSyncedAt?: Prisma.SortOrder -} - -export type ServerAvgOrderByAggregateInput = { - pterodactylId?: Prisma.SortOrder - virtfusionId?: Prisma.SortOrder - nodeId?: Prisma.SortOrder - eggId?: Prisma.SortOrder -} - -export type ServerMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - pterodactylId?: Prisma.SortOrder - virtfusionId?: Prisma.SortOrder - uuid?: Prisma.SortOrder - uuidShort?: Prisma.SortOrder - externalId?: Prisma.SortOrder - panelType?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - status?: Prisma.SortOrder - isSuspended?: Prisma.SortOrder - productId?: Prisma.SortOrder - ownerId?: Prisma.SortOrder - nodeId?: Prisma.SortOrder - eggId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - installedAt?: Prisma.SortOrder - lastSyncedAt?: Prisma.SortOrder -} - -export type ServerMinOrderByAggregateInput = { - id?: Prisma.SortOrder - pterodactylId?: Prisma.SortOrder - virtfusionId?: Prisma.SortOrder - uuid?: Prisma.SortOrder - uuidShort?: Prisma.SortOrder - externalId?: Prisma.SortOrder - panelType?: Prisma.SortOrder - name?: Prisma.SortOrder - description?: Prisma.SortOrder - status?: Prisma.SortOrder - isSuspended?: Prisma.SortOrder - productId?: Prisma.SortOrder - ownerId?: Prisma.SortOrder - nodeId?: Prisma.SortOrder - eggId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - installedAt?: Prisma.SortOrder - lastSyncedAt?: Prisma.SortOrder -} - -export type ServerSumOrderByAggregateInput = { - pterodactylId?: Prisma.SortOrder - virtfusionId?: Prisma.SortOrder - nodeId?: Prisma.SortOrder - eggId?: Prisma.SortOrder -} - -export type ServerScalarRelationFilter = { - is?: Prisma.ServerWhereInput - isNot?: Prisma.ServerWhereInput -} - -export type ServerCreateNestedManyWithoutOwnerInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutOwnerInput[] | Prisma.ServerUncheckedCreateWithoutOwnerInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutOwnerInput | Prisma.ServerCreateOrConnectWithoutOwnerInput[] - createMany?: Prisma.ServerCreateManyOwnerInputEnvelope - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] -} - -export type ServerUncheckedCreateNestedManyWithoutOwnerInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutOwnerInput[] | Prisma.ServerUncheckedCreateWithoutOwnerInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutOwnerInput | Prisma.ServerCreateOrConnectWithoutOwnerInput[] - createMany?: Prisma.ServerCreateManyOwnerInputEnvelope - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] -} - -export type ServerUpdateManyWithoutOwnerNestedInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutOwnerInput[] | Prisma.ServerUncheckedCreateWithoutOwnerInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutOwnerInput | Prisma.ServerCreateOrConnectWithoutOwnerInput[] - upsert?: Prisma.ServerUpsertWithWhereUniqueWithoutOwnerInput | Prisma.ServerUpsertWithWhereUniqueWithoutOwnerInput[] - createMany?: Prisma.ServerCreateManyOwnerInputEnvelope - set?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - disconnect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - delete?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - update?: Prisma.ServerUpdateWithWhereUniqueWithoutOwnerInput | Prisma.ServerUpdateWithWhereUniqueWithoutOwnerInput[] - updateMany?: Prisma.ServerUpdateManyWithWhereWithoutOwnerInput | Prisma.ServerUpdateManyWithWhereWithoutOwnerInput[] - deleteMany?: Prisma.ServerScalarWhereInput | Prisma.ServerScalarWhereInput[] -} - -export type ServerUncheckedUpdateManyWithoutOwnerNestedInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutOwnerInput[] | Prisma.ServerUncheckedCreateWithoutOwnerInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutOwnerInput | Prisma.ServerCreateOrConnectWithoutOwnerInput[] - upsert?: Prisma.ServerUpsertWithWhereUniqueWithoutOwnerInput | Prisma.ServerUpsertWithWhereUniqueWithoutOwnerInput[] - createMany?: Prisma.ServerCreateManyOwnerInputEnvelope - set?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - disconnect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - delete?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - update?: Prisma.ServerUpdateWithWhereUniqueWithoutOwnerInput | Prisma.ServerUpdateWithWhereUniqueWithoutOwnerInput[] - updateMany?: Prisma.ServerUpdateManyWithWhereWithoutOwnerInput | Prisma.ServerUpdateManyWithWhereWithoutOwnerInput[] - deleteMany?: Prisma.ServerScalarWhereInput | Prisma.ServerScalarWhereInput[] -} - -export type ServerCreateNestedManyWithoutNodeInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutNodeInput[] | Prisma.ServerUncheckedCreateWithoutNodeInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutNodeInput | Prisma.ServerCreateOrConnectWithoutNodeInput[] - createMany?: Prisma.ServerCreateManyNodeInputEnvelope - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] -} - -export type ServerUncheckedCreateNestedManyWithoutNodeInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutNodeInput[] | Prisma.ServerUncheckedCreateWithoutNodeInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutNodeInput | Prisma.ServerCreateOrConnectWithoutNodeInput[] - createMany?: Prisma.ServerCreateManyNodeInputEnvelope - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] -} - -export type ServerUpdateManyWithoutNodeNestedInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutNodeInput[] | Prisma.ServerUncheckedCreateWithoutNodeInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutNodeInput | Prisma.ServerCreateOrConnectWithoutNodeInput[] - upsert?: Prisma.ServerUpsertWithWhereUniqueWithoutNodeInput | Prisma.ServerUpsertWithWhereUniqueWithoutNodeInput[] - createMany?: Prisma.ServerCreateManyNodeInputEnvelope - set?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - disconnect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - delete?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - update?: Prisma.ServerUpdateWithWhereUniqueWithoutNodeInput | Prisma.ServerUpdateWithWhereUniqueWithoutNodeInput[] - updateMany?: Prisma.ServerUpdateManyWithWhereWithoutNodeInput | Prisma.ServerUpdateManyWithWhereWithoutNodeInput[] - deleteMany?: Prisma.ServerScalarWhereInput | Prisma.ServerScalarWhereInput[] -} - -export type ServerUncheckedUpdateManyWithoutNodeNestedInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutNodeInput[] | Prisma.ServerUncheckedCreateWithoutNodeInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutNodeInput | Prisma.ServerCreateOrConnectWithoutNodeInput[] - upsert?: Prisma.ServerUpsertWithWhereUniqueWithoutNodeInput | Prisma.ServerUpsertWithWhereUniqueWithoutNodeInput[] - createMany?: Prisma.ServerCreateManyNodeInputEnvelope - set?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - disconnect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - delete?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - update?: Prisma.ServerUpdateWithWhereUniqueWithoutNodeInput | Prisma.ServerUpdateWithWhereUniqueWithoutNodeInput[] - updateMany?: Prisma.ServerUpdateManyWithWhereWithoutNodeInput | Prisma.ServerUpdateManyWithWhereWithoutNodeInput[] - deleteMany?: Prisma.ServerScalarWhereInput | Prisma.ServerScalarWhereInput[] -} - -export type ServerCreateNestedOneWithoutAllocationsInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutAllocationsInput - connect?: Prisma.ServerWhereUniqueInput -} - -export type ServerUpdateOneWithoutAllocationsNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutAllocationsInput - upsert?: Prisma.ServerUpsertWithoutAllocationsInput - disconnect?: Prisma.ServerWhereInput | boolean - delete?: Prisma.ServerWhereInput | boolean - connect?: Prisma.ServerWhereUniqueInput - update?: Prisma.XOR, Prisma.ServerUncheckedUpdateWithoutAllocationsInput> -} - -export type ServerCreateNestedManyWithoutEggInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutEggInput[] | Prisma.ServerUncheckedCreateWithoutEggInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutEggInput | Prisma.ServerCreateOrConnectWithoutEggInput[] - createMany?: Prisma.ServerCreateManyEggInputEnvelope - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] -} - -export type ServerUncheckedCreateNestedManyWithoutEggInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutEggInput[] | Prisma.ServerUncheckedCreateWithoutEggInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutEggInput | Prisma.ServerCreateOrConnectWithoutEggInput[] - createMany?: Prisma.ServerCreateManyEggInputEnvelope - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] -} - -export type ServerUpdateManyWithoutEggNestedInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutEggInput[] | Prisma.ServerUncheckedCreateWithoutEggInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutEggInput | Prisma.ServerCreateOrConnectWithoutEggInput[] - upsert?: Prisma.ServerUpsertWithWhereUniqueWithoutEggInput | Prisma.ServerUpsertWithWhereUniqueWithoutEggInput[] - createMany?: Prisma.ServerCreateManyEggInputEnvelope - set?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - disconnect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - delete?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - update?: Prisma.ServerUpdateWithWhereUniqueWithoutEggInput | Prisma.ServerUpdateWithWhereUniqueWithoutEggInput[] - updateMany?: Prisma.ServerUpdateManyWithWhereWithoutEggInput | Prisma.ServerUpdateManyWithWhereWithoutEggInput[] - deleteMany?: Prisma.ServerScalarWhereInput | Prisma.ServerScalarWhereInput[] -} - -export type ServerUncheckedUpdateManyWithoutEggNestedInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutEggInput[] | Prisma.ServerUncheckedCreateWithoutEggInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutEggInput | Prisma.ServerCreateOrConnectWithoutEggInput[] - upsert?: Prisma.ServerUpsertWithWhereUniqueWithoutEggInput | Prisma.ServerUpsertWithWhereUniqueWithoutEggInput[] - createMany?: Prisma.ServerCreateManyEggInputEnvelope - set?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - disconnect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - delete?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - update?: Prisma.ServerUpdateWithWhereUniqueWithoutEggInput | Prisma.ServerUpdateWithWhereUniqueWithoutEggInput[] - updateMany?: Prisma.ServerUpdateManyWithWhereWithoutEggInput | Prisma.ServerUpdateManyWithWhereWithoutEggInput[] - deleteMany?: Prisma.ServerScalarWhereInput | Prisma.ServerScalarWhereInput[] -} - -export type EnumServerStatusFieldUpdateOperationsInput = { - set?: $Enums.ServerStatus -} - -export type ServerCreateNestedOneWithoutPropertiesInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutPropertiesInput - connect?: Prisma.ServerWhereUniqueInput -} - -export type ServerUpdateOneRequiredWithoutPropertiesNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutPropertiesInput - upsert?: Prisma.ServerUpsertWithoutPropertiesInput - connect?: Prisma.ServerWhereUniqueInput - update?: Prisma.XOR, Prisma.ServerUncheckedUpdateWithoutPropertiesInput> -} - -export type ServerCreateNestedOneWithoutVariablesInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutVariablesInput - connect?: Prisma.ServerWhereUniqueInput -} - -export type ServerUpdateOneRequiredWithoutVariablesNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutVariablesInput - upsert?: Prisma.ServerUpsertWithoutVariablesInput - connect?: Prisma.ServerWhereUniqueInput - update?: Prisma.XOR, Prisma.ServerUncheckedUpdateWithoutVariablesInput> -} - -export type ServerCreateNestedOneWithoutDatabasesInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutDatabasesInput - connect?: Prisma.ServerWhereUniqueInput -} - -export type ServerUpdateOneRequiredWithoutDatabasesNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutDatabasesInput - upsert?: Prisma.ServerUpsertWithoutDatabasesInput - connect?: Prisma.ServerWhereUniqueInput - update?: Prisma.XOR, Prisma.ServerUncheckedUpdateWithoutDatabasesInput> -} - -export type ServerCreateNestedOneWithoutBackupsInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutBackupsInput - connect?: Prisma.ServerWhereUniqueInput -} - -export type ServerUpdateOneRequiredWithoutBackupsNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutBackupsInput - upsert?: Prisma.ServerUpsertWithoutBackupsInput - connect?: Prisma.ServerWhereUniqueInput - update?: Prisma.XOR, Prisma.ServerUncheckedUpdateWithoutBackupsInput> -} - -export type ServerCreateNestedManyWithoutProductInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutProductInput[] | Prisma.ServerUncheckedCreateWithoutProductInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutProductInput | Prisma.ServerCreateOrConnectWithoutProductInput[] - createMany?: Prisma.ServerCreateManyProductInputEnvelope - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] -} - -export type ServerUncheckedCreateNestedManyWithoutProductInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutProductInput[] | Prisma.ServerUncheckedCreateWithoutProductInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutProductInput | Prisma.ServerCreateOrConnectWithoutProductInput[] - createMany?: Prisma.ServerCreateManyProductInputEnvelope - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] -} - -export type ServerUpdateManyWithoutProductNestedInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutProductInput[] | Prisma.ServerUncheckedCreateWithoutProductInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutProductInput | Prisma.ServerCreateOrConnectWithoutProductInput[] - upsert?: Prisma.ServerUpsertWithWhereUniqueWithoutProductInput | Prisma.ServerUpsertWithWhereUniqueWithoutProductInput[] - createMany?: Prisma.ServerCreateManyProductInputEnvelope - set?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - disconnect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - delete?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - update?: Prisma.ServerUpdateWithWhereUniqueWithoutProductInput | Prisma.ServerUpdateWithWhereUniqueWithoutProductInput[] - updateMany?: Prisma.ServerUpdateManyWithWhereWithoutProductInput | Prisma.ServerUpdateManyWithWhereWithoutProductInput[] - deleteMany?: Prisma.ServerScalarWhereInput | Prisma.ServerScalarWhereInput[] -} - -export type ServerUncheckedUpdateManyWithoutProductNestedInput = { - create?: Prisma.XOR | Prisma.ServerCreateWithoutProductInput[] | Prisma.ServerUncheckedCreateWithoutProductInput[] - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutProductInput | Prisma.ServerCreateOrConnectWithoutProductInput[] - upsert?: Prisma.ServerUpsertWithWhereUniqueWithoutProductInput | Prisma.ServerUpsertWithWhereUniqueWithoutProductInput[] - createMany?: Prisma.ServerCreateManyProductInputEnvelope - set?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - disconnect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - delete?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - connect?: Prisma.ServerWhereUniqueInput | Prisma.ServerWhereUniqueInput[] - update?: Prisma.ServerUpdateWithWhereUniqueWithoutProductInput | Prisma.ServerUpdateWithWhereUniqueWithoutProductInput[] - updateMany?: Prisma.ServerUpdateManyWithWhereWithoutProductInput | Prisma.ServerUpdateManyWithWhereWithoutProductInput[] - deleteMany?: Prisma.ServerScalarWhereInput | Prisma.ServerScalarWhereInput[] -} - -export type ServerCreateNestedOneWithoutTicketsInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutTicketsInput - connect?: Prisma.ServerWhereUniqueInput -} - -export type ServerUpdateOneWithoutTicketsNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.ServerCreateOrConnectWithoutTicketsInput - upsert?: Prisma.ServerUpsertWithoutTicketsInput - disconnect?: Prisma.ServerWhereInput | boolean - delete?: Prisma.ServerWhereInput | boolean - connect?: Prisma.ServerWhereUniqueInput - update?: Prisma.XOR, Prisma.ServerUncheckedUpdateWithoutTicketsInput> -} - -export type ServerCreateWithoutOwnerInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - product?: Prisma.ProductCreateNestedOneWithoutServersInput - node: Prisma.NodeCreateNestedOneWithoutServersInput - egg?: Prisma.EggCreateNestedOneWithoutServersInput - allocations?: Prisma.AllocationCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutServerInput -} - -export type ServerUncheckedCreateWithoutOwnerInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - nodeId: number - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - allocations?: Prisma.AllocationUncheckedCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableUncheckedCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseUncheckedCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupUncheckedCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyUncheckedCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutServerInput -} - -export type ServerCreateOrConnectWithoutOwnerInput = { - where: Prisma.ServerWhereUniqueInput - create: Prisma.XOR -} - -export type ServerCreateManyOwnerInputEnvelope = { - data: Prisma.ServerCreateManyOwnerInput | Prisma.ServerCreateManyOwnerInput[] - skipDuplicates?: boolean -} - -export type ServerUpsertWithWhereUniqueWithoutOwnerInput = { - where: Prisma.ServerWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type ServerUpdateWithWhereUniqueWithoutOwnerInput = { - where: Prisma.ServerWhereUniqueInput - data: Prisma.XOR -} - -export type ServerUpdateManyWithWhereWithoutOwnerInput = { - where: Prisma.ServerScalarWhereInput - data: Prisma.XOR -} - -export type ServerScalarWhereInput = { - AND?: Prisma.ServerScalarWhereInput | Prisma.ServerScalarWhereInput[] - OR?: Prisma.ServerScalarWhereInput[] - NOT?: Prisma.ServerScalarWhereInput | Prisma.ServerScalarWhereInput[] - id?: Prisma.StringFilter<"Server"> | string - pterodactylId?: Prisma.IntNullableFilter<"Server"> | number | null - virtfusionId?: Prisma.IntNullableFilter<"Server"> | number | null - uuid?: Prisma.StringFilter<"Server"> | string - uuidShort?: Prisma.StringNullableFilter<"Server"> | string | null - externalId?: Prisma.StringNullableFilter<"Server"> | string | null - panelType?: Prisma.StringFilter<"Server"> | string - name?: Prisma.StringFilter<"Server"> | string - description?: Prisma.StringNullableFilter<"Server"> | string | null - status?: Prisma.EnumServerStatusFilter<"Server"> | $Enums.ServerStatus - isSuspended?: Prisma.BoolFilter<"Server"> | boolean - productId?: Prisma.StringNullableFilter<"Server"> | string | null - ownerId?: Prisma.StringFilter<"Server"> | string - nodeId?: Prisma.IntFilter<"Server"> | number - eggId?: Prisma.IntNullableFilter<"Server"> | number | null - createdAt?: Prisma.DateTimeFilter<"Server"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"Server"> | Date | string - installedAt?: Prisma.DateTimeNullableFilter<"Server"> | Date | string | null - lastSyncedAt?: Prisma.DateTimeNullableFilter<"Server"> | Date | string | null -} - -export type ServerCreateWithoutNodeInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - product?: Prisma.ProductCreateNestedOneWithoutServersInput - owner: Prisma.UserCreateNestedOneWithoutServersInput - egg?: Prisma.EggCreateNestedOneWithoutServersInput - allocations?: Prisma.AllocationCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutServerInput -} - -export type ServerUncheckedCreateWithoutNodeInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - ownerId: string - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - allocations?: Prisma.AllocationUncheckedCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableUncheckedCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseUncheckedCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupUncheckedCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyUncheckedCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutServerInput -} - -export type ServerCreateOrConnectWithoutNodeInput = { - where: Prisma.ServerWhereUniqueInput - create: Prisma.XOR -} - -export type ServerCreateManyNodeInputEnvelope = { - data: Prisma.ServerCreateManyNodeInput | Prisma.ServerCreateManyNodeInput[] - skipDuplicates?: boolean -} - -export type ServerUpsertWithWhereUniqueWithoutNodeInput = { - where: Prisma.ServerWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type ServerUpdateWithWhereUniqueWithoutNodeInput = { - where: Prisma.ServerWhereUniqueInput - data: Prisma.XOR -} - -export type ServerUpdateManyWithWhereWithoutNodeInput = { - where: Prisma.ServerScalarWhereInput - data: Prisma.XOR -} - -export type ServerCreateWithoutAllocationsInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - product?: Prisma.ProductCreateNestedOneWithoutServersInput - owner: Prisma.UserCreateNestedOneWithoutServersInput - node: Prisma.NodeCreateNestedOneWithoutServersInput - egg?: Prisma.EggCreateNestedOneWithoutServersInput - variables?: Prisma.ServerVariableCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutServerInput -} - -export type ServerUncheckedCreateWithoutAllocationsInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - ownerId: string - nodeId: number - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - variables?: Prisma.ServerVariableUncheckedCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseUncheckedCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupUncheckedCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyUncheckedCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutServerInput -} - -export type ServerCreateOrConnectWithoutAllocationsInput = { - where: Prisma.ServerWhereUniqueInput - create: Prisma.XOR -} - -export type ServerUpsertWithoutAllocationsInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.ServerWhereInput -} - -export type ServerUpdateToOneWithWhereWithoutAllocationsInput = { - where?: Prisma.ServerWhereInput - data: Prisma.XOR -} - -export type ServerUpdateWithoutAllocationsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - product?: Prisma.ProductUpdateOneWithoutServersNestedInput - owner?: Prisma.UserUpdateOneRequiredWithoutServersNestedInput - node?: Prisma.NodeUpdateOneRequiredWithoutServersNestedInput - egg?: Prisma.EggUpdateOneWithoutServersNestedInput - variables?: Prisma.ServerVariableUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateWithoutAllocationsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - variables?: Prisma.ServerVariableUncheckedUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUncheckedUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUncheckedUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUncheckedUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutServerNestedInput -} - -export type ServerCreateWithoutEggInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - product?: Prisma.ProductCreateNestedOneWithoutServersInput - owner: Prisma.UserCreateNestedOneWithoutServersInput - node: Prisma.NodeCreateNestedOneWithoutServersInput - allocations?: Prisma.AllocationCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutServerInput -} - -export type ServerUncheckedCreateWithoutEggInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - ownerId: string - nodeId: number - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - allocations?: Prisma.AllocationUncheckedCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableUncheckedCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseUncheckedCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupUncheckedCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyUncheckedCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutServerInput -} - -export type ServerCreateOrConnectWithoutEggInput = { - where: Prisma.ServerWhereUniqueInput - create: Prisma.XOR -} - -export type ServerCreateManyEggInputEnvelope = { - data: Prisma.ServerCreateManyEggInput | Prisma.ServerCreateManyEggInput[] - skipDuplicates?: boolean -} - -export type ServerUpsertWithWhereUniqueWithoutEggInput = { - where: Prisma.ServerWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type ServerUpdateWithWhereUniqueWithoutEggInput = { - where: Prisma.ServerWhereUniqueInput - data: Prisma.XOR -} - -export type ServerUpdateManyWithWhereWithoutEggInput = { - where: Prisma.ServerScalarWhereInput - data: Prisma.XOR -} - -export type ServerCreateWithoutPropertiesInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - product?: Prisma.ProductCreateNestedOneWithoutServersInput - owner: Prisma.UserCreateNestedOneWithoutServersInput - node: Prisma.NodeCreateNestedOneWithoutServersInput - egg?: Prisma.EggCreateNestedOneWithoutServersInput - allocations?: Prisma.AllocationCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutServerInput -} - -export type ServerUncheckedCreateWithoutPropertiesInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - ownerId: string - nodeId: number - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - allocations?: Prisma.AllocationUncheckedCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableUncheckedCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseUncheckedCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupUncheckedCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutServerInput -} - -export type ServerCreateOrConnectWithoutPropertiesInput = { - where: Prisma.ServerWhereUniqueInput - create: Prisma.XOR -} - -export type ServerUpsertWithoutPropertiesInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.ServerWhereInput -} - -export type ServerUpdateToOneWithWhereWithoutPropertiesInput = { - where?: Prisma.ServerWhereInput - data: Prisma.XOR -} - -export type ServerUpdateWithoutPropertiesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - product?: Prisma.ProductUpdateOneWithoutServersNestedInput - owner?: Prisma.UserUpdateOneRequiredWithoutServersNestedInput - node?: Prisma.NodeUpdateOneRequiredWithoutServersNestedInput - egg?: Prisma.EggUpdateOneWithoutServersNestedInput - allocations?: Prisma.AllocationUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateWithoutPropertiesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - allocations?: Prisma.AllocationUncheckedUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUncheckedUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUncheckedUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUncheckedUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutServerNestedInput -} - -export type ServerCreateWithoutVariablesInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - product?: Prisma.ProductCreateNestedOneWithoutServersInput - owner: Prisma.UserCreateNestedOneWithoutServersInput - node: Prisma.NodeCreateNestedOneWithoutServersInput - egg?: Prisma.EggCreateNestedOneWithoutServersInput - allocations?: Prisma.AllocationCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutServerInput -} - -export type ServerUncheckedCreateWithoutVariablesInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - ownerId: string - nodeId: number - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - allocations?: Prisma.AllocationUncheckedCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseUncheckedCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupUncheckedCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyUncheckedCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutServerInput -} - -export type ServerCreateOrConnectWithoutVariablesInput = { - where: Prisma.ServerWhereUniqueInput - create: Prisma.XOR -} - -export type ServerUpsertWithoutVariablesInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.ServerWhereInput -} - -export type ServerUpdateToOneWithWhereWithoutVariablesInput = { - where?: Prisma.ServerWhereInput - data: Prisma.XOR -} - -export type ServerUpdateWithoutVariablesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - product?: Prisma.ProductUpdateOneWithoutServersNestedInput - owner?: Prisma.UserUpdateOneRequiredWithoutServersNestedInput - node?: Prisma.NodeUpdateOneRequiredWithoutServersNestedInput - egg?: Prisma.EggUpdateOneWithoutServersNestedInput - allocations?: Prisma.AllocationUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateWithoutVariablesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - allocations?: Prisma.AllocationUncheckedUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUncheckedUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUncheckedUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUncheckedUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutServerNestedInput -} - -export type ServerCreateWithoutDatabasesInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - product?: Prisma.ProductCreateNestedOneWithoutServersInput - owner: Prisma.UserCreateNestedOneWithoutServersInput - node: Prisma.NodeCreateNestedOneWithoutServersInput - egg?: Prisma.EggCreateNestedOneWithoutServersInput - allocations?: Prisma.AllocationCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutServerInput -} - -export type ServerUncheckedCreateWithoutDatabasesInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - ownerId: string - nodeId: number - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - allocations?: Prisma.AllocationUncheckedCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableUncheckedCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupUncheckedCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyUncheckedCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutServerInput -} - -export type ServerCreateOrConnectWithoutDatabasesInput = { - where: Prisma.ServerWhereUniqueInput - create: Prisma.XOR -} - -export type ServerUpsertWithoutDatabasesInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.ServerWhereInput -} - -export type ServerUpdateToOneWithWhereWithoutDatabasesInput = { - where?: Prisma.ServerWhereInput - data: Prisma.XOR -} - -export type ServerUpdateWithoutDatabasesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - product?: Prisma.ProductUpdateOneWithoutServersNestedInput - owner?: Prisma.UserUpdateOneRequiredWithoutServersNestedInput - node?: Prisma.NodeUpdateOneRequiredWithoutServersNestedInput - egg?: Prisma.EggUpdateOneWithoutServersNestedInput - allocations?: Prisma.AllocationUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateWithoutDatabasesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - allocations?: Prisma.AllocationUncheckedUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUncheckedUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUncheckedUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUncheckedUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutServerNestedInput -} - -export type ServerCreateWithoutBackupsInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - product?: Prisma.ProductCreateNestedOneWithoutServersInput - owner: Prisma.UserCreateNestedOneWithoutServersInput - node: Prisma.NodeCreateNestedOneWithoutServersInput - egg?: Prisma.EggCreateNestedOneWithoutServersInput - allocations?: Prisma.AllocationCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutServerInput -} - -export type ServerUncheckedCreateWithoutBackupsInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - ownerId: string - nodeId: number - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - allocations?: Prisma.AllocationUncheckedCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableUncheckedCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseUncheckedCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyUncheckedCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutServerInput -} - -export type ServerCreateOrConnectWithoutBackupsInput = { - where: Prisma.ServerWhereUniqueInput - create: Prisma.XOR -} - -export type ServerUpsertWithoutBackupsInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.ServerWhereInput -} - -export type ServerUpdateToOneWithWhereWithoutBackupsInput = { - where?: Prisma.ServerWhereInput - data: Prisma.XOR -} - -export type ServerUpdateWithoutBackupsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - product?: Prisma.ProductUpdateOneWithoutServersNestedInput - owner?: Prisma.UserUpdateOneRequiredWithoutServersNestedInput - node?: Prisma.NodeUpdateOneRequiredWithoutServersNestedInput - egg?: Prisma.EggUpdateOneWithoutServersNestedInput - allocations?: Prisma.AllocationUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateWithoutBackupsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - allocations?: Prisma.AllocationUncheckedUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUncheckedUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUncheckedUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUncheckedUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutServerNestedInput -} - -export type ServerCreateWithoutProductInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - owner: Prisma.UserCreateNestedOneWithoutServersInput - node: Prisma.NodeCreateNestedOneWithoutServersInput - egg?: Prisma.EggCreateNestedOneWithoutServersInput - allocations?: Prisma.AllocationCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutServerInput -} - -export type ServerUncheckedCreateWithoutProductInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - ownerId: string - nodeId: number - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - allocations?: Prisma.AllocationUncheckedCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableUncheckedCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseUncheckedCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupUncheckedCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyUncheckedCreateNestedManyWithoutServerInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutServerInput -} - -export type ServerCreateOrConnectWithoutProductInput = { - where: Prisma.ServerWhereUniqueInput - create: Prisma.XOR -} - -export type ServerCreateManyProductInputEnvelope = { - data: Prisma.ServerCreateManyProductInput | Prisma.ServerCreateManyProductInput[] - skipDuplicates?: boolean -} - -export type ServerUpsertWithWhereUniqueWithoutProductInput = { - where: Prisma.ServerWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type ServerUpdateWithWhereUniqueWithoutProductInput = { - where: Prisma.ServerWhereUniqueInput - data: Prisma.XOR -} - -export type ServerUpdateManyWithWhereWithoutProductInput = { - where: Prisma.ServerScalarWhereInput - data: Prisma.XOR -} - -export type ServerCreateWithoutTicketsInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - product?: Prisma.ProductCreateNestedOneWithoutServersInput - owner: Prisma.UserCreateNestedOneWithoutServersInput - node: Prisma.NodeCreateNestedOneWithoutServersInput - egg?: Prisma.EggCreateNestedOneWithoutServersInput - allocations?: Prisma.AllocationCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyCreateNestedManyWithoutServerInput -} - -export type ServerUncheckedCreateWithoutTicketsInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - ownerId: string - nodeId: number - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null - allocations?: Prisma.AllocationUncheckedCreateNestedManyWithoutServerInput - variables?: Prisma.ServerVariableUncheckedCreateNestedManyWithoutServerInput - databases?: Prisma.ServerDatabaseUncheckedCreateNestedManyWithoutServerInput - backups?: Prisma.ServerBackupUncheckedCreateNestedManyWithoutServerInput - properties?: Prisma.ServerPropertyUncheckedCreateNestedManyWithoutServerInput -} - -export type ServerCreateOrConnectWithoutTicketsInput = { - where: Prisma.ServerWhereUniqueInput - create: Prisma.XOR -} - -export type ServerUpsertWithoutTicketsInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.ServerWhereInput -} - -export type ServerUpdateToOneWithWhereWithoutTicketsInput = { - where?: Prisma.ServerWhereInput - data: Prisma.XOR -} - -export type ServerUpdateWithoutTicketsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - product?: Prisma.ProductUpdateOneWithoutServersNestedInput - owner?: Prisma.UserUpdateOneRequiredWithoutServersNestedInput - node?: Prisma.NodeUpdateOneRequiredWithoutServersNestedInput - egg?: Prisma.EggUpdateOneWithoutServersNestedInput - allocations?: Prisma.AllocationUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateWithoutTicketsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - allocations?: Prisma.AllocationUncheckedUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUncheckedUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUncheckedUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUncheckedUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUncheckedUpdateManyWithoutServerNestedInput -} - -export type ServerCreateManyOwnerInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - nodeId: number - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null -} - -export type ServerUpdateWithoutOwnerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - product?: Prisma.ProductUpdateOneWithoutServersNestedInput - node?: Prisma.NodeUpdateOneRequiredWithoutServersNestedInput - egg?: Prisma.EggUpdateOneWithoutServersNestedInput - allocations?: Prisma.AllocationUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateWithoutOwnerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - allocations?: Prisma.AllocationUncheckedUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUncheckedUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUncheckedUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUncheckedUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUncheckedUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateManyWithoutOwnerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type ServerCreateManyNodeInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - ownerId: string - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null -} - -export type ServerUpdateWithoutNodeInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - product?: Prisma.ProductUpdateOneWithoutServersNestedInput - owner?: Prisma.UserUpdateOneRequiredWithoutServersNestedInput - egg?: Prisma.EggUpdateOneWithoutServersNestedInput - allocations?: Prisma.AllocationUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateWithoutNodeInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - allocations?: Prisma.AllocationUncheckedUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUncheckedUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUncheckedUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUncheckedUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUncheckedUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateManyWithoutNodeInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type ServerCreateManyEggInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - productId?: string | null - ownerId: string - nodeId: number - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null -} - -export type ServerUpdateWithoutEggInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - product?: Prisma.ProductUpdateOneWithoutServersNestedInput - owner?: Prisma.UserUpdateOneRequiredWithoutServersNestedInput - node?: Prisma.NodeUpdateOneRequiredWithoutServersNestedInput - allocations?: Prisma.AllocationUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateWithoutEggInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - allocations?: Prisma.AllocationUncheckedUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUncheckedUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUncheckedUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUncheckedUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUncheckedUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateManyWithoutEggInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - productId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type ServerCreateManyProductInput = { - id?: string - pterodactylId?: number | null - virtfusionId?: number | null - uuid: string - uuidShort?: string | null - externalId?: string | null - panelType?: string - name: string - description?: string | null - status?: $Enums.ServerStatus - isSuspended?: boolean - ownerId: string - nodeId: number - eggId?: number | null - createdAt?: Date | string - updatedAt?: Date | string - installedAt?: Date | string | null - lastSyncedAt?: Date | string | null -} - -export type ServerUpdateWithoutProductInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - owner?: Prisma.UserUpdateOneRequiredWithoutServersNestedInput - node?: Prisma.NodeUpdateOneRequiredWithoutServersNestedInput - egg?: Prisma.EggUpdateOneWithoutServersNestedInput - allocations?: Prisma.AllocationUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateWithoutProductInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - allocations?: Prisma.AllocationUncheckedUpdateManyWithoutServerNestedInput - variables?: Prisma.ServerVariableUncheckedUpdateManyWithoutServerNestedInput - databases?: Prisma.ServerDatabaseUncheckedUpdateManyWithoutServerNestedInput - backups?: Prisma.ServerBackupUncheckedUpdateManyWithoutServerNestedInput - properties?: Prisma.ServerPropertyUncheckedUpdateManyWithoutServerNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutServerNestedInput -} - -export type ServerUncheckedUpdateManyWithoutProductInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - uuid?: Prisma.StringFieldUpdateOperationsInput | string - uuidShort?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - externalId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - panelType?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumServerStatusFieldUpdateOperationsInput | $Enums.ServerStatus - isSuspended?: Prisma.BoolFieldUpdateOperationsInput | boolean - ownerId?: Prisma.StringFieldUpdateOperationsInput | string - nodeId?: Prisma.IntFieldUpdateOperationsInput | number - eggId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - installedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - - -/** - * Count Type ServerCountOutputType - */ - -export type ServerCountOutputType = { - allocations: number - variables: number - databases: number - backups: number - properties: number - tickets: number -} - -export type ServerCountOutputTypeSelect = { - allocations?: boolean | ServerCountOutputTypeCountAllocationsArgs - variables?: boolean | ServerCountOutputTypeCountVariablesArgs - databases?: boolean | ServerCountOutputTypeCountDatabasesArgs - backups?: boolean | ServerCountOutputTypeCountBackupsArgs - properties?: boolean | ServerCountOutputTypeCountPropertiesArgs - tickets?: boolean | ServerCountOutputTypeCountTicketsArgs -} - -/** - * ServerCountOutputType without action - */ -export type ServerCountOutputTypeDefaultArgs = { - /** - * Select specific fields to fetch from the ServerCountOutputType - */ - select?: Prisma.ServerCountOutputTypeSelect | null -} - -/** - * ServerCountOutputType without action - */ -export type ServerCountOutputTypeCountAllocationsArgs = { - where?: Prisma.AllocationWhereInput -} - -/** - * ServerCountOutputType without action - */ -export type ServerCountOutputTypeCountVariablesArgs = { - where?: Prisma.ServerVariableWhereInput -} - -/** - * ServerCountOutputType without action - */ -export type ServerCountOutputTypeCountDatabasesArgs = { - where?: Prisma.ServerDatabaseWhereInput -} - -/** - * ServerCountOutputType without action - */ -export type ServerCountOutputTypeCountBackupsArgs = { - where?: Prisma.ServerBackupWhereInput -} - -/** - * ServerCountOutputType without action - */ -export type ServerCountOutputTypeCountPropertiesArgs = { - where?: Prisma.ServerPropertyWhereInput -} - -/** - * ServerCountOutputType without action - */ -export type ServerCountOutputTypeCountTicketsArgs = { - where?: Prisma.SupportTicketWhereInput -} - - -export type ServerSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - pterodactylId?: boolean - virtfusionId?: boolean - uuid?: boolean - uuidShort?: boolean - externalId?: boolean - panelType?: boolean - name?: boolean - description?: boolean - status?: boolean - isSuspended?: boolean - productId?: boolean - ownerId?: boolean - nodeId?: boolean - eggId?: boolean - createdAt?: boolean - updatedAt?: boolean - installedAt?: boolean - lastSyncedAt?: boolean - product?: boolean | Prisma.Server$productArgs - owner?: boolean | Prisma.UserDefaultArgs - node?: boolean | Prisma.NodeDefaultArgs - egg?: boolean | Prisma.Server$eggArgs - allocations?: boolean | Prisma.Server$allocationsArgs - variables?: boolean | Prisma.Server$variablesArgs - databases?: boolean | Prisma.Server$databasesArgs - backups?: boolean | Prisma.Server$backupsArgs - properties?: boolean | Prisma.Server$propertiesArgs - tickets?: boolean | Prisma.Server$ticketsArgs - _count?: boolean | Prisma.ServerCountOutputTypeDefaultArgs -}, ExtArgs["result"]["server"]> - -export type ServerSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - pterodactylId?: boolean - virtfusionId?: boolean - uuid?: boolean - uuidShort?: boolean - externalId?: boolean - panelType?: boolean - name?: boolean - description?: boolean - status?: boolean - isSuspended?: boolean - productId?: boolean - ownerId?: boolean - nodeId?: boolean - eggId?: boolean - createdAt?: boolean - updatedAt?: boolean - installedAt?: boolean - lastSyncedAt?: boolean - product?: boolean | Prisma.Server$productArgs - owner?: boolean | Prisma.UserDefaultArgs - node?: boolean | Prisma.NodeDefaultArgs - egg?: boolean | Prisma.Server$eggArgs -}, ExtArgs["result"]["server"]> - -export type ServerSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - pterodactylId?: boolean - virtfusionId?: boolean - uuid?: boolean - uuidShort?: boolean - externalId?: boolean - panelType?: boolean - name?: boolean - description?: boolean - status?: boolean - isSuspended?: boolean - productId?: boolean - ownerId?: boolean - nodeId?: boolean - eggId?: boolean - createdAt?: boolean - updatedAt?: boolean - installedAt?: boolean - lastSyncedAt?: boolean - product?: boolean | Prisma.Server$productArgs - owner?: boolean | Prisma.UserDefaultArgs - node?: boolean | Prisma.NodeDefaultArgs - egg?: boolean | Prisma.Server$eggArgs -}, ExtArgs["result"]["server"]> - -export type ServerSelectScalar = { - id?: boolean - pterodactylId?: boolean - virtfusionId?: boolean - uuid?: boolean - uuidShort?: boolean - externalId?: boolean - panelType?: boolean - name?: boolean - description?: boolean - status?: boolean - isSuspended?: boolean - productId?: boolean - ownerId?: boolean - nodeId?: boolean - eggId?: boolean - createdAt?: boolean - updatedAt?: boolean - installedAt?: boolean - lastSyncedAt?: boolean -} - -export type ServerOmit = runtime.Types.Extensions.GetOmit<"id" | "pterodactylId" | "virtfusionId" | "uuid" | "uuidShort" | "externalId" | "panelType" | "name" | "description" | "status" | "isSuspended" | "productId" | "ownerId" | "nodeId" | "eggId" | "createdAt" | "updatedAt" | "installedAt" | "lastSyncedAt", ExtArgs["result"]["server"]> -export type ServerInclude = { - product?: boolean | Prisma.Server$productArgs - owner?: boolean | Prisma.UserDefaultArgs - node?: boolean | Prisma.NodeDefaultArgs - egg?: boolean | Prisma.Server$eggArgs - allocations?: boolean | Prisma.Server$allocationsArgs - variables?: boolean | Prisma.Server$variablesArgs - databases?: boolean | Prisma.Server$databasesArgs - backups?: boolean | Prisma.Server$backupsArgs - properties?: boolean | Prisma.Server$propertiesArgs - tickets?: boolean | Prisma.Server$ticketsArgs - _count?: boolean | Prisma.ServerCountOutputTypeDefaultArgs -} -export type ServerIncludeCreateManyAndReturn = { - product?: boolean | Prisma.Server$productArgs - owner?: boolean | Prisma.UserDefaultArgs - node?: boolean | Prisma.NodeDefaultArgs - egg?: boolean | Prisma.Server$eggArgs -} -export type ServerIncludeUpdateManyAndReturn = { - product?: boolean | Prisma.Server$productArgs - owner?: boolean | Prisma.UserDefaultArgs - node?: boolean | Prisma.NodeDefaultArgs - egg?: boolean | Prisma.Server$eggArgs -} - -export type $ServerPayload = { - name: "Server" - objects: { - product: Prisma.$ProductPayload | null - owner: Prisma.$UserPayload - node: Prisma.$NodePayload - egg: Prisma.$EggPayload | null - allocations: Prisma.$AllocationPayload[] - variables: Prisma.$ServerVariablePayload[] - databases: Prisma.$ServerDatabasePayload[] - backups: Prisma.$ServerBackupPayload[] - properties: Prisma.$ServerPropertyPayload[] - tickets: Prisma.$SupportTicketPayload[] - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - pterodactylId: number | null - virtfusionId: number | null - uuid: string - uuidShort: string | null - externalId: string | null - panelType: string - name: string - description: string | null - status: $Enums.ServerStatus - isSuspended: boolean - productId: string | null - ownerId: string - nodeId: number - eggId: number | null - createdAt: Date - updatedAt: Date - installedAt: Date | null - lastSyncedAt: Date | null - }, ExtArgs["result"]["server"]> - composites: {} -} - -export type ServerGetPayload = runtime.Types.Result.GetResult - -export type ServerCountArgs = - Omit & { - select?: ServerCountAggregateInputType | true - } - -export interface ServerDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['Server'], meta: { name: 'Server' } } - /** - * Find zero or one Server that matches the filter. - * @param {ServerFindUniqueArgs} args - Arguments to find a Server - * @example - * // Get one Server - * const server = await prisma.server.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__ServerClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one Server that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {ServerFindUniqueOrThrowArgs} args - Arguments to find a Server - * @example - * // Get one Server - * const server = await prisma.server.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__ServerClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Server that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerFindFirstArgs} args - Arguments to find a Server - * @example - * // Get one Server - * const server = await prisma.server.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__ServerClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Server that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerFindFirstOrThrowArgs} args - Arguments to find a Server - * @example - * // Get one Server - * const server = await prisma.server.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__ServerClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more Servers that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all Servers - * const servers = await prisma.server.findMany() - * - * // Get first 10 Servers - * const servers = await prisma.server.findMany({ take: 10 }) - * - * // Only select the `id` - * const serverWithIdOnly = await prisma.server.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a Server. - * @param {ServerCreateArgs} args - Arguments to create a Server. - * @example - * // Create one Server - * const Server = await prisma.server.create({ - * data: { - * // ... data to create a Server - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__ServerClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many Servers. - * @param {ServerCreateManyArgs} args - Arguments to create many Servers. - * @example - * // Create many Servers - * const server = await prisma.server.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many Servers and returns the data saved in the database. - * @param {ServerCreateManyAndReturnArgs} args - Arguments to create many Servers. - * @example - * // Create many Servers - * const server = await prisma.server.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many Servers and only return the `id` - * const serverWithIdOnly = await prisma.server.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a Server. - * @param {ServerDeleteArgs} args - Arguments to delete one Server. - * @example - * // Delete one Server - * const Server = await prisma.server.delete({ - * where: { - * // ... filter to delete one Server - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__ServerClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one Server. - * @param {ServerUpdateArgs} args - Arguments to update one Server. - * @example - * // Update one Server - * const server = await prisma.server.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__ServerClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more Servers. - * @param {ServerDeleteManyArgs} args - Arguments to filter Servers to delete. - * @example - * // Delete a few Servers - * const { count } = await prisma.server.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Servers. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many Servers - * const server = await prisma.server.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Servers and returns the data updated in the database. - * @param {ServerUpdateManyAndReturnArgs} args - Arguments to update many Servers. - * @example - * // Update many Servers - * const server = await prisma.server.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more Servers and only return the `id` - * const serverWithIdOnly = await prisma.server.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one Server. - * @param {ServerUpsertArgs} args - Arguments to update or create a Server. - * @example - * // Update or create a Server - * const server = await prisma.server.upsert({ - * create: { - * // ... data to create a Server - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the Server we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__ServerClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of Servers. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerCountArgs} args - Arguments to filter Servers to count. - * @example - * // Count the number of Servers - * const count = await prisma.server.count({ - * where: { - * // ... the filter for the Servers we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a Server. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by Server. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends ServerGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: ServerGroupByArgs['orderBy'] } - : { orderBy?: ServerGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetServerGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the Server model - */ -readonly fields: ServerFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for Server. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__ServerClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - product = {}>(args?: Prisma.Subset>): Prisma.Prisma__ProductClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - owner = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - node = {}>(args?: Prisma.Subset>): Prisma.Prisma__NodeClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - egg = {}>(args?: Prisma.Subset>): Prisma.Prisma__EggClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - allocations = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - variables = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - databases = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - backups = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - properties = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - tickets = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the Server model - */ -export interface ServerFieldRefs { - readonly id: Prisma.FieldRef<"Server", 'String'> - readonly pterodactylId: Prisma.FieldRef<"Server", 'Int'> - readonly virtfusionId: Prisma.FieldRef<"Server", 'Int'> - readonly uuid: Prisma.FieldRef<"Server", 'String'> - readonly uuidShort: Prisma.FieldRef<"Server", 'String'> - readonly externalId: Prisma.FieldRef<"Server", 'String'> - readonly panelType: Prisma.FieldRef<"Server", 'String'> - readonly name: Prisma.FieldRef<"Server", 'String'> - readonly description: Prisma.FieldRef<"Server", 'String'> - readonly status: Prisma.FieldRef<"Server", 'ServerStatus'> - readonly isSuspended: Prisma.FieldRef<"Server", 'Boolean'> - readonly productId: Prisma.FieldRef<"Server", 'String'> - readonly ownerId: Prisma.FieldRef<"Server", 'String'> - readonly nodeId: Prisma.FieldRef<"Server", 'Int'> - readonly eggId: Prisma.FieldRef<"Server", 'Int'> - readonly createdAt: Prisma.FieldRef<"Server", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"Server", 'DateTime'> - readonly installedAt: Prisma.FieldRef<"Server", 'DateTime'> - readonly lastSyncedAt: Prisma.FieldRef<"Server", 'DateTime'> -} - - -// Custom InputTypes -/** - * Server findUnique - */ -export type ServerFindUniqueArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - /** - * Filter, which Server to fetch. - */ - where: Prisma.ServerWhereUniqueInput -} - -/** - * Server findUniqueOrThrow - */ -export type ServerFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - /** - * Filter, which Server to fetch. - */ - where: Prisma.ServerWhereUniqueInput -} - -/** - * Server findFirst - */ -export type ServerFindFirstArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - /** - * Filter, which Server to fetch. - */ - where?: Prisma.ServerWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Servers to fetch. - */ - orderBy?: Prisma.ServerOrderByWithRelationInput | Prisma.ServerOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Servers. - */ - cursor?: Prisma.ServerWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Servers from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Servers. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Servers. - */ - distinct?: Prisma.ServerScalarFieldEnum | Prisma.ServerScalarFieldEnum[] -} - -/** - * Server findFirstOrThrow - */ -export type ServerFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - /** - * Filter, which Server to fetch. - */ - where?: Prisma.ServerWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Servers to fetch. - */ - orderBy?: Prisma.ServerOrderByWithRelationInput | Prisma.ServerOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Servers. - */ - cursor?: Prisma.ServerWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Servers from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Servers. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Servers. - */ - distinct?: Prisma.ServerScalarFieldEnum | Prisma.ServerScalarFieldEnum[] -} - -/** - * Server findMany - */ -export type ServerFindManyArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - /** - * Filter, which Servers to fetch. - */ - where?: Prisma.ServerWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Servers to fetch. - */ - orderBy?: Prisma.ServerOrderByWithRelationInput | Prisma.ServerOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing Servers. - */ - cursor?: Prisma.ServerWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Servers from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Servers. - */ - skip?: number - distinct?: Prisma.ServerScalarFieldEnum | Prisma.ServerScalarFieldEnum[] -} - -/** - * Server create - */ -export type ServerCreateArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - /** - * The data needed to create a Server. - */ - data: Prisma.XOR -} - -/** - * Server createMany - */ -export type ServerCreateManyArgs = { - /** - * The data used to create many Servers. - */ - data: Prisma.ServerCreateManyInput | Prisma.ServerCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Server createManyAndReturn - */ -export type ServerCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelectCreateManyAndReturn | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * The data used to create many Servers. - */ - data: Prisma.ServerCreateManyInput | Prisma.ServerCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerIncludeCreateManyAndReturn | null -} - -/** - * Server update - */ -export type ServerUpdateArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - /** - * The data needed to update a Server. - */ - data: Prisma.XOR - /** - * Choose, which Server to update. - */ - where: Prisma.ServerWhereUniqueInput -} - -/** - * Server updateMany - */ -export type ServerUpdateManyArgs = { - /** - * The data used to update Servers. - */ - data: Prisma.XOR - /** - * Filter which Servers to update - */ - where?: Prisma.ServerWhereInput - /** - * Limit how many Servers to update. - */ - limit?: number -} - -/** - * Server updateManyAndReturn - */ -export type ServerUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * The data used to update Servers. - */ - data: Prisma.XOR - /** - * Filter which Servers to update - */ - where?: Prisma.ServerWhereInput - /** - * Limit how many Servers to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerIncludeUpdateManyAndReturn | null -} - -/** - * Server upsert - */ -export type ServerUpsertArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - /** - * The filter to search for the Server to update in case it exists. - */ - where: Prisma.ServerWhereUniqueInput - /** - * In case the Server found by the `where` argument doesn't exist, create a new Server with this data. - */ - create: Prisma.XOR - /** - * In case the Server was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * Server delete - */ -export type ServerDeleteArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - /** - * Filter which Server to delete. - */ - where: Prisma.ServerWhereUniqueInput -} - -/** - * Server deleteMany - */ -export type ServerDeleteManyArgs = { - /** - * Filter which Servers to delete - */ - where?: Prisma.ServerWhereInput - /** - * Limit how many Servers to delete. - */ - limit?: number -} - -/** - * Server.product - */ -export type Server$productArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelect | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductInclude | null - where?: Prisma.ProductWhereInput -} - -/** - * Server.egg - */ -export type Server$eggArgs = { - /** - * Select specific fields to fetch from the Egg - */ - select?: Prisma.EggSelect | null - /** - * Omit specific fields from the Egg - */ - omit?: Prisma.EggOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.EggInclude | null - where?: Prisma.EggWhereInput -} - -/** - * Server.allocations - */ -export type Server$allocationsArgs = { - /** - * Select specific fields to fetch from the Allocation - */ - select?: Prisma.AllocationSelect | null - /** - * Omit specific fields from the Allocation - */ - omit?: Prisma.AllocationOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.AllocationInclude | null - where?: Prisma.AllocationWhereInput - orderBy?: Prisma.AllocationOrderByWithRelationInput | Prisma.AllocationOrderByWithRelationInput[] - cursor?: Prisma.AllocationWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.AllocationScalarFieldEnum | Prisma.AllocationScalarFieldEnum[] -} - -/** - * Server.variables - */ -export type Server$variablesArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelect | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableInclude | null - where?: Prisma.ServerVariableWhereInput - orderBy?: Prisma.ServerVariableOrderByWithRelationInput | Prisma.ServerVariableOrderByWithRelationInput[] - cursor?: Prisma.ServerVariableWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.ServerVariableScalarFieldEnum | Prisma.ServerVariableScalarFieldEnum[] -} - -/** - * Server.databases - */ -export type Server$databasesArgs = { - /** - * Select specific fields to fetch from the ServerDatabase - */ - select?: Prisma.ServerDatabaseSelect | null - /** - * Omit specific fields from the ServerDatabase - */ - omit?: Prisma.ServerDatabaseOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerDatabaseInclude | null - where?: Prisma.ServerDatabaseWhereInput - orderBy?: Prisma.ServerDatabaseOrderByWithRelationInput | Prisma.ServerDatabaseOrderByWithRelationInput[] - cursor?: Prisma.ServerDatabaseWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.ServerDatabaseScalarFieldEnum | Prisma.ServerDatabaseScalarFieldEnum[] -} - -/** - * Server.backups - */ -export type Server$backupsArgs = { - /** - * Select specific fields to fetch from the ServerBackup - */ - select?: Prisma.ServerBackupSelect | null - /** - * Omit specific fields from the ServerBackup - */ - omit?: Prisma.ServerBackupOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerBackupInclude | null - where?: Prisma.ServerBackupWhereInput - orderBy?: Prisma.ServerBackupOrderByWithRelationInput | Prisma.ServerBackupOrderByWithRelationInput[] - cursor?: Prisma.ServerBackupWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.ServerBackupScalarFieldEnum | Prisma.ServerBackupScalarFieldEnum[] -} - -/** - * Server.properties - */ -export type Server$propertiesArgs = { - /** - * Select specific fields to fetch from the ServerProperty - */ - select?: Prisma.ServerPropertySelect | null - /** - * Omit specific fields from the ServerProperty - */ - omit?: Prisma.ServerPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerPropertyInclude | null - where?: Prisma.ServerPropertyWhereInput - orderBy?: Prisma.ServerPropertyOrderByWithRelationInput | Prisma.ServerPropertyOrderByWithRelationInput[] - cursor?: Prisma.ServerPropertyWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.ServerPropertyScalarFieldEnum | Prisma.ServerPropertyScalarFieldEnum[] -} - -/** - * Server.tickets - */ -export type Server$ticketsArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelect | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketInclude | null - where?: Prisma.SupportTicketWhereInput - orderBy?: Prisma.SupportTicketOrderByWithRelationInput | Prisma.SupportTicketOrderByWithRelationInput[] - cursor?: Prisma.SupportTicketWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.SupportTicketScalarFieldEnum | Prisma.SupportTicketScalarFieldEnum[] -} - -/** - * Server without action - */ -export type ServerDefaultArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null -} diff --git a/prisma/generated/prisma/models/ServerBackup.ts b/prisma/generated/prisma/models/ServerBackup.ts deleted file mode 100644 index fda1708..0000000 --- a/prisma/generated/prisma/models/ServerBackup.ts +++ /dev/null @@ -1,1588 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `ServerBackup` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model ServerBackup - * - */ -export type ServerBackupModel = runtime.Types.Result.DefaultSelection - -export type AggregateServerBackup = { - _count: ServerBackupCountAggregateOutputType | null - _avg: ServerBackupAvgAggregateOutputType | null - _sum: ServerBackupSumAggregateOutputType | null - _min: ServerBackupMinAggregateOutputType | null - _max: ServerBackupMaxAggregateOutputType | null -} - -export type ServerBackupAvgAggregateOutputType = { - bytes: number | null -} - -export type ServerBackupSumAggregateOutputType = { - bytes: bigint | null -} - -export type ServerBackupMinAggregateOutputType = { - id: string | null - serverId: string | null - name: string | null - sha256Hash: string | null - bytes: bigint | null - isSuccessful: boolean | null - isLocked: boolean | null - completedAt: Date | null - createdAt: Date | null - updatedAt: Date | null -} - -export type ServerBackupMaxAggregateOutputType = { - id: string | null - serverId: string | null - name: string | null - sha256Hash: string | null - bytes: bigint | null - isSuccessful: boolean | null - isLocked: boolean | null - completedAt: Date | null - createdAt: Date | null - updatedAt: Date | null -} - -export type ServerBackupCountAggregateOutputType = { - id: number - serverId: number - name: number - ignoredFiles: number - sha256Hash: number - bytes: number - isSuccessful: number - isLocked: number - completedAt: number - createdAt: number - updatedAt: number - _all: number -} - - -export type ServerBackupAvgAggregateInputType = { - bytes?: true -} - -export type ServerBackupSumAggregateInputType = { - bytes?: true -} - -export type ServerBackupMinAggregateInputType = { - id?: true - serverId?: true - name?: true - sha256Hash?: true - bytes?: true - isSuccessful?: true - isLocked?: true - completedAt?: true - createdAt?: true - updatedAt?: true -} - -export type ServerBackupMaxAggregateInputType = { - id?: true - serverId?: true - name?: true - sha256Hash?: true - bytes?: true - isSuccessful?: true - isLocked?: true - completedAt?: true - createdAt?: true - updatedAt?: true -} - -export type ServerBackupCountAggregateInputType = { - id?: true - serverId?: true - name?: true - ignoredFiles?: true - sha256Hash?: true - bytes?: true - isSuccessful?: true - isLocked?: true - completedAt?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type ServerBackupAggregateArgs = { - /** - * Filter which ServerBackup to aggregate. - */ - where?: Prisma.ServerBackupWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerBackups to fetch. - */ - orderBy?: Prisma.ServerBackupOrderByWithRelationInput | Prisma.ServerBackupOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.ServerBackupWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerBackups from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerBackups. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned ServerBackups - **/ - _count?: true | ServerBackupCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: ServerBackupAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: ServerBackupSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: ServerBackupMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: ServerBackupMaxAggregateInputType -} - -export type GetServerBackupAggregateType = { - [P in keyof T & keyof AggregateServerBackup]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type ServerBackupGroupByArgs = { - where?: Prisma.ServerBackupWhereInput - orderBy?: Prisma.ServerBackupOrderByWithAggregationInput | Prisma.ServerBackupOrderByWithAggregationInput[] - by: Prisma.ServerBackupScalarFieldEnum[] | Prisma.ServerBackupScalarFieldEnum - having?: Prisma.ServerBackupScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: ServerBackupCountAggregateInputType | true - _avg?: ServerBackupAvgAggregateInputType - _sum?: ServerBackupSumAggregateInputType - _min?: ServerBackupMinAggregateInputType - _max?: ServerBackupMaxAggregateInputType -} - -export type ServerBackupGroupByOutputType = { - id: string - serverId: string - name: string - ignoredFiles: runtime.JsonValue | null - sha256Hash: string | null - bytes: bigint - isSuccessful: boolean - isLocked: boolean - completedAt: Date | null - createdAt: Date - updatedAt: Date - _count: ServerBackupCountAggregateOutputType | null - _avg: ServerBackupAvgAggregateOutputType | null - _sum: ServerBackupSumAggregateOutputType | null - _min: ServerBackupMinAggregateOutputType | null - _max: ServerBackupMaxAggregateOutputType | null -} - -type GetServerBackupGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof ServerBackupGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type ServerBackupWhereInput = { - AND?: Prisma.ServerBackupWhereInput | Prisma.ServerBackupWhereInput[] - OR?: Prisma.ServerBackupWhereInput[] - NOT?: Prisma.ServerBackupWhereInput | Prisma.ServerBackupWhereInput[] - id?: Prisma.StringFilter<"ServerBackup"> | string - serverId?: Prisma.StringFilter<"ServerBackup"> | string - name?: Prisma.StringFilter<"ServerBackup"> | string - ignoredFiles?: Prisma.JsonNullableFilter<"ServerBackup"> - sha256Hash?: Prisma.StringNullableFilter<"ServerBackup"> | string | null - bytes?: Prisma.BigIntFilter<"ServerBackup"> | bigint | number - isSuccessful?: Prisma.BoolFilter<"ServerBackup"> | boolean - isLocked?: Prisma.BoolFilter<"ServerBackup"> | boolean - completedAt?: Prisma.DateTimeNullableFilter<"ServerBackup"> | Date | string | null - createdAt?: Prisma.DateTimeFilter<"ServerBackup"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"ServerBackup"> | Date | string - server?: Prisma.XOR -} - -export type ServerBackupOrderByWithRelationInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - name?: Prisma.SortOrder - ignoredFiles?: Prisma.SortOrderInput | Prisma.SortOrder - sha256Hash?: Prisma.SortOrderInput | Prisma.SortOrder - bytes?: Prisma.SortOrder - isSuccessful?: Prisma.SortOrder - isLocked?: Prisma.SortOrder - completedAt?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - server?: Prisma.ServerOrderByWithRelationInput -} - -export type ServerBackupWhereUniqueInput = Prisma.AtLeast<{ - id?: string - AND?: Prisma.ServerBackupWhereInput | Prisma.ServerBackupWhereInput[] - OR?: Prisma.ServerBackupWhereInput[] - NOT?: Prisma.ServerBackupWhereInput | Prisma.ServerBackupWhereInput[] - serverId?: Prisma.StringFilter<"ServerBackup"> | string - name?: Prisma.StringFilter<"ServerBackup"> | string - ignoredFiles?: Prisma.JsonNullableFilter<"ServerBackup"> - sha256Hash?: Prisma.StringNullableFilter<"ServerBackup"> | string | null - bytes?: Prisma.BigIntFilter<"ServerBackup"> | bigint | number - isSuccessful?: Prisma.BoolFilter<"ServerBackup"> | boolean - isLocked?: Prisma.BoolFilter<"ServerBackup"> | boolean - completedAt?: Prisma.DateTimeNullableFilter<"ServerBackup"> | Date | string | null - createdAt?: Prisma.DateTimeFilter<"ServerBackup"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"ServerBackup"> | Date | string - server?: Prisma.XOR -}, "id"> - -export type ServerBackupOrderByWithAggregationInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - name?: Prisma.SortOrder - ignoredFiles?: Prisma.SortOrderInput | Prisma.SortOrder - sha256Hash?: Prisma.SortOrderInput | Prisma.SortOrder - bytes?: Prisma.SortOrder - isSuccessful?: Prisma.SortOrder - isLocked?: Prisma.SortOrder - completedAt?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.ServerBackupCountOrderByAggregateInput - _avg?: Prisma.ServerBackupAvgOrderByAggregateInput - _max?: Prisma.ServerBackupMaxOrderByAggregateInput - _min?: Prisma.ServerBackupMinOrderByAggregateInput - _sum?: Prisma.ServerBackupSumOrderByAggregateInput -} - -export type ServerBackupScalarWhereWithAggregatesInput = { - AND?: Prisma.ServerBackupScalarWhereWithAggregatesInput | Prisma.ServerBackupScalarWhereWithAggregatesInput[] - OR?: Prisma.ServerBackupScalarWhereWithAggregatesInput[] - NOT?: Prisma.ServerBackupScalarWhereWithAggregatesInput | Prisma.ServerBackupScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"ServerBackup"> | string - serverId?: Prisma.StringWithAggregatesFilter<"ServerBackup"> | string - name?: Prisma.StringWithAggregatesFilter<"ServerBackup"> | string - ignoredFiles?: Prisma.JsonNullableWithAggregatesFilter<"ServerBackup"> - sha256Hash?: Prisma.StringNullableWithAggregatesFilter<"ServerBackup"> | string | null - bytes?: Prisma.BigIntWithAggregatesFilter<"ServerBackup"> | bigint | number - isSuccessful?: Prisma.BoolWithAggregatesFilter<"ServerBackup"> | boolean - isLocked?: Prisma.BoolWithAggregatesFilter<"ServerBackup"> | boolean - completedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"ServerBackup"> | Date | string | null - createdAt?: Prisma.DateTimeWithAggregatesFilter<"ServerBackup"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"ServerBackup"> | Date | string -} - -export type ServerBackupCreateInput = { - id: string - name: string - ignoredFiles?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - sha256Hash?: string | null - bytes?: bigint | number - isSuccessful?: boolean - isLocked?: boolean - completedAt?: Date | string | null - createdAt?: Date | string - updatedAt?: Date | string - server: Prisma.ServerCreateNestedOneWithoutBackupsInput -} - -export type ServerBackupUncheckedCreateInput = { - id: string - serverId: string - name: string - ignoredFiles?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - sha256Hash?: string | null - bytes?: bigint | number - isSuccessful?: boolean - isLocked?: boolean - completedAt?: Date | string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerBackupUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - ignoredFiles?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - sha256Hash?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - bytes?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - isSuccessful?: Prisma.BoolFieldUpdateOperationsInput | boolean - isLocked?: Prisma.BoolFieldUpdateOperationsInput | boolean - completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - server?: Prisma.ServerUpdateOneRequiredWithoutBackupsNestedInput -} - -export type ServerBackupUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - serverId?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - ignoredFiles?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - sha256Hash?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - bytes?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - isSuccessful?: Prisma.BoolFieldUpdateOperationsInput | boolean - isLocked?: Prisma.BoolFieldUpdateOperationsInput | boolean - completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerBackupCreateManyInput = { - id: string - serverId: string - name: string - ignoredFiles?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - sha256Hash?: string | null - bytes?: bigint | number - isSuccessful?: boolean - isLocked?: boolean - completedAt?: Date | string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerBackupUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - ignoredFiles?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - sha256Hash?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - bytes?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - isSuccessful?: Prisma.BoolFieldUpdateOperationsInput | boolean - isLocked?: Prisma.BoolFieldUpdateOperationsInput | boolean - completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerBackupUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - serverId?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - ignoredFiles?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - sha256Hash?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - bytes?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - isSuccessful?: Prisma.BoolFieldUpdateOperationsInput | boolean - isLocked?: Prisma.BoolFieldUpdateOperationsInput | boolean - completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerBackupListRelationFilter = { - every?: Prisma.ServerBackupWhereInput - some?: Prisma.ServerBackupWhereInput - none?: Prisma.ServerBackupWhereInput -} - -export type ServerBackupOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type ServerBackupCountOrderByAggregateInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - name?: Prisma.SortOrder - ignoredFiles?: Prisma.SortOrder - sha256Hash?: Prisma.SortOrder - bytes?: Prisma.SortOrder - isSuccessful?: Prisma.SortOrder - isLocked?: Prisma.SortOrder - completedAt?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ServerBackupAvgOrderByAggregateInput = { - bytes?: Prisma.SortOrder -} - -export type ServerBackupMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - name?: Prisma.SortOrder - sha256Hash?: Prisma.SortOrder - bytes?: Prisma.SortOrder - isSuccessful?: Prisma.SortOrder - isLocked?: Prisma.SortOrder - completedAt?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ServerBackupMinOrderByAggregateInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - name?: Prisma.SortOrder - sha256Hash?: Prisma.SortOrder - bytes?: Prisma.SortOrder - isSuccessful?: Prisma.SortOrder - isLocked?: Prisma.SortOrder - completedAt?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ServerBackupSumOrderByAggregateInput = { - bytes?: Prisma.SortOrder -} - -export type ServerBackupCreateNestedManyWithoutServerInput = { - create?: Prisma.XOR | Prisma.ServerBackupCreateWithoutServerInput[] | Prisma.ServerBackupUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerBackupCreateOrConnectWithoutServerInput | Prisma.ServerBackupCreateOrConnectWithoutServerInput[] - createMany?: Prisma.ServerBackupCreateManyServerInputEnvelope - connect?: Prisma.ServerBackupWhereUniqueInput | Prisma.ServerBackupWhereUniqueInput[] -} - -export type ServerBackupUncheckedCreateNestedManyWithoutServerInput = { - create?: Prisma.XOR | Prisma.ServerBackupCreateWithoutServerInput[] | Prisma.ServerBackupUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerBackupCreateOrConnectWithoutServerInput | Prisma.ServerBackupCreateOrConnectWithoutServerInput[] - createMany?: Prisma.ServerBackupCreateManyServerInputEnvelope - connect?: Prisma.ServerBackupWhereUniqueInput | Prisma.ServerBackupWhereUniqueInput[] -} - -export type ServerBackupUpdateManyWithoutServerNestedInput = { - create?: Prisma.XOR | Prisma.ServerBackupCreateWithoutServerInput[] | Prisma.ServerBackupUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerBackupCreateOrConnectWithoutServerInput | Prisma.ServerBackupCreateOrConnectWithoutServerInput[] - upsert?: Prisma.ServerBackupUpsertWithWhereUniqueWithoutServerInput | Prisma.ServerBackupUpsertWithWhereUniqueWithoutServerInput[] - createMany?: Prisma.ServerBackupCreateManyServerInputEnvelope - set?: Prisma.ServerBackupWhereUniqueInput | Prisma.ServerBackupWhereUniqueInput[] - disconnect?: Prisma.ServerBackupWhereUniqueInput | Prisma.ServerBackupWhereUniqueInput[] - delete?: Prisma.ServerBackupWhereUniqueInput | Prisma.ServerBackupWhereUniqueInput[] - connect?: Prisma.ServerBackupWhereUniqueInput | Prisma.ServerBackupWhereUniqueInput[] - update?: Prisma.ServerBackupUpdateWithWhereUniqueWithoutServerInput | Prisma.ServerBackupUpdateWithWhereUniqueWithoutServerInput[] - updateMany?: Prisma.ServerBackupUpdateManyWithWhereWithoutServerInput | Prisma.ServerBackupUpdateManyWithWhereWithoutServerInput[] - deleteMany?: Prisma.ServerBackupScalarWhereInput | Prisma.ServerBackupScalarWhereInput[] -} - -export type ServerBackupUncheckedUpdateManyWithoutServerNestedInput = { - create?: Prisma.XOR | Prisma.ServerBackupCreateWithoutServerInput[] | Prisma.ServerBackupUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerBackupCreateOrConnectWithoutServerInput | Prisma.ServerBackupCreateOrConnectWithoutServerInput[] - upsert?: Prisma.ServerBackupUpsertWithWhereUniqueWithoutServerInput | Prisma.ServerBackupUpsertWithWhereUniqueWithoutServerInput[] - createMany?: Prisma.ServerBackupCreateManyServerInputEnvelope - set?: Prisma.ServerBackupWhereUniqueInput | Prisma.ServerBackupWhereUniqueInput[] - disconnect?: Prisma.ServerBackupWhereUniqueInput | Prisma.ServerBackupWhereUniqueInput[] - delete?: Prisma.ServerBackupWhereUniqueInput | Prisma.ServerBackupWhereUniqueInput[] - connect?: Prisma.ServerBackupWhereUniqueInput | Prisma.ServerBackupWhereUniqueInput[] - update?: Prisma.ServerBackupUpdateWithWhereUniqueWithoutServerInput | Prisma.ServerBackupUpdateWithWhereUniqueWithoutServerInput[] - updateMany?: Prisma.ServerBackupUpdateManyWithWhereWithoutServerInput | Prisma.ServerBackupUpdateManyWithWhereWithoutServerInput[] - deleteMany?: Prisma.ServerBackupScalarWhereInput | Prisma.ServerBackupScalarWhereInput[] -} - -export type ServerBackupCreateWithoutServerInput = { - id: string - name: string - ignoredFiles?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - sha256Hash?: string | null - bytes?: bigint | number - isSuccessful?: boolean - isLocked?: boolean - completedAt?: Date | string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerBackupUncheckedCreateWithoutServerInput = { - id: string - name: string - ignoredFiles?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - sha256Hash?: string | null - bytes?: bigint | number - isSuccessful?: boolean - isLocked?: boolean - completedAt?: Date | string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerBackupCreateOrConnectWithoutServerInput = { - where: Prisma.ServerBackupWhereUniqueInput - create: Prisma.XOR -} - -export type ServerBackupCreateManyServerInputEnvelope = { - data: Prisma.ServerBackupCreateManyServerInput | Prisma.ServerBackupCreateManyServerInput[] - skipDuplicates?: boolean -} - -export type ServerBackupUpsertWithWhereUniqueWithoutServerInput = { - where: Prisma.ServerBackupWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type ServerBackupUpdateWithWhereUniqueWithoutServerInput = { - where: Prisma.ServerBackupWhereUniqueInput - data: Prisma.XOR -} - -export type ServerBackupUpdateManyWithWhereWithoutServerInput = { - where: Prisma.ServerBackupScalarWhereInput - data: Prisma.XOR -} - -export type ServerBackupScalarWhereInput = { - AND?: Prisma.ServerBackupScalarWhereInput | Prisma.ServerBackupScalarWhereInput[] - OR?: Prisma.ServerBackupScalarWhereInput[] - NOT?: Prisma.ServerBackupScalarWhereInput | Prisma.ServerBackupScalarWhereInput[] - id?: Prisma.StringFilter<"ServerBackup"> | string - serverId?: Prisma.StringFilter<"ServerBackup"> | string - name?: Prisma.StringFilter<"ServerBackup"> | string - ignoredFiles?: Prisma.JsonNullableFilter<"ServerBackup"> - sha256Hash?: Prisma.StringNullableFilter<"ServerBackup"> | string | null - bytes?: Prisma.BigIntFilter<"ServerBackup"> | bigint | number - isSuccessful?: Prisma.BoolFilter<"ServerBackup"> | boolean - isLocked?: Prisma.BoolFilter<"ServerBackup"> | boolean - completedAt?: Prisma.DateTimeNullableFilter<"ServerBackup"> | Date | string | null - createdAt?: Prisma.DateTimeFilter<"ServerBackup"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"ServerBackup"> | Date | string -} - -export type ServerBackupCreateManyServerInput = { - id: string - name: string - ignoredFiles?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - sha256Hash?: string | null - bytes?: bigint | number - isSuccessful?: boolean - isLocked?: boolean - completedAt?: Date | string | null - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerBackupUpdateWithoutServerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - ignoredFiles?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - sha256Hash?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - bytes?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - isSuccessful?: Prisma.BoolFieldUpdateOperationsInput | boolean - isLocked?: Prisma.BoolFieldUpdateOperationsInput | boolean - completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerBackupUncheckedUpdateWithoutServerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - ignoredFiles?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - sha256Hash?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - bytes?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - isSuccessful?: Prisma.BoolFieldUpdateOperationsInput | boolean - isLocked?: Prisma.BoolFieldUpdateOperationsInput | boolean - completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerBackupUncheckedUpdateManyWithoutServerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - ignoredFiles?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - sha256Hash?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - bytes?: Prisma.BigIntFieldUpdateOperationsInput | bigint | number - isSuccessful?: Prisma.BoolFieldUpdateOperationsInput | boolean - isLocked?: Prisma.BoolFieldUpdateOperationsInput | boolean - completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - - -export type ServerBackupSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - serverId?: boolean - name?: boolean - ignoredFiles?: boolean - sha256Hash?: boolean - bytes?: boolean - isSuccessful?: boolean - isLocked?: boolean - completedAt?: boolean - createdAt?: boolean - updatedAt?: boolean - server?: boolean | Prisma.ServerDefaultArgs -}, ExtArgs["result"]["serverBackup"]> - -export type ServerBackupSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - serverId?: boolean - name?: boolean - ignoredFiles?: boolean - sha256Hash?: boolean - bytes?: boolean - isSuccessful?: boolean - isLocked?: boolean - completedAt?: boolean - createdAt?: boolean - updatedAt?: boolean - server?: boolean | Prisma.ServerDefaultArgs -}, ExtArgs["result"]["serverBackup"]> - -export type ServerBackupSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - serverId?: boolean - name?: boolean - ignoredFiles?: boolean - sha256Hash?: boolean - bytes?: boolean - isSuccessful?: boolean - isLocked?: boolean - completedAt?: boolean - createdAt?: boolean - updatedAt?: boolean - server?: boolean | Prisma.ServerDefaultArgs -}, ExtArgs["result"]["serverBackup"]> - -export type ServerBackupSelectScalar = { - id?: boolean - serverId?: boolean - name?: boolean - ignoredFiles?: boolean - sha256Hash?: boolean - bytes?: boolean - isSuccessful?: boolean - isLocked?: boolean - completedAt?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type ServerBackupOmit = runtime.Types.Extensions.GetOmit<"id" | "serverId" | "name" | "ignoredFiles" | "sha256Hash" | "bytes" | "isSuccessful" | "isLocked" | "completedAt" | "createdAt" | "updatedAt", ExtArgs["result"]["serverBackup"]> -export type ServerBackupInclude = { - server?: boolean | Prisma.ServerDefaultArgs -} -export type ServerBackupIncludeCreateManyAndReturn = { - server?: boolean | Prisma.ServerDefaultArgs -} -export type ServerBackupIncludeUpdateManyAndReturn = { - server?: boolean | Prisma.ServerDefaultArgs -} - -export type $ServerBackupPayload = { - name: "ServerBackup" - objects: { - server: Prisma.$ServerPayload - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - serverId: string - name: string - ignoredFiles: runtime.JsonValue | null - sha256Hash: string | null - bytes: bigint - isSuccessful: boolean - isLocked: boolean - completedAt: Date | null - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["serverBackup"]> - composites: {} -} - -export type ServerBackupGetPayload = runtime.Types.Result.GetResult - -export type ServerBackupCountArgs = - Omit & { - select?: ServerBackupCountAggregateInputType | true - } - -export interface ServerBackupDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['ServerBackup'], meta: { name: 'ServerBackup' } } - /** - * Find zero or one ServerBackup that matches the filter. - * @param {ServerBackupFindUniqueArgs} args - Arguments to find a ServerBackup - * @example - * // Get one ServerBackup - * const serverBackup = await prisma.serverBackup.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__ServerBackupClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one ServerBackup that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {ServerBackupFindUniqueOrThrowArgs} args - Arguments to find a ServerBackup - * @example - * // Get one ServerBackup - * const serverBackup = await prisma.serverBackup.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__ServerBackupClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first ServerBackup that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerBackupFindFirstArgs} args - Arguments to find a ServerBackup - * @example - * // Get one ServerBackup - * const serverBackup = await prisma.serverBackup.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__ServerBackupClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first ServerBackup that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerBackupFindFirstOrThrowArgs} args - Arguments to find a ServerBackup - * @example - * // Get one ServerBackup - * const serverBackup = await prisma.serverBackup.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__ServerBackupClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more ServerBackups that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerBackupFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all ServerBackups - * const serverBackups = await prisma.serverBackup.findMany() - * - * // Get first 10 ServerBackups - * const serverBackups = await prisma.serverBackup.findMany({ take: 10 }) - * - * // Only select the `id` - * const serverBackupWithIdOnly = await prisma.serverBackup.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a ServerBackup. - * @param {ServerBackupCreateArgs} args - Arguments to create a ServerBackup. - * @example - * // Create one ServerBackup - * const ServerBackup = await prisma.serverBackup.create({ - * data: { - * // ... data to create a ServerBackup - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__ServerBackupClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many ServerBackups. - * @param {ServerBackupCreateManyArgs} args - Arguments to create many ServerBackups. - * @example - * // Create many ServerBackups - * const serverBackup = await prisma.serverBackup.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many ServerBackups and returns the data saved in the database. - * @param {ServerBackupCreateManyAndReturnArgs} args - Arguments to create many ServerBackups. - * @example - * // Create many ServerBackups - * const serverBackup = await prisma.serverBackup.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many ServerBackups and only return the `id` - * const serverBackupWithIdOnly = await prisma.serverBackup.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a ServerBackup. - * @param {ServerBackupDeleteArgs} args - Arguments to delete one ServerBackup. - * @example - * // Delete one ServerBackup - * const ServerBackup = await prisma.serverBackup.delete({ - * where: { - * // ... filter to delete one ServerBackup - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__ServerBackupClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one ServerBackup. - * @param {ServerBackupUpdateArgs} args - Arguments to update one ServerBackup. - * @example - * // Update one ServerBackup - * const serverBackup = await prisma.serverBackup.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__ServerBackupClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more ServerBackups. - * @param {ServerBackupDeleteManyArgs} args - Arguments to filter ServerBackups to delete. - * @example - * // Delete a few ServerBackups - * const { count } = await prisma.serverBackup.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more ServerBackups. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerBackupUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many ServerBackups - * const serverBackup = await prisma.serverBackup.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more ServerBackups and returns the data updated in the database. - * @param {ServerBackupUpdateManyAndReturnArgs} args - Arguments to update many ServerBackups. - * @example - * // Update many ServerBackups - * const serverBackup = await prisma.serverBackup.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more ServerBackups and only return the `id` - * const serverBackupWithIdOnly = await prisma.serverBackup.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one ServerBackup. - * @param {ServerBackupUpsertArgs} args - Arguments to update or create a ServerBackup. - * @example - * // Update or create a ServerBackup - * const serverBackup = await prisma.serverBackup.upsert({ - * create: { - * // ... data to create a ServerBackup - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the ServerBackup we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__ServerBackupClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of ServerBackups. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerBackupCountArgs} args - Arguments to filter ServerBackups to count. - * @example - * // Count the number of ServerBackups - * const count = await prisma.serverBackup.count({ - * where: { - * // ... the filter for the ServerBackups we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a ServerBackup. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerBackupAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by ServerBackup. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerBackupGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends ServerBackupGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: ServerBackupGroupByArgs['orderBy'] } - : { orderBy?: ServerBackupGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetServerBackupGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the ServerBackup model - */ -readonly fields: ServerBackupFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for ServerBackup. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__ServerBackupClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - server = {}>(args?: Prisma.Subset>): Prisma.Prisma__ServerClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the ServerBackup model - */ -export interface ServerBackupFieldRefs { - readonly id: Prisma.FieldRef<"ServerBackup", 'String'> - readonly serverId: Prisma.FieldRef<"ServerBackup", 'String'> - readonly name: Prisma.FieldRef<"ServerBackup", 'String'> - readonly ignoredFiles: Prisma.FieldRef<"ServerBackup", 'Json'> - readonly sha256Hash: Prisma.FieldRef<"ServerBackup", 'String'> - readonly bytes: Prisma.FieldRef<"ServerBackup", 'BigInt'> - readonly isSuccessful: Prisma.FieldRef<"ServerBackup", 'Boolean'> - readonly isLocked: Prisma.FieldRef<"ServerBackup", 'Boolean'> - readonly completedAt: Prisma.FieldRef<"ServerBackup", 'DateTime'> - readonly createdAt: Prisma.FieldRef<"ServerBackup", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"ServerBackup", 'DateTime'> -} - - -// Custom InputTypes -/** - * ServerBackup findUnique - */ -export type ServerBackupFindUniqueArgs = { - /** - * Select specific fields to fetch from the ServerBackup - */ - select?: Prisma.ServerBackupSelect | null - /** - * Omit specific fields from the ServerBackup - */ - omit?: Prisma.ServerBackupOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerBackupInclude | null - /** - * Filter, which ServerBackup to fetch. - */ - where: Prisma.ServerBackupWhereUniqueInput -} - -/** - * ServerBackup findUniqueOrThrow - */ -export type ServerBackupFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the ServerBackup - */ - select?: Prisma.ServerBackupSelect | null - /** - * Omit specific fields from the ServerBackup - */ - omit?: Prisma.ServerBackupOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerBackupInclude | null - /** - * Filter, which ServerBackup to fetch. - */ - where: Prisma.ServerBackupWhereUniqueInput -} - -/** - * ServerBackup findFirst - */ -export type ServerBackupFindFirstArgs = { - /** - * Select specific fields to fetch from the ServerBackup - */ - select?: Prisma.ServerBackupSelect | null - /** - * Omit specific fields from the ServerBackup - */ - omit?: Prisma.ServerBackupOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerBackupInclude | null - /** - * Filter, which ServerBackup to fetch. - */ - where?: Prisma.ServerBackupWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerBackups to fetch. - */ - orderBy?: Prisma.ServerBackupOrderByWithRelationInput | Prisma.ServerBackupOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for ServerBackups. - */ - cursor?: Prisma.ServerBackupWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerBackups from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerBackups. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of ServerBackups. - */ - distinct?: Prisma.ServerBackupScalarFieldEnum | Prisma.ServerBackupScalarFieldEnum[] -} - -/** - * ServerBackup findFirstOrThrow - */ -export type ServerBackupFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the ServerBackup - */ - select?: Prisma.ServerBackupSelect | null - /** - * Omit specific fields from the ServerBackup - */ - omit?: Prisma.ServerBackupOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerBackupInclude | null - /** - * Filter, which ServerBackup to fetch. - */ - where?: Prisma.ServerBackupWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerBackups to fetch. - */ - orderBy?: Prisma.ServerBackupOrderByWithRelationInput | Prisma.ServerBackupOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for ServerBackups. - */ - cursor?: Prisma.ServerBackupWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerBackups from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerBackups. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of ServerBackups. - */ - distinct?: Prisma.ServerBackupScalarFieldEnum | Prisma.ServerBackupScalarFieldEnum[] -} - -/** - * ServerBackup findMany - */ -export type ServerBackupFindManyArgs = { - /** - * Select specific fields to fetch from the ServerBackup - */ - select?: Prisma.ServerBackupSelect | null - /** - * Omit specific fields from the ServerBackup - */ - omit?: Prisma.ServerBackupOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerBackupInclude | null - /** - * Filter, which ServerBackups to fetch. - */ - where?: Prisma.ServerBackupWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerBackups to fetch. - */ - orderBy?: Prisma.ServerBackupOrderByWithRelationInput | Prisma.ServerBackupOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing ServerBackups. - */ - cursor?: Prisma.ServerBackupWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerBackups from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerBackups. - */ - skip?: number - distinct?: Prisma.ServerBackupScalarFieldEnum | Prisma.ServerBackupScalarFieldEnum[] -} - -/** - * ServerBackup create - */ -export type ServerBackupCreateArgs = { - /** - * Select specific fields to fetch from the ServerBackup - */ - select?: Prisma.ServerBackupSelect | null - /** - * Omit specific fields from the ServerBackup - */ - omit?: Prisma.ServerBackupOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerBackupInclude | null - /** - * The data needed to create a ServerBackup. - */ - data: Prisma.XOR -} - -/** - * ServerBackup createMany - */ -export type ServerBackupCreateManyArgs = { - /** - * The data used to create many ServerBackups. - */ - data: Prisma.ServerBackupCreateManyInput | Prisma.ServerBackupCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * ServerBackup createManyAndReturn - */ -export type ServerBackupCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the ServerBackup - */ - select?: Prisma.ServerBackupSelectCreateManyAndReturn | null - /** - * Omit specific fields from the ServerBackup - */ - omit?: Prisma.ServerBackupOmit | null - /** - * The data used to create many ServerBackups. - */ - data: Prisma.ServerBackupCreateManyInput | Prisma.ServerBackupCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerBackupIncludeCreateManyAndReturn | null -} - -/** - * ServerBackup update - */ -export type ServerBackupUpdateArgs = { - /** - * Select specific fields to fetch from the ServerBackup - */ - select?: Prisma.ServerBackupSelect | null - /** - * Omit specific fields from the ServerBackup - */ - omit?: Prisma.ServerBackupOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerBackupInclude | null - /** - * The data needed to update a ServerBackup. - */ - data: Prisma.XOR - /** - * Choose, which ServerBackup to update. - */ - where: Prisma.ServerBackupWhereUniqueInput -} - -/** - * ServerBackup updateMany - */ -export type ServerBackupUpdateManyArgs = { - /** - * The data used to update ServerBackups. - */ - data: Prisma.XOR - /** - * Filter which ServerBackups to update - */ - where?: Prisma.ServerBackupWhereInput - /** - * Limit how many ServerBackups to update. - */ - limit?: number -} - -/** - * ServerBackup updateManyAndReturn - */ -export type ServerBackupUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the ServerBackup - */ - select?: Prisma.ServerBackupSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the ServerBackup - */ - omit?: Prisma.ServerBackupOmit | null - /** - * The data used to update ServerBackups. - */ - data: Prisma.XOR - /** - * Filter which ServerBackups to update - */ - where?: Prisma.ServerBackupWhereInput - /** - * Limit how many ServerBackups to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerBackupIncludeUpdateManyAndReturn | null -} - -/** - * ServerBackup upsert - */ -export type ServerBackupUpsertArgs = { - /** - * Select specific fields to fetch from the ServerBackup - */ - select?: Prisma.ServerBackupSelect | null - /** - * Omit specific fields from the ServerBackup - */ - omit?: Prisma.ServerBackupOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerBackupInclude | null - /** - * The filter to search for the ServerBackup to update in case it exists. - */ - where: Prisma.ServerBackupWhereUniqueInput - /** - * In case the ServerBackup found by the `where` argument doesn't exist, create a new ServerBackup with this data. - */ - create: Prisma.XOR - /** - * In case the ServerBackup was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * ServerBackup delete - */ -export type ServerBackupDeleteArgs = { - /** - * Select specific fields to fetch from the ServerBackup - */ - select?: Prisma.ServerBackupSelect | null - /** - * Omit specific fields from the ServerBackup - */ - omit?: Prisma.ServerBackupOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerBackupInclude | null - /** - * Filter which ServerBackup to delete. - */ - where: Prisma.ServerBackupWhereUniqueInput -} - -/** - * ServerBackup deleteMany - */ -export type ServerBackupDeleteManyArgs = { - /** - * Filter which ServerBackups to delete - */ - where?: Prisma.ServerBackupWhereInput - /** - * Limit how many ServerBackups to delete. - */ - limit?: number -} - -/** - * ServerBackup without action - */ -export type ServerBackupDefaultArgs = { - /** - * Select specific fields to fetch from the ServerBackup - */ - select?: Prisma.ServerBackupSelect | null - /** - * Omit specific fields from the ServerBackup - */ - omit?: Prisma.ServerBackupOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerBackupInclude | null -} diff --git a/prisma/generated/prisma/models/ServerDatabase.ts b/prisma/generated/prisma/models/ServerDatabase.ts deleted file mode 100644 index 11eba0e..0000000 --- a/prisma/generated/prisma/models/ServerDatabase.ts +++ /dev/null @@ -1,1536 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `ServerDatabase` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model ServerDatabase - * - */ -export type ServerDatabaseModel = runtime.Types.Result.DefaultSelection - -export type AggregateServerDatabase = { - _count: ServerDatabaseCountAggregateOutputType | null - _avg: ServerDatabaseAvgAggregateOutputType | null - _sum: ServerDatabaseSumAggregateOutputType | null - _min: ServerDatabaseMinAggregateOutputType | null - _max: ServerDatabaseMaxAggregateOutputType | null -} - -export type ServerDatabaseAvgAggregateOutputType = { - id: number | null - port: number | null - maxConnections: number | null -} - -export type ServerDatabaseSumAggregateOutputType = { - id: number | null - port: number | null - maxConnections: number | null -} - -export type ServerDatabaseMinAggregateOutputType = { - id: number | null - serverId: string | null - name: string | null - username: string | null - host: string | null - port: number | null - maxConnections: number | null - createdAt: Date | null - updatedAt: Date | null -} - -export type ServerDatabaseMaxAggregateOutputType = { - id: number | null - serverId: string | null - name: string | null - username: string | null - host: string | null - port: number | null - maxConnections: number | null - createdAt: Date | null - updatedAt: Date | null -} - -export type ServerDatabaseCountAggregateOutputType = { - id: number - serverId: number - name: number - username: number - host: number - port: number - maxConnections: number - createdAt: number - updatedAt: number - _all: number -} - - -export type ServerDatabaseAvgAggregateInputType = { - id?: true - port?: true - maxConnections?: true -} - -export type ServerDatabaseSumAggregateInputType = { - id?: true - port?: true - maxConnections?: true -} - -export type ServerDatabaseMinAggregateInputType = { - id?: true - serverId?: true - name?: true - username?: true - host?: true - port?: true - maxConnections?: true - createdAt?: true - updatedAt?: true -} - -export type ServerDatabaseMaxAggregateInputType = { - id?: true - serverId?: true - name?: true - username?: true - host?: true - port?: true - maxConnections?: true - createdAt?: true - updatedAt?: true -} - -export type ServerDatabaseCountAggregateInputType = { - id?: true - serverId?: true - name?: true - username?: true - host?: true - port?: true - maxConnections?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type ServerDatabaseAggregateArgs = { - /** - * Filter which ServerDatabase to aggregate. - */ - where?: Prisma.ServerDatabaseWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerDatabases to fetch. - */ - orderBy?: Prisma.ServerDatabaseOrderByWithRelationInput | Prisma.ServerDatabaseOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.ServerDatabaseWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerDatabases from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerDatabases. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned ServerDatabases - **/ - _count?: true | ServerDatabaseCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: ServerDatabaseAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: ServerDatabaseSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: ServerDatabaseMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: ServerDatabaseMaxAggregateInputType -} - -export type GetServerDatabaseAggregateType = { - [P in keyof T & keyof AggregateServerDatabase]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type ServerDatabaseGroupByArgs = { - where?: Prisma.ServerDatabaseWhereInput - orderBy?: Prisma.ServerDatabaseOrderByWithAggregationInput | Prisma.ServerDatabaseOrderByWithAggregationInput[] - by: Prisma.ServerDatabaseScalarFieldEnum[] | Prisma.ServerDatabaseScalarFieldEnum - having?: Prisma.ServerDatabaseScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: ServerDatabaseCountAggregateInputType | true - _avg?: ServerDatabaseAvgAggregateInputType - _sum?: ServerDatabaseSumAggregateInputType - _min?: ServerDatabaseMinAggregateInputType - _max?: ServerDatabaseMaxAggregateInputType -} - -export type ServerDatabaseGroupByOutputType = { - id: number - serverId: string - name: string - username: string - host: string - port: number - maxConnections: number - createdAt: Date - updatedAt: Date - _count: ServerDatabaseCountAggregateOutputType | null - _avg: ServerDatabaseAvgAggregateOutputType | null - _sum: ServerDatabaseSumAggregateOutputType | null - _min: ServerDatabaseMinAggregateOutputType | null - _max: ServerDatabaseMaxAggregateOutputType | null -} - -type GetServerDatabaseGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof ServerDatabaseGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type ServerDatabaseWhereInput = { - AND?: Prisma.ServerDatabaseWhereInput | Prisma.ServerDatabaseWhereInput[] - OR?: Prisma.ServerDatabaseWhereInput[] - NOT?: Prisma.ServerDatabaseWhereInput | Prisma.ServerDatabaseWhereInput[] - id?: Prisma.IntFilter<"ServerDatabase"> | number - serverId?: Prisma.StringFilter<"ServerDatabase"> | string - name?: Prisma.StringFilter<"ServerDatabase"> | string - username?: Prisma.StringFilter<"ServerDatabase"> | string - host?: Prisma.StringFilter<"ServerDatabase"> | string - port?: Prisma.IntFilter<"ServerDatabase"> | number - maxConnections?: Prisma.IntFilter<"ServerDatabase"> | number - createdAt?: Prisma.DateTimeFilter<"ServerDatabase"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"ServerDatabase"> | Date | string - server?: Prisma.XOR -} - -export type ServerDatabaseOrderByWithRelationInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - name?: Prisma.SortOrder - username?: Prisma.SortOrder - host?: Prisma.SortOrder - port?: Prisma.SortOrder - maxConnections?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - server?: Prisma.ServerOrderByWithRelationInput -} - -export type ServerDatabaseWhereUniqueInput = Prisma.AtLeast<{ - id?: number - AND?: Prisma.ServerDatabaseWhereInput | Prisma.ServerDatabaseWhereInput[] - OR?: Prisma.ServerDatabaseWhereInput[] - NOT?: Prisma.ServerDatabaseWhereInput | Prisma.ServerDatabaseWhereInput[] - serverId?: Prisma.StringFilter<"ServerDatabase"> | string - name?: Prisma.StringFilter<"ServerDatabase"> | string - username?: Prisma.StringFilter<"ServerDatabase"> | string - host?: Prisma.StringFilter<"ServerDatabase"> | string - port?: Prisma.IntFilter<"ServerDatabase"> | number - maxConnections?: Prisma.IntFilter<"ServerDatabase"> | number - createdAt?: Prisma.DateTimeFilter<"ServerDatabase"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"ServerDatabase"> | Date | string - server?: Prisma.XOR -}, "id"> - -export type ServerDatabaseOrderByWithAggregationInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - name?: Prisma.SortOrder - username?: Prisma.SortOrder - host?: Prisma.SortOrder - port?: Prisma.SortOrder - maxConnections?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.ServerDatabaseCountOrderByAggregateInput - _avg?: Prisma.ServerDatabaseAvgOrderByAggregateInput - _max?: Prisma.ServerDatabaseMaxOrderByAggregateInput - _min?: Prisma.ServerDatabaseMinOrderByAggregateInput - _sum?: Prisma.ServerDatabaseSumOrderByAggregateInput -} - -export type ServerDatabaseScalarWhereWithAggregatesInput = { - AND?: Prisma.ServerDatabaseScalarWhereWithAggregatesInput | Prisma.ServerDatabaseScalarWhereWithAggregatesInput[] - OR?: Prisma.ServerDatabaseScalarWhereWithAggregatesInput[] - NOT?: Prisma.ServerDatabaseScalarWhereWithAggregatesInput | Prisma.ServerDatabaseScalarWhereWithAggregatesInput[] - id?: Prisma.IntWithAggregatesFilter<"ServerDatabase"> | number - serverId?: Prisma.StringWithAggregatesFilter<"ServerDatabase"> | string - name?: Prisma.StringWithAggregatesFilter<"ServerDatabase"> | string - username?: Prisma.StringWithAggregatesFilter<"ServerDatabase"> | string - host?: Prisma.StringWithAggregatesFilter<"ServerDatabase"> | string - port?: Prisma.IntWithAggregatesFilter<"ServerDatabase"> | number - maxConnections?: Prisma.IntWithAggregatesFilter<"ServerDatabase"> | number - createdAt?: Prisma.DateTimeWithAggregatesFilter<"ServerDatabase"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"ServerDatabase"> | Date | string -} - -export type ServerDatabaseCreateInput = { - id: number - name: string - username: string - host: string - port?: number - maxConnections?: number - createdAt?: Date | string - updatedAt?: Date | string - server: Prisma.ServerCreateNestedOneWithoutDatabasesInput -} - -export type ServerDatabaseUncheckedCreateInput = { - id: number - serverId: string - name: string - username: string - host: string - port?: number - maxConnections?: number - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerDatabaseUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - username?: Prisma.StringFieldUpdateOperationsInput | string - host?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - maxConnections?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - server?: Prisma.ServerUpdateOneRequiredWithoutDatabasesNestedInput -} - -export type ServerDatabaseUncheckedUpdateInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - serverId?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - username?: Prisma.StringFieldUpdateOperationsInput | string - host?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - maxConnections?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerDatabaseCreateManyInput = { - id: number - serverId: string - name: string - username: string - host: string - port?: number - maxConnections?: number - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerDatabaseUpdateManyMutationInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - username?: Prisma.StringFieldUpdateOperationsInput | string - host?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - maxConnections?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerDatabaseUncheckedUpdateManyInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - serverId?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - username?: Prisma.StringFieldUpdateOperationsInput | string - host?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - maxConnections?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerDatabaseListRelationFilter = { - every?: Prisma.ServerDatabaseWhereInput - some?: Prisma.ServerDatabaseWhereInput - none?: Prisma.ServerDatabaseWhereInput -} - -export type ServerDatabaseOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type ServerDatabaseCountOrderByAggregateInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - name?: Prisma.SortOrder - username?: Prisma.SortOrder - host?: Prisma.SortOrder - port?: Prisma.SortOrder - maxConnections?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ServerDatabaseAvgOrderByAggregateInput = { - id?: Prisma.SortOrder - port?: Prisma.SortOrder - maxConnections?: Prisma.SortOrder -} - -export type ServerDatabaseMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - name?: Prisma.SortOrder - username?: Prisma.SortOrder - host?: Prisma.SortOrder - port?: Prisma.SortOrder - maxConnections?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ServerDatabaseMinOrderByAggregateInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - name?: Prisma.SortOrder - username?: Prisma.SortOrder - host?: Prisma.SortOrder - port?: Prisma.SortOrder - maxConnections?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ServerDatabaseSumOrderByAggregateInput = { - id?: Prisma.SortOrder - port?: Prisma.SortOrder - maxConnections?: Prisma.SortOrder -} - -export type ServerDatabaseCreateNestedManyWithoutServerInput = { - create?: Prisma.XOR | Prisma.ServerDatabaseCreateWithoutServerInput[] | Prisma.ServerDatabaseUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerDatabaseCreateOrConnectWithoutServerInput | Prisma.ServerDatabaseCreateOrConnectWithoutServerInput[] - createMany?: Prisma.ServerDatabaseCreateManyServerInputEnvelope - connect?: Prisma.ServerDatabaseWhereUniqueInput | Prisma.ServerDatabaseWhereUniqueInput[] -} - -export type ServerDatabaseUncheckedCreateNestedManyWithoutServerInput = { - create?: Prisma.XOR | Prisma.ServerDatabaseCreateWithoutServerInput[] | Prisma.ServerDatabaseUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerDatabaseCreateOrConnectWithoutServerInput | Prisma.ServerDatabaseCreateOrConnectWithoutServerInput[] - createMany?: Prisma.ServerDatabaseCreateManyServerInputEnvelope - connect?: Prisma.ServerDatabaseWhereUniqueInput | Prisma.ServerDatabaseWhereUniqueInput[] -} - -export type ServerDatabaseUpdateManyWithoutServerNestedInput = { - create?: Prisma.XOR | Prisma.ServerDatabaseCreateWithoutServerInput[] | Prisma.ServerDatabaseUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerDatabaseCreateOrConnectWithoutServerInput | Prisma.ServerDatabaseCreateOrConnectWithoutServerInput[] - upsert?: Prisma.ServerDatabaseUpsertWithWhereUniqueWithoutServerInput | Prisma.ServerDatabaseUpsertWithWhereUniqueWithoutServerInput[] - createMany?: Prisma.ServerDatabaseCreateManyServerInputEnvelope - set?: Prisma.ServerDatabaseWhereUniqueInput | Prisma.ServerDatabaseWhereUniqueInput[] - disconnect?: Prisma.ServerDatabaseWhereUniqueInput | Prisma.ServerDatabaseWhereUniqueInput[] - delete?: Prisma.ServerDatabaseWhereUniqueInput | Prisma.ServerDatabaseWhereUniqueInput[] - connect?: Prisma.ServerDatabaseWhereUniqueInput | Prisma.ServerDatabaseWhereUniqueInput[] - update?: Prisma.ServerDatabaseUpdateWithWhereUniqueWithoutServerInput | Prisma.ServerDatabaseUpdateWithWhereUniqueWithoutServerInput[] - updateMany?: Prisma.ServerDatabaseUpdateManyWithWhereWithoutServerInput | Prisma.ServerDatabaseUpdateManyWithWhereWithoutServerInput[] - deleteMany?: Prisma.ServerDatabaseScalarWhereInput | Prisma.ServerDatabaseScalarWhereInput[] -} - -export type ServerDatabaseUncheckedUpdateManyWithoutServerNestedInput = { - create?: Prisma.XOR | Prisma.ServerDatabaseCreateWithoutServerInput[] | Prisma.ServerDatabaseUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerDatabaseCreateOrConnectWithoutServerInput | Prisma.ServerDatabaseCreateOrConnectWithoutServerInput[] - upsert?: Prisma.ServerDatabaseUpsertWithWhereUniqueWithoutServerInput | Prisma.ServerDatabaseUpsertWithWhereUniqueWithoutServerInput[] - createMany?: Prisma.ServerDatabaseCreateManyServerInputEnvelope - set?: Prisma.ServerDatabaseWhereUniqueInput | Prisma.ServerDatabaseWhereUniqueInput[] - disconnect?: Prisma.ServerDatabaseWhereUniqueInput | Prisma.ServerDatabaseWhereUniqueInput[] - delete?: Prisma.ServerDatabaseWhereUniqueInput | Prisma.ServerDatabaseWhereUniqueInput[] - connect?: Prisma.ServerDatabaseWhereUniqueInput | Prisma.ServerDatabaseWhereUniqueInput[] - update?: Prisma.ServerDatabaseUpdateWithWhereUniqueWithoutServerInput | Prisma.ServerDatabaseUpdateWithWhereUniqueWithoutServerInput[] - updateMany?: Prisma.ServerDatabaseUpdateManyWithWhereWithoutServerInput | Prisma.ServerDatabaseUpdateManyWithWhereWithoutServerInput[] - deleteMany?: Prisma.ServerDatabaseScalarWhereInput | Prisma.ServerDatabaseScalarWhereInput[] -} - -export type ServerDatabaseCreateWithoutServerInput = { - id: number - name: string - username: string - host: string - port?: number - maxConnections?: number - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerDatabaseUncheckedCreateWithoutServerInput = { - id: number - name: string - username: string - host: string - port?: number - maxConnections?: number - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerDatabaseCreateOrConnectWithoutServerInput = { - where: Prisma.ServerDatabaseWhereUniqueInput - create: Prisma.XOR -} - -export type ServerDatabaseCreateManyServerInputEnvelope = { - data: Prisma.ServerDatabaseCreateManyServerInput | Prisma.ServerDatabaseCreateManyServerInput[] - skipDuplicates?: boolean -} - -export type ServerDatabaseUpsertWithWhereUniqueWithoutServerInput = { - where: Prisma.ServerDatabaseWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type ServerDatabaseUpdateWithWhereUniqueWithoutServerInput = { - where: Prisma.ServerDatabaseWhereUniqueInput - data: Prisma.XOR -} - -export type ServerDatabaseUpdateManyWithWhereWithoutServerInput = { - where: Prisma.ServerDatabaseScalarWhereInput - data: Prisma.XOR -} - -export type ServerDatabaseScalarWhereInput = { - AND?: Prisma.ServerDatabaseScalarWhereInput | Prisma.ServerDatabaseScalarWhereInput[] - OR?: Prisma.ServerDatabaseScalarWhereInput[] - NOT?: Prisma.ServerDatabaseScalarWhereInput | Prisma.ServerDatabaseScalarWhereInput[] - id?: Prisma.IntFilter<"ServerDatabase"> | number - serverId?: Prisma.StringFilter<"ServerDatabase"> | string - name?: Prisma.StringFilter<"ServerDatabase"> | string - username?: Prisma.StringFilter<"ServerDatabase"> | string - host?: Prisma.StringFilter<"ServerDatabase"> | string - port?: Prisma.IntFilter<"ServerDatabase"> | number - maxConnections?: Prisma.IntFilter<"ServerDatabase"> | number - createdAt?: Prisma.DateTimeFilter<"ServerDatabase"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"ServerDatabase"> | Date | string -} - -export type ServerDatabaseCreateManyServerInput = { - id: number - name: string - username: string - host: string - port?: number - maxConnections?: number - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerDatabaseUpdateWithoutServerInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - username?: Prisma.StringFieldUpdateOperationsInput | string - host?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - maxConnections?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerDatabaseUncheckedUpdateWithoutServerInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - username?: Prisma.StringFieldUpdateOperationsInput | string - host?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - maxConnections?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerDatabaseUncheckedUpdateManyWithoutServerInput = { - id?: Prisma.IntFieldUpdateOperationsInput | number - name?: Prisma.StringFieldUpdateOperationsInput | string - username?: Prisma.StringFieldUpdateOperationsInput | string - host?: Prisma.StringFieldUpdateOperationsInput | string - port?: Prisma.IntFieldUpdateOperationsInput | number - maxConnections?: Prisma.IntFieldUpdateOperationsInput | number - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - - -export type ServerDatabaseSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - serverId?: boolean - name?: boolean - username?: boolean - host?: boolean - port?: boolean - maxConnections?: boolean - createdAt?: boolean - updatedAt?: boolean - server?: boolean | Prisma.ServerDefaultArgs -}, ExtArgs["result"]["serverDatabase"]> - -export type ServerDatabaseSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - serverId?: boolean - name?: boolean - username?: boolean - host?: boolean - port?: boolean - maxConnections?: boolean - createdAt?: boolean - updatedAt?: boolean - server?: boolean | Prisma.ServerDefaultArgs -}, ExtArgs["result"]["serverDatabase"]> - -export type ServerDatabaseSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - serverId?: boolean - name?: boolean - username?: boolean - host?: boolean - port?: boolean - maxConnections?: boolean - createdAt?: boolean - updatedAt?: boolean - server?: boolean | Prisma.ServerDefaultArgs -}, ExtArgs["result"]["serverDatabase"]> - -export type ServerDatabaseSelectScalar = { - id?: boolean - serverId?: boolean - name?: boolean - username?: boolean - host?: boolean - port?: boolean - maxConnections?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type ServerDatabaseOmit = runtime.Types.Extensions.GetOmit<"id" | "serverId" | "name" | "username" | "host" | "port" | "maxConnections" | "createdAt" | "updatedAt", ExtArgs["result"]["serverDatabase"]> -export type ServerDatabaseInclude = { - server?: boolean | Prisma.ServerDefaultArgs -} -export type ServerDatabaseIncludeCreateManyAndReturn = { - server?: boolean | Prisma.ServerDefaultArgs -} -export type ServerDatabaseIncludeUpdateManyAndReturn = { - server?: boolean | Prisma.ServerDefaultArgs -} - -export type $ServerDatabasePayload = { - name: "ServerDatabase" - objects: { - server: Prisma.$ServerPayload - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: number - serverId: string - name: string - username: string - host: string - port: number - maxConnections: number - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["serverDatabase"]> - composites: {} -} - -export type ServerDatabaseGetPayload = runtime.Types.Result.GetResult - -export type ServerDatabaseCountArgs = - Omit & { - select?: ServerDatabaseCountAggregateInputType | true - } - -export interface ServerDatabaseDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['ServerDatabase'], meta: { name: 'ServerDatabase' } } - /** - * Find zero or one ServerDatabase that matches the filter. - * @param {ServerDatabaseFindUniqueArgs} args - Arguments to find a ServerDatabase - * @example - * // Get one ServerDatabase - * const serverDatabase = await prisma.serverDatabase.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__ServerDatabaseClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one ServerDatabase that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {ServerDatabaseFindUniqueOrThrowArgs} args - Arguments to find a ServerDatabase - * @example - * // Get one ServerDatabase - * const serverDatabase = await prisma.serverDatabase.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__ServerDatabaseClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first ServerDatabase that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerDatabaseFindFirstArgs} args - Arguments to find a ServerDatabase - * @example - * // Get one ServerDatabase - * const serverDatabase = await prisma.serverDatabase.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__ServerDatabaseClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first ServerDatabase that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerDatabaseFindFirstOrThrowArgs} args - Arguments to find a ServerDatabase - * @example - * // Get one ServerDatabase - * const serverDatabase = await prisma.serverDatabase.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__ServerDatabaseClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more ServerDatabases that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerDatabaseFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all ServerDatabases - * const serverDatabases = await prisma.serverDatabase.findMany() - * - * // Get first 10 ServerDatabases - * const serverDatabases = await prisma.serverDatabase.findMany({ take: 10 }) - * - * // Only select the `id` - * const serverDatabaseWithIdOnly = await prisma.serverDatabase.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a ServerDatabase. - * @param {ServerDatabaseCreateArgs} args - Arguments to create a ServerDatabase. - * @example - * // Create one ServerDatabase - * const ServerDatabase = await prisma.serverDatabase.create({ - * data: { - * // ... data to create a ServerDatabase - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__ServerDatabaseClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many ServerDatabases. - * @param {ServerDatabaseCreateManyArgs} args - Arguments to create many ServerDatabases. - * @example - * // Create many ServerDatabases - * const serverDatabase = await prisma.serverDatabase.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many ServerDatabases and returns the data saved in the database. - * @param {ServerDatabaseCreateManyAndReturnArgs} args - Arguments to create many ServerDatabases. - * @example - * // Create many ServerDatabases - * const serverDatabase = await prisma.serverDatabase.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many ServerDatabases and only return the `id` - * const serverDatabaseWithIdOnly = await prisma.serverDatabase.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a ServerDatabase. - * @param {ServerDatabaseDeleteArgs} args - Arguments to delete one ServerDatabase. - * @example - * // Delete one ServerDatabase - * const ServerDatabase = await prisma.serverDatabase.delete({ - * where: { - * // ... filter to delete one ServerDatabase - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__ServerDatabaseClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one ServerDatabase. - * @param {ServerDatabaseUpdateArgs} args - Arguments to update one ServerDatabase. - * @example - * // Update one ServerDatabase - * const serverDatabase = await prisma.serverDatabase.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__ServerDatabaseClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more ServerDatabases. - * @param {ServerDatabaseDeleteManyArgs} args - Arguments to filter ServerDatabases to delete. - * @example - * // Delete a few ServerDatabases - * const { count } = await prisma.serverDatabase.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more ServerDatabases. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerDatabaseUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many ServerDatabases - * const serverDatabase = await prisma.serverDatabase.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more ServerDatabases and returns the data updated in the database. - * @param {ServerDatabaseUpdateManyAndReturnArgs} args - Arguments to update many ServerDatabases. - * @example - * // Update many ServerDatabases - * const serverDatabase = await prisma.serverDatabase.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more ServerDatabases and only return the `id` - * const serverDatabaseWithIdOnly = await prisma.serverDatabase.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one ServerDatabase. - * @param {ServerDatabaseUpsertArgs} args - Arguments to update or create a ServerDatabase. - * @example - * // Update or create a ServerDatabase - * const serverDatabase = await prisma.serverDatabase.upsert({ - * create: { - * // ... data to create a ServerDatabase - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the ServerDatabase we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__ServerDatabaseClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of ServerDatabases. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerDatabaseCountArgs} args - Arguments to filter ServerDatabases to count. - * @example - * // Count the number of ServerDatabases - * const count = await prisma.serverDatabase.count({ - * where: { - * // ... the filter for the ServerDatabases we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a ServerDatabase. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerDatabaseAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by ServerDatabase. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerDatabaseGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends ServerDatabaseGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: ServerDatabaseGroupByArgs['orderBy'] } - : { orderBy?: ServerDatabaseGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetServerDatabaseGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the ServerDatabase model - */ -readonly fields: ServerDatabaseFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for ServerDatabase. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__ServerDatabaseClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - server = {}>(args?: Prisma.Subset>): Prisma.Prisma__ServerClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the ServerDatabase model - */ -export interface ServerDatabaseFieldRefs { - readonly id: Prisma.FieldRef<"ServerDatabase", 'Int'> - readonly serverId: Prisma.FieldRef<"ServerDatabase", 'String'> - readonly name: Prisma.FieldRef<"ServerDatabase", 'String'> - readonly username: Prisma.FieldRef<"ServerDatabase", 'String'> - readonly host: Prisma.FieldRef<"ServerDatabase", 'String'> - readonly port: Prisma.FieldRef<"ServerDatabase", 'Int'> - readonly maxConnections: Prisma.FieldRef<"ServerDatabase", 'Int'> - readonly createdAt: Prisma.FieldRef<"ServerDatabase", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"ServerDatabase", 'DateTime'> -} - - -// Custom InputTypes -/** - * ServerDatabase findUnique - */ -export type ServerDatabaseFindUniqueArgs = { - /** - * Select specific fields to fetch from the ServerDatabase - */ - select?: Prisma.ServerDatabaseSelect | null - /** - * Omit specific fields from the ServerDatabase - */ - omit?: Prisma.ServerDatabaseOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerDatabaseInclude | null - /** - * Filter, which ServerDatabase to fetch. - */ - where: Prisma.ServerDatabaseWhereUniqueInput -} - -/** - * ServerDatabase findUniqueOrThrow - */ -export type ServerDatabaseFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the ServerDatabase - */ - select?: Prisma.ServerDatabaseSelect | null - /** - * Omit specific fields from the ServerDatabase - */ - omit?: Prisma.ServerDatabaseOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerDatabaseInclude | null - /** - * Filter, which ServerDatabase to fetch. - */ - where: Prisma.ServerDatabaseWhereUniqueInput -} - -/** - * ServerDatabase findFirst - */ -export type ServerDatabaseFindFirstArgs = { - /** - * Select specific fields to fetch from the ServerDatabase - */ - select?: Prisma.ServerDatabaseSelect | null - /** - * Omit specific fields from the ServerDatabase - */ - omit?: Prisma.ServerDatabaseOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerDatabaseInclude | null - /** - * Filter, which ServerDatabase to fetch. - */ - where?: Prisma.ServerDatabaseWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerDatabases to fetch. - */ - orderBy?: Prisma.ServerDatabaseOrderByWithRelationInput | Prisma.ServerDatabaseOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for ServerDatabases. - */ - cursor?: Prisma.ServerDatabaseWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerDatabases from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerDatabases. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of ServerDatabases. - */ - distinct?: Prisma.ServerDatabaseScalarFieldEnum | Prisma.ServerDatabaseScalarFieldEnum[] -} - -/** - * ServerDatabase findFirstOrThrow - */ -export type ServerDatabaseFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the ServerDatabase - */ - select?: Prisma.ServerDatabaseSelect | null - /** - * Omit specific fields from the ServerDatabase - */ - omit?: Prisma.ServerDatabaseOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerDatabaseInclude | null - /** - * Filter, which ServerDatabase to fetch. - */ - where?: Prisma.ServerDatabaseWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerDatabases to fetch. - */ - orderBy?: Prisma.ServerDatabaseOrderByWithRelationInput | Prisma.ServerDatabaseOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for ServerDatabases. - */ - cursor?: Prisma.ServerDatabaseWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerDatabases from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerDatabases. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of ServerDatabases. - */ - distinct?: Prisma.ServerDatabaseScalarFieldEnum | Prisma.ServerDatabaseScalarFieldEnum[] -} - -/** - * ServerDatabase findMany - */ -export type ServerDatabaseFindManyArgs = { - /** - * Select specific fields to fetch from the ServerDatabase - */ - select?: Prisma.ServerDatabaseSelect | null - /** - * Omit specific fields from the ServerDatabase - */ - omit?: Prisma.ServerDatabaseOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerDatabaseInclude | null - /** - * Filter, which ServerDatabases to fetch. - */ - where?: Prisma.ServerDatabaseWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerDatabases to fetch. - */ - orderBy?: Prisma.ServerDatabaseOrderByWithRelationInput | Prisma.ServerDatabaseOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing ServerDatabases. - */ - cursor?: Prisma.ServerDatabaseWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerDatabases from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerDatabases. - */ - skip?: number - distinct?: Prisma.ServerDatabaseScalarFieldEnum | Prisma.ServerDatabaseScalarFieldEnum[] -} - -/** - * ServerDatabase create - */ -export type ServerDatabaseCreateArgs = { - /** - * Select specific fields to fetch from the ServerDatabase - */ - select?: Prisma.ServerDatabaseSelect | null - /** - * Omit specific fields from the ServerDatabase - */ - omit?: Prisma.ServerDatabaseOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerDatabaseInclude | null - /** - * The data needed to create a ServerDatabase. - */ - data: Prisma.XOR -} - -/** - * ServerDatabase createMany - */ -export type ServerDatabaseCreateManyArgs = { - /** - * The data used to create many ServerDatabases. - */ - data: Prisma.ServerDatabaseCreateManyInput | Prisma.ServerDatabaseCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * ServerDatabase createManyAndReturn - */ -export type ServerDatabaseCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the ServerDatabase - */ - select?: Prisma.ServerDatabaseSelectCreateManyAndReturn | null - /** - * Omit specific fields from the ServerDatabase - */ - omit?: Prisma.ServerDatabaseOmit | null - /** - * The data used to create many ServerDatabases. - */ - data: Prisma.ServerDatabaseCreateManyInput | Prisma.ServerDatabaseCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerDatabaseIncludeCreateManyAndReturn | null -} - -/** - * ServerDatabase update - */ -export type ServerDatabaseUpdateArgs = { - /** - * Select specific fields to fetch from the ServerDatabase - */ - select?: Prisma.ServerDatabaseSelect | null - /** - * Omit specific fields from the ServerDatabase - */ - omit?: Prisma.ServerDatabaseOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerDatabaseInclude | null - /** - * The data needed to update a ServerDatabase. - */ - data: Prisma.XOR - /** - * Choose, which ServerDatabase to update. - */ - where: Prisma.ServerDatabaseWhereUniqueInput -} - -/** - * ServerDatabase updateMany - */ -export type ServerDatabaseUpdateManyArgs = { - /** - * The data used to update ServerDatabases. - */ - data: Prisma.XOR - /** - * Filter which ServerDatabases to update - */ - where?: Prisma.ServerDatabaseWhereInput - /** - * Limit how many ServerDatabases to update. - */ - limit?: number -} - -/** - * ServerDatabase updateManyAndReturn - */ -export type ServerDatabaseUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the ServerDatabase - */ - select?: Prisma.ServerDatabaseSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the ServerDatabase - */ - omit?: Prisma.ServerDatabaseOmit | null - /** - * The data used to update ServerDatabases. - */ - data: Prisma.XOR - /** - * Filter which ServerDatabases to update - */ - where?: Prisma.ServerDatabaseWhereInput - /** - * Limit how many ServerDatabases to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerDatabaseIncludeUpdateManyAndReturn | null -} - -/** - * ServerDatabase upsert - */ -export type ServerDatabaseUpsertArgs = { - /** - * Select specific fields to fetch from the ServerDatabase - */ - select?: Prisma.ServerDatabaseSelect | null - /** - * Omit specific fields from the ServerDatabase - */ - omit?: Prisma.ServerDatabaseOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerDatabaseInclude | null - /** - * The filter to search for the ServerDatabase to update in case it exists. - */ - where: Prisma.ServerDatabaseWhereUniqueInput - /** - * In case the ServerDatabase found by the `where` argument doesn't exist, create a new ServerDatabase with this data. - */ - create: Prisma.XOR - /** - * In case the ServerDatabase was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * ServerDatabase delete - */ -export type ServerDatabaseDeleteArgs = { - /** - * Select specific fields to fetch from the ServerDatabase - */ - select?: Prisma.ServerDatabaseSelect | null - /** - * Omit specific fields from the ServerDatabase - */ - omit?: Prisma.ServerDatabaseOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerDatabaseInclude | null - /** - * Filter which ServerDatabase to delete. - */ - where: Prisma.ServerDatabaseWhereUniqueInput -} - -/** - * ServerDatabase deleteMany - */ -export type ServerDatabaseDeleteManyArgs = { - /** - * Filter which ServerDatabases to delete - */ - where?: Prisma.ServerDatabaseWhereInput - /** - * Limit how many ServerDatabases to delete. - */ - limit?: number -} - -/** - * ServerDatabase without action - */ -export type ServerDatabaseDefaultArgs = { - /** - * Select specific fields to fetch from the ServerDatabase - */ - select?: Prisma.ServerDatabaseSelect | null - /** - * Omit specific fields from the ServerDatabase - */ - omit?: Prisma.ServerDatabaseOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerDatabaseInclude | null -} diff --git a/prisma/generated/prisma/models/ServerProperty.ts b/prisma/generated/prisma/models/ServerProperty.ts deleted file mode 100644 index b026c3c..0000000 --- a/prisma/generated/prisma/models/ServerProperty.ts +++ /dev/null @@ -1,1381 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `ServerProperty` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model ServerProperty - * - */ -export type ServerPropertyModel = runtime.Types.Result.DefaultSelection - -export type AggregateServerProperty = { - _count: ServerPropertyCountAggregateOutputType | null - _min: ServerPropertyMinAggregateOutputType | null - _max: ServerPropertyMaxAggregateOutputType | null -} - -export type ServerPropertyMinAggregateOutputType = { - id: string | null - serverId: string | null - key: string | null - value: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type ServerPropertyMaxAggregateOutputType = { - id: string | null - serverId: string | null - key: string | null - value: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type ServerPropertyCountAggregateOutputType = { - id: number - serverId: number - key: number - value: number - createdAt: number - updatedAt: number - _all: number -} - - -export type ServerPropertyMinAggregateInputType = { - id?: true - serverId?: true - key?: true - value?: true - createdAt?: true - updatedAt?: true -} - -export type ServerPropertyMaxAggregateInputType = { - id?: true - serverId?: true - key?: true - value?: true - createdAt?: true - updatedAt?: true -} - -export type ServerPropertyCountAggregateInputType = { - id?: true - serverId?: true - key?: true - value?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type ServerPropertyAggregateArgs = { - /** - * Filter which ServerProperty to aggregate. - */ - where?: Prisma.ServerPropertyWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerProperties to fetch. - */ - orderBy?: Prisma.ServerPropertyOrderByWithRelationInput | Prisma.ServerPropertyOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.ServerPropertyWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerProperties from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerProperties. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned ServerProperties - **/ - _count?: true | ServerPropertyCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: ServerPropertyMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: ServerPropertyMaxAggregateInputType -} - -export type GetServerPropertyAggregateType = { - [P in keyof T & keyof AggregateServerProperty]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type ServerPropertyGroupByArgs = { - where?: Prisma.ServerPropertyWhereInput - orderBy?: Prisma.ServerPropertyOrderByWithAggregationInput | Prisma.ServerPropertyOrderByWithAggregationInput[] - by: Prisma.ServerPropertyScalarFieldEnum[] | Prisma.ServerPropertyScalarFieldEnum - having?: Prisma.ServerPropertyScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: ServerPropertyCountAggregateInputType | true - _min?: ServerPropertyMinAggregateInputType - _max?: ServerPropertyMaxAggregateInputType -} - -export type ServerPropertyGroupByOutputType = { - id: string - serverId: string - key: string - value: string - createdAt: Date - updatedAt: Date - _count: ServerPropertyCountAggregateOutputType | null - _min: ServerPropertyMinAggregateOutputType | null - _max: ServerPropertyMaxAggregateOutputType | null -} - -type GetServerPropertyGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof ServerPropertyGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type ServerPropertyWhereInput = { - AND?: Prisma.ServerPropertyWhereInput | Prisma.ServerPropertyWhereInput[] - OR?: Prisma.ServerPropertyWhereInput[] - NOT?: Prisma.ServerPropertyWhereInput | Prisma.ServerPropertyWhereInput[] - id?: Prisma.StringFilter<"ServerProperty"> | string - serverId?: Prisma.StringFilter<"ServerProperty"> | string - key?: Prisma.StringFilter<"ServerProperty"> | string - value?: Prisma.StringFilter<"ServerProperty"> | string - createdAt?: Prisma.DateTimeFilter<"ServerProperty"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"ServerProperty"> | Date | string - server?: Prisma.XOR -} - -export type ServerPropertyOrderByWithRelationInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - server?: Prisma.ServerOrderByWithRelationInput -} - -export type ServerPropertyWhereUniqueInput = Prisma.AtLeast<{ - id?: string - serverId_key?: Prisma.ServerPropertyServerIdKeyCompoundUniqueInput - AND?: Prisma.ServerPropertyWhereInput | Prisma.ServerPropertyWhereInput[] - OR?: Prisma.ServerPropertyWhereInput[] - NOT?: Prisma.ServerPropertyWhereInput | Prisma.ServerPropertyWhereInput[] - serverId?: Prisma.StringFilter<"ServerProperty"> | string - key?: Prisma.StringFilter<"ServerProperty"> | string - value?: Prisma.StringFilter<"ServerProperty"> | string - createdAt?: Prisma.DateTimeFilter<"ServerProperty"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"ServerProperty"> | Date | string - server?: Prisma.XOR -}, "id" | "serverId_key"> - -export type ServerPropertyOrderByWithAggregationInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.ServerPropertyCountOrderByAggregateInput - _max?: Prisma.ServerPropertyMaxOrderByAggregateInput - _min?: Prisma.ServerPropertyMinOrderByAggregateInput -} - -export type ServerPropertyScalarWhereWithAggregatesInput = { - AND?: Prisma.ServerPropertyScalarWhereWithAggregatesInput | Prisma.ServerPropertyScalarWhereWithAggregatesInput[] - OR?: Prisma.ServerPropertyScalarWhereWithAggregatesInput[] - NOT?: Prisma.ServerPropertyScalarWhereWithAggregatesInput | Prisma.ServerPropertyScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"ServerProperty"> | string - serverId?: Prisma.StringWithAggregatesFilter<"ServerProperty"> | string - key?: Prisma.StringWithAggregatesFilter<"ServerProperty"> | string - value?: Prisma.StringWithAggregatesFilter<"ServerProperty"> | string - createdAt?: Prisma.DateTimeWithAggregatesFilter<"ServerProperty"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"ServerProperty"> | Date | string -} - -export type ServerPropertyCreateInput = { - id?: string - key: string - value: string - createdAt?: Date | string - updatedAt?: Date | string - server: Prisma.ServerCreateNestedOneWithoutPropertiesInput -} - -export type ServerPropertyUncheckedCreateInput = { - id?: string - serverId: string - key: string - value: string - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerPropertyUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - server?: Prisma.ServerUpdateOneRequiredWithoutPropertiesNestedInput -} - -export type ServerPropertyUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - serverId?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerPropertyCreateManyInput = { - id?: string - serverId: string - key: string - value: string - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerPropertyUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerPropertyUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - serverId?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerPropertyListRelationFilter = { - every?: Prisma.ServerPropertyWhereInput - some?: Prisma.ServerPropertyWhereInput - none?: Prisma.ServerPropertyWhereInput -} - -export type ServerPropertyOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type ServerPropertyServerIdKeyCompoundUniqueInput = { - serverId: string - key: string -} - -export type ServerPropertyCountOrderByAggregateInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ServerPropertyMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ServerPropertyMinOrderByAggregateInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - key?: Prisma.SortOrder - value?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ServerPropertyCreateNestedManyWithoutServerInput = { - create?: Prisma.XOR | Prisma.ServerPropertyCreateWithoutServerInput[] | Prisma.ServerPropertyUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerPropertyCreateOrConnectWithoutServerInput | Prisma.ServerPropertyCreateOrConnectWithoutServerInput[] - createMany?: Prisma.ServerPropertyCreateManyServerInputEnvelope - connect?: Prisma.ServerPropertyWhereUniqueInput | Prisma.ServerPropertyWhereUniqueInput[] -} - -export type ServerPropertyUncheckedCreateNestedManyWithoutServerInput = { - create?: Prisma.XOR | Prisma.ServerPropertyCreateWithoutServerInput[] | Prisma.ServerPropertyUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerPropertyCreateOrConnectWithoutServerInput | Prisma.ServerPropertyCreateOrConnectWithoutServerInput[] - createMany?: Prisma.ServerPropertyCreateManyServerInputEnvelope - connect?: Prisma.ServerPropertyWhereUniqueInput | Prisma.ServerPropertyWhereUniqueInput[] -} - -export type ServerPropertyUpdateManyWithoutServerNestedInput = { - create?: Prisma.XOR | Prisma.ServerPropertyCreateWithoutServerInput[] | Prisma.ServerPropertyUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerPropertyCreateOrConnectWithoutServerInput | Prisma.ServerPropertyCreateOrConnectWithoutServerInput[] - upsert?: Prisma.ServerPropertyUpsertWithWhereUniqueWithoutServerInput | Prisma.ServerPropertyUpsertWithWhereUniqueWithoutServerInput[] - createMany?: Prisma.ServerPropertyCreateManyServerInputEnvelope - set?: Prisma.ServerPropertyWhereUniqueInput | Prisma.ServerPropertyWhereUniqueInput[] - disconnect?: Prisma.ServerPropertyWhereUniqueInput | Prisma.ServerPropertyWhereUniqueInput[] - delete?: Prisma.ServerPropertyWhereUniqueInput | Prisma.ServerPropertyWhereUniqueInput[] - connect?: Prisma.ServerPropertyWhereUniqueInput | Prisma.ServerPropertyWhereUniqueInput[] - update?: Prisma.ServerPropertyUpdateWithWhereUniqueWithoutServerInput | Prisma.ServerPropertyUpdateWithWhereUniqueWithoutServerInput[] - updateMany?: Prisma.ServerPropertyUpdateManyWithWhereWithoutServerInput | Prisma.ServerPropertyUpdateManyWithWhereWithoutServerInput[] - deleteMany?: Prisma.ServerPropertyScalarWhereInput | Prisma.ServerPropertyScalarWhereInput[] -} - -export type ServerPropertyUncheckedUpdateManyWithoutServerNestedInput = { - create?: Prisma.XOR | Prisma.ServerPropertyCreateWithoutServerInput[] | Prisma.ServerPropertyUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerPropertyCreateOrConnectWithoutServerInput | Prisma.ServerPropertyCreateOrConnectWithoutServerInput[] - upsert?: Prisma.ServerPropertyUpsertWithWhereUniqueWithoutServerInput | Prisma.ServerPropertyUpsertWithWhereUniqueWithoutServerInput[] - createMany?: Prisma.ServerPropertyCreateManyServerInputEnvelope - set?: Prisma.ServerPropertyWhereUniqueInput | Prisma.ServerPropertyWhereUniqueInput[] - disconnect?: Prisma.ServerPropertyWhereUniqueInput | Prisma.ServerPropertyWhereUniqueInput[] - delete?: Prisma.ServerPropertyWhereUniqueInput | Prisma.ServerPropertyWhereUniqueInput[] - connect?: Prisma.ServerPropertyWhereUniqueInput | Prisma.ServerPropertyWhereUniqueInput[] - update?: Prisma.ServerPropertyUpdateWithWhereUniqueWithoutServerInput | Prisma.ServerPropertyUpdateWithWhereUniqueWithoutServerInput[] - updateMany?: Prisma.ServerPropertyUpdateManyWithWhereWithoutServerInput | Prisma.ServerPropertyUpdateManyWithWhereWithoutServerInput[] - deleteMany?: Prisma.ServerPropertyScalarWhereInput | Prisma.ServerPropertyScalarWhereInput[] -} - -export type ServerPropertyCreateWithoutServerInput = { - id?: string - key: string - value: string - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerPropertyUncheckedCreateWithoutServerInput = { - id?: string - key: string - value: string - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerPropertyCreateOrConnectWithoutServerInput = { - where: Prisma.ServerPropertyWhereUniqueInput - create: Prisma.XOR -} - -export type ServerPropertyCreateManyServerInputEnvelope = { - data: Prisma.ServerPropertyCreateManyServerInput | Prisma.ServerPropertyCreateManyServerInput[] - skipDuplicates?: boolean -} - -export type ServerPropertyUpsertWithWhereUniqueWithoutServerInput = { - where: Prisma.ServerPropertyWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type ServerPropertyUpdateWithWhereUniqueWithoutServerInput = { - where: Prisma.ServerPropertyWhereUniqueInput - data: Prisma.XOR -} - -export type ServerPropertyUpdateManyWithWhereWithoutServerInput = { - where: Prisma.ServerPropertyScalarWhereInput - data: Prisma.XOR -} - -export type ServerPropertyScalarWhereInput = { - AND?: Prisma.ServerPropertyScalarWhereInput | Prisma.ServerPropertyScalarWhereInput[] - OR?: Prisma.ServerPropertyScalarWhereInput[] - NOT?: Prisma.ServerPropertyScalarWhereInput | Prisma.ServerPropertyScalarWhereInput[] - id?: Prisma.StringFilter<"ServerProperty"> | string - serverId?: Prisma.StringFilter<"ServerProperty"> | string - key?: Prisma.StringFilter<"ServerProperty"> | string - value?: Prisma.StringFilter<"ServerProperty"> | string - createdAt?: Prisma.DateTimeFilter<"ServerProperty"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"ServerProperty"> | Date | string -} - -export type ServerPropertyCreateManyServerInput = { - id?: string - key: string - value: string - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerPropertyUpdateWithoutServerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerPropertyUncheckedUpdateWithoutServerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerPropertyUncheckedUpdateManyWithoutServerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - key?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - - -export type ServerPropertySelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - serverId?: boolean - key?: boolean - value?: boolean - createdAt?: boolean - updatedAt?: boolean - server?: boolean | Prisma.ServerDefaultArgs -}, ExtArgs["result"]["serverProperty"]> - -export type ServerPropertySelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - serverId?: boolean - key?: boolean - value?: boolean - createdAt?: boolean - updatedAt?: boolean - server?: boolean | Prisma.ServerDefaultArgs -}, ExtArgs["result"]["serverProperty"]> - -export type ServerPropertySelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - serverId?: boolean - key?: boolean - value?: boolean - createdAt?: boolean - updatedAt?: boolean - server?: boolean | Prisma.ServerDefaultArgs -}, ExtArgs["result"]["serverProperty"]> - -export type ServerPropertySelectScalar = { - id?: boolean - serverId?: boolean - key?: boolean - value?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type ServerPropertyOmit = runtime.Types.Extensions.GetOmit<"id" | "serverId" | "key" | "value" | "createdAt" | "updatedAt", ExtArgs["result"]["serverProperty"]> -export type ServerPropertyInclude = { - server?: boolean | Prisma.ServerDefaultArgs -} -export type ServerPropertyIncludeCreateManyAndReturn = { - server?: boolean | Prisma.ServerDefaultArgs -} -export type ServerPropertyIncludeUpdateManyAndReturn = { - server?: boolean | Prisma.ServerDefaultArgs -} - -export type $ServerPropertyPayload = { - name: "ServerProperty" - objects: { - server: Prisma.$ServerPayload - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - serverId: string - key: string - value: string - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["serverProperty"]> - composites: {} -} - -export type ServerPropertyGetPayload = runtime.Types.Result.GetResult - -export type ServerPropertyCountArgs = - Omit & { - select?: ServerPropertyCountAggregateInputType | true - } - -export interface ServerPropertyDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['ServerProperty'], meta: { name: 'ServerProperty' } } - /** - * Find zero or one ServerProperty that matches the filter. - * @param {ServerPropertyFindUniqueArgs} args - Arguments to find a ServerProperty - * @example - * // Get one ServerProperty - * const serverProperty = await prisma.serverProperty.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__ServerPropertyClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one ServerProperty that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {ServerPropertyFindUniqueOrThrowArgs} args - Arguments to find a ServerProperty - * @example - * // Get one ServerProperty - * const serverProperty = await prisma.serverProperty.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__ServerPropertyClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first ServerProperty that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerPropertyFindFirstArgs} args - Arguments to find a ServerProperty - * @example - * // Get one ServerProperty - * const serverProperty = await prisma.serverProperty.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__ServerPropertyClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first ServerProperty that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerPropertyFindFirstOrThrowArgs} args - Arguments to find a ServerProperty - * @example - * // Get one ServerProperty - * const serverProperty = await prisma.serverProperty.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__ServerPropertyClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more ServerProperties that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerPropertyFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all ServerProperties - * const serverProperties = await prisma.serverProperty.findMany() - * - * // Get first 10 ServerProperties - * const serverProperties = await prisma.serverProperty.findMany({ take: 10 }) - * - * // Only select the `id` - * const serverPropertyWithIdOnly = await prisma.serverProperty.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a ServerProperty. - * @param {ServerPropertyCreateArgs} args - Arguments to create a ServerProperty. - * @example - * // Create one ServerProperty - * const ServerProperty = await prisma.serverProperty.create({ - * data: { - * // ... data to create a ServerProperty - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__ServerPropertyClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many ServerProperties. - * @param {ServerPropertyCreateManyArgs} args - Arguments to create many ServerProperties. - * @example - * // Create many ServerProperties - * const serverProperty = await prisma.serverProperty.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many ServerProperties and returns the data saved in the database. - * @param {ServerPropertyCreateManyAndReturnArgs} args - Arguments to create many ServerProperties. - * @example - * // Create many ServerProperties - * const serverProperty = await prisma.serverProperty.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many ServerProperties and only return the `id` - * const serverPropertyWithIdOnly = await prisma.serverProperty.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a ServerProperty. - * @param {ServerPropertyDeleteArgs} args - Arguments to delete one ServerProperty. - * @example - * // Delete one ServerProperty - * const ServerProperty = await prisma.serverProperty.delete({ - * where: { - * // ... filter to delete one ServerProperty - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__ServerPropertyClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one ServerProperty. - * @param {ServerPropertyUpdateArgs} args - Arguments to update one ServerProperty. - * @example - * // Update one ServerProperty - * const serverProperty = await prisma.serverProperty.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__ServerPropertyClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more ServerProperties. - * @param {ServerPropertyDeleteManyArgs} args - Arguments to filter ServerProperties to delete. - * @example - * // Delete a few ServerProperties - * const { count } = await prisma.serverProperty.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more ServerProperties. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerPropertyUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many ServerProperties - * const serverProperty = await prisma.serverProperty.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more ServerProperties and returns the data updated in the database. - * @param {ServerPropertyUpdateManyAndReturnArgs} args - Arguments to update many ServerProperties. - * @example - * // Update many ServerProperties - * const serverProperty = await prisma.serverProperty.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more ServerProperties and only return the `id` - * const serverPropertyWithIdOnly = await prisma.serverProperty.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one ServerProperty. - * @param {ServerPropertyUpsertArgs} args - Arguments to update or create a ServerProperty. - * @example - * // Update or create a ServerProperty - * const serverProperty = await prisma.serverProperty.upsert({ - * create: { - * // ... data to create a ServerProperty - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the ServerProperty we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__ServerPropertyClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of ServerProperties. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerPropertyCountArgs} args - Arguments to filter ServerProperties to count. - * @example - * // Count the number of ServerProperties - * const count = await prisma.serverProperty.count({ - * where: { - * // ... the filter for the ServerProperties we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a ServerProperty. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerPropertyAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by ServerProperty. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerPropertyGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends ServerPropertyGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: ServerPropertyGroupByArgs['orderBy'] } - : { orderBy?: ServerPropertyGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetServerPropertyGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the ServerProperty model - */ -readonly fields: ServerPropertyFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for ServerProperty. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__ServerPropertyClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - server = {}>(args?: Prisma.Subset>): Prisma.Prisma__ServerClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the ServerProperty model - */ -export interface ServerPropertyFieldRefs { - readonly id: Prisma.FieldRef<"ServerProperty", 'String'> - readonly serverId: Prisma.FieldRef<"ServerProperty", 'String'> - readonly key: Prisma.FieldRef<"ServerProperty", 'String'> - readonly value: Prisma.FieldRef<"ServerProperty", 'String'> - readonly createdAt: Prisma.FieldRef<"ServerProperty", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"ServerProperty", 'DateTime'> -} - - -// Custom InputTypes -/** - * ServerProperty findUnique - */ -export type ServerPropertyFindUniqueArgs = { - /** - * Select specific fields to fetch from the ServerProperty - */ - select?: Prisma.ServerPropertySelect | null - /** - * Omit specific fields from the ServerProperty - */ - omit?: Prisma.ServerPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerPropertyInclude | null - /** - * Filter, which ServerProperty to fetch. - */ - where: Prisma.ServerPropertyWhereUniqueInput -} - -/** - * ServerProperty findUniqueOrThrow - */ -export type ServerPropertyFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the ServerProperty - */ - select?: Prisma.ServerPropertySelect | null - /** - * Omit specific fields from the ServerProperty - */ - omit?: Prisma.ServerPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerPropertyInclude | null - /** - * Filter, which ServerProperty to fetch. - */ - where: Prisma.ServerPropertyWhereUniqueInput -} - -/** - * ServerProperty findFirst - */ -export type ServerPropertyFindFirstArgs = { - /** - * Select specific fields to fetch from the ServerProperty - */ - select?: Prisma.ServerPropertySelect | null - /** - * Omit specific fields from the ServerProperty - */ - omit?: Prisma.ServerPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerPropertyInclude | null - /** - * Filter, which ServerProperty to fetch. - */ - where?: Prisma.ServerPropertyWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerProperties to fetch. - */ - orderBy?: Prisma.ServerPropertyOrderByWithRelationInput | Prisma.ServerPropertyOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for ServerProperties. - */ - cursor?: Prisma.ServerPropertyWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerProperties from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerProperties. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of ServerProperties. - */ - distinct?: Prisma.ServerPropertyScalarFieldEnum | Prisma.ServerPropertyScalarFieldEnum[] -} - -/** - * ServerProperty findFirstOrThrow - */ -export type ServerPropertyFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the ServerProperty - */ - select?: Prisma.ServerPropertySelect | null - /** - * Omit specific fields from the ServerProperty - */ - omit?: Prisma.ServerPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerPropertyInclude | null - /** - * Filter, which ServerProperty to fetch. - */ - where?: Prisma.ServerPropertyWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerProperties to fetch. - */ - orderBy?: Prisma.ServerPropertyOrderByWithRelationInput | Prisma.ServerPropertyOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for ServerProperties. - */ - cursor?: Prisma.ServerPropertyWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerProperties from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerProperties. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of ServerProperties. - */ - distinct?: Prisma.ServerPropertyScalarFieldEnum | Prisma.ServerPropertyScalarFieldEnum[] -} - -/** - * ServerProperty findMany - */ -export type ServerPropertyFindManyArgs = { - /** - * Select specific fields to fetch from the ServerProperty - */ - select?: Prisma.ServerPropertySelect | null - /** - * Omit specific fields from the ServerProperty - */ - omit?: Prisma.ServerPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerPropertyInclude | null - /** - * Filter, which ServerProperties to fetch. - */ - where?: Prisma.ServerPropertyWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerProperties to fetch. - */ - orderBy?: Prisma.ServerPropertyOrderByWithRelationInput | Prisma.ServerPropertyOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing ServerProperties. - */ - cursor?: Prisma.ServerPropertyWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerProperties from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerProperties. - */ - skip?: number - distinct?: Prisma.ServerPropertyScalarFieldEnum | Prisma.ServerPropertyScalarFieldEnum[] -} - -/** - * ServerProperty create - */ -export type ServerPropertyCreateArgs = { - /** - * Select specific fields to fetch from the ServerProperty - */ - select?: Prisma.ServerPropertySelect | null - /** - * Omit specific fields from the ServerProperty - */ - omit?: Prisma.ServerPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerPropertyInclude | null - /** - * The data needed to create a ServerProperty. - */ - data: Prisma.XOR -} - -/** - * ServerProperty createMany - */ -export type ServerPropertyCreateManyArgs = { - /** - * The data used to create many ServerProperties. - */ - data: Prisma.ServerPropertyCreateManyInput | Prisma.ServerPropertyCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * ServerProperty createManyAndReturn - */ -export type ServerPropertyCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the ServerProperty - */ - select?: Prisma.ServerPropertySelectCreateManyAndReturn | null - /** - * Omit specific fields from the ServerProperty - */ - omit?: Prisma.ServerPropertyOmit | null - /** - * The data used to create many ServerProperties. - */ - data: Prisma.ServerPropertyCreateManyInput | Prisma.ServerPropertyCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerPropertyIncludeCreateManyAndReturn | null -} - -/** - * ServerProperty update - */ -export type ServerPropertyUpdateArgs = { - /** - * Select specific fields to fetch from the ServerProperty - */ - select?: Prisma.ServerPropertySelect | null - /** - * Omit specific fields from the ServerProperty - */ - omit?: Prisma.ServerPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerPropertyInclude | null - /** - * The data needed to update a ServerProperty. - */ - data: Prisma.XOR - /** - * Choose, which ServerProperty to update. - */ - where: Prisma.ServerPropertyWhereUniqueInput -} - -/** - * ServerProperty updateMany - */ -export type ServerPropertyUpdateManyArgs = { - /** - * The data used to update ServerProperties. - */ - data: Prisma.XOR - /** - * Filter which ServerProperties to update - */ - where?: Prisma.ServerPropertyWhereInput - /** - * Limit how many ServerProperties to update. - */ - limit?: number -} - -/** - * ServerProperty updateManyAndReturn - */ -export type ServerPropertyUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the ServerProperty - */ - select?: Prisma.ServerPropertySelectUpdateManyAndReturn | null - /** - * Omit specific fields from the ServerProperty - */ - omit?: Prisma.ServerPropertyOmit | null - /** - * The data used to update ServerProperties. - */ - data: Prisma.XOR - /** - * Filter which ServerProperties to update - */ - where?: Prisma.ServerPropertyWhereInput - /** - * Limit how many ServerProperties to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerPropertyIncludeUpdateManyAndReturn | null -} - -/** - * ServerProperty upsert - */ -export type ServerPropertyUpsertArgs = { - /** - * Select specific fields to fetch from the ServerProperty - */ - select?: Prisma.ServerPropertySelect | null - /** - * Omit specific fields from the ServerProperty - */ - omit?: Prisma.ServerPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerPropertyInclude | null - /** - * The filter to search for the ServerProperty to update in case it exists. - */ - where: Prisma.ServerPropertyWhereUniqueInput - /** - * In case the ServerProperty found by the `where` argument doesn't exist, create a new ServerProperty with this data. - */ - create: Prisma.XOR - /** - * In case the ServerProperty was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * ServerProperty delete - */ -export type ServerPropertyDeleteArgs = { - /** - * Select specific fields to fetch from the ServerProperty - */ - select?: Prisma.ServerPropertySelect | null - /** - * Omit specific fields from the ServerProperty - */ - omit?: Prisma.ServerPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerPropertyInclude | null - /** - * Filter which ServerProperty to delete. - */ - where: Prisma.ServerPropertyWhereUniqueInput -} - -/** - * ServerProperty deleteMany - */ -export type ServerPropertyDeleteManyArgs = { - /** - * Filter which ServerProperties to delete - */ - where?: Prisma.ServerPropertyWhereInput - /** - * Limit how many ServerProperties to delete. - */ - limit?: number -} - -/** - * ServerProperty without action - */ -export type ServerPropertyDefaultArgs = { - /** - * Select specific fields to fetch from the ServerProperty - */ - select?: Prisma.ServerPropertySelect | null - /** - * Omit specific fields from the ServerProperty - */ - omit?: Prisma.ServerPropertyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerPropertyInclude | null -} diff --git a/prisma/generated/prisma/models/ServerVariable.ts b/prisma/generated/prisma/models/ServerVariable.ts deleted file mode 100644 index 097785c..0000000 --- a/prisma/generated/prisma/models/ServerVariable.ts +++ /dev/null @@ -1,1551 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `ServerVariable` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model ServerVariable - * - */ -export type ServerVariableModel = runtime.Types.Result.DefaultSelection - -export type AggregateServerVariable = { - _count: ServerVariableCountAggregateOutputType | null - _avg: ServerVariableAvgAggregateOutputType | null - _sum: ServerVariableSumAggregateOutputType | null - _min: ServerVariableMinAggregateOutputType | null - _max: ServerVariableMaxAggregateOutputType | null -} - -export type ServerVariableAvgAggregateOutputType = { - variableId: number | null -} - -export type ServerVariableSumAggregateOutputType = { - variableId: number | null -} - -export type ServerVariableMinAggregateOutputType = { - id: string | null - serverId: string | null - variableId: number | null - value: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type ServerVariableMaxAggregateOutputType = { - id: string | null - serverId: string | null - variableId: number | null - value: string | null - createdAt: Date | null - updatedAt: Date | null -} - -export type ServerVariableCountAggregateOutputType = { - id: number - serverId: number - variableId: number - value: number - createdAt: number - updatedAt: number - _all: number -} - - -export type ServerVariableAvgAggregateInputType = { - variableId?: true -} - -export type ServerVariableSumAggregateInputType = { - variableId?: true -} - -export type ServerVariableMinAggregateInputType = { - id?: true - serverId?: true - variableId?: true - value?: true - createdAt?: true - updatedAt?: true -} - -export type ServerVariableMaxAggregateInputType = { - id?: true - serverId?: true - variableId?: true - value?: true - createdAt?: true - updatedAt?: true -} - -export type ServerVariableCountAggregateInputType = { - id?: true - serverId?: true - variableId?: true - value?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type ServerVariableAggregateArgs = { - /** - * Filter which ServerVariable to aggregate. - */ - where?: Prisma.ServerVariableWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerVariables to fetch. - */ - orderBy?: Prisma.ServerVariableOrderByWithRelationInput | Prisma.ServerVariableOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.ServerVariableWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerVariables from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerVariables. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned ServerVariables - **/ - _count?: true | ServerVariableCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: ServerVariableAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: ServerVariableSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: ServerVariableMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: ServerVariableMaxAggregateInputType -} - -export type GetServerVariableAggregateType = { - [P in keyof T & keyof AggregateServerVariable]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type ServerVariableGroupByArgs = { - where?: Prisma.ServerVariableWhereInput - orderBy?: Prisma.ServerVariableOrderByWithAggregationInput | Prisma.ServerVariableOrderByWithAggregationInput[] - by: Prisma.ServerVariableScalarFieldEnum[] | Prisma.ServerVariableScalarFieldEnum - having?: Prisma.ServerVariableScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: ServerVariableCountAggregateInputType | true - _avg?: ServerVariableAvgAggregateInputType - _sum?: ServerVariableSumAggregateInputType - _min?: ServerVariableMinAggregateInputType - _max?: ServerVariableMaxAggregateInputType -} - -export type ServerVariableGroupByOutputType = { - id: string - serverId: string - variableId: number - value: string - createdAt: Date - updatedAt: Date - _count: ServerVariableCountAggregateOutputType | null - _avg: ServerVariableAvgAggregateOutputType | null - _sum: ServerVariableSumAggregateOutputType | null - _min: ServerVariableMinAggregateOutputType | null - _max: ServerVariableMaxAggregateOutputType | null -} - -type GetServerVariableGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof ServerVariableGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type ServerVariableWhereInput = { - AND?: Prisma.ServerVariableWhereInput | Prisma.ServerVariableWhereInput[] - OR?: Prisma.ServerVariableWhereInput[] - NOT?: Prisma.ServerVariableWhereInput | Prisma.ServerVariableWhereInput[] - id?: Prisma.StringFilter<"ServerVariable"> | string - serverId?: Prisma.StringFilter<"ServerVariable"> | string - variableId?: Prisma.IntFilter<"ServerVariable"> | number - value?: Prisma.StringFilter<"ServerVariable"> | string - createdAt?: Prisma.DateTimeFilter<"ServerVariable"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"ServerVariable"> | Date | string - server?: Prisma.XOR - variable?: Prisma.XOR -} - -export type ServerVariableOrderByWithRelationInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - variableId?: Prisma.SortOrder - value?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - server?: Prisma.ServerOrderByWithRelationInput - variable?: Prisma.EggVariableOrderByWithRelationInput -} - -export type ServerVariableWhereUniqueInput = Prisma.AtLeast<{ - id?: string - serverId_variableId?: Prisma.ServerVariableServerIdVariableIdCompoundUniqueInput - AND?: Prisma.ServerVariableWhereInput | Prisma.ServerVariableWhereInput[] - OR?: Prisma.ServerVariableWhereInput[] - NOT?: Prisma.ServerVariableWhereInput | Prisma.ServerVariableWhereInput[] - serverId?: Prisma.StringFilter<"ServerVariable"> | string - variableId?: Prisma.IntFilter<"ServerVariable"> | number - value?: Prisma.StringFilter<"ServerVariable"> | string - createdAt?: Prisma.DateTimeFilter<"ServerVariable"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"ServerVariable"> | Date | string - server?: Prisma.XOR - variable?: Prisma.XOR -}, "id" | "serverId_variableId"> - -export type ServerVariableOrderByWithAggregationInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - variableId?: Prisma.SortOrder - value?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.ServerVariableCountOrderByAggregateInput - _avg?: Prisma.ServerVariableAvgOrderByAggregateInput - _max?: Prisma.ServerVariableMaxOrderByAggregateInput - _min?: Prisma.ServerVariableMinOrderByAggregateInput - _sum?: Prisma.ServerVariableSumOrderByAggregateInput -} - -export type ServerVariableScalarWhereWithAggregatesInput = { - AND?: Prisma.ServerVariableScalarWhereWithAggregatesInput | Prisma.ServerVariableScalarWhereWithAggregatesInput[] - OR?: Prisma.ServerVariableScalarWhereWithAggregatesInput[] - NOT?: Prisma.ServerVariableScalarWhereWithAggregatesInput | Prisma.ServerVariableScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"ServerVariable"> | string - serverId?: Prisma.StringWithAggregatesFilter<"ServerVariable"> | string - variableId?: Prisma.IntWithAggregatesFilter<"ServerVariable"> | number - value?: Prisma.StringWithAggregatesFilter<"ServerVariable"> | string - createdAt?: Prisma.DateTimeWithAggregatesFilter<"ServerVariable"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"ServerVariable"> | Date | string -} - -export type ServerVariableCreateInput = { - id?: string - value: string - createdAt?: Date | string - updatedAt?: Date | string - server: Prisma.ServerCreateNestedOneWithoutVariablesInput - variable: Prisma.EggVariableCreateNestedOneWithoutServerVariablesInput -} - -export type ServerVariableUncheckedCreateInput = { - id?: string - serverId: string - variableId: number - value: string - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerVariableUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - server?: Prisma.ServerUpdateOneRequiredWithoutVariablesNestedInput - variable?: Prisma.EggVariableUpdateOneRequiredWithoutServerVariablesNestedInput -} - -export type ServerVariableUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - serverId?: Prisma.StringFieldUpdateOperationsInput | string - variableId?: Prisma.IntFieldUpdateOperationsInput | number - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerVariableCreateManyInput = { - id?: string - serverId: string - variableId: number - value: string - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerVariableUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerVariableUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - serverId?: Prisma.StringFieldUpdateOperationsInput | string - variableId?: Prisma.IntFieldUpdateOperationsInput | number - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerVariableListRelationFilter = { - every?: Prisma.ServerVariableWhereInput - some?: Prisma.ServerVariableWhereInput - none?: Prisma.ServerVariableWhereInput -} - -export type ServerVariableOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type ServerVariableServerIdVariableIdCompoundUniqueInput = { - serverId: string - variableId: number -} - -export type ServerVariableCountOrderByAggregateInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - variableId?: Prisma.SortOrder - value?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ServerVariableAvgOrderByAggregateInput = { - variableId?: Prisma.SortOrder -} - -export type ServerVariableMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - variableId?: Prisma.SortOrder - value?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ServerVariableMinOrderByAggregateInput = { - id?: Prisma.SortOrder - serverId?: Prisma.SortOrder - variableId?: Prisma.SortOrder - value?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type ServerVariableSumOrderByAggregateInput = { - variableId?: Prisma.SortOrder -} - -export type ServerVariableCreateNestedManyWithoutVariableInput = { - create?: Prisma.XOR | Prisma.ServerVariableCreateWithoutVariableInput[] | Prisma.ServerVariableUncheckedCreateWithoutVariableInput[] - connectOrCreate?: Prisma.ServerVariableCreateOrConnectWithoutVariableInput | Prisma.ServerVariableCreateOrConnectWithoutVariableInput[] - createMany?: Prisma.ServerVariableCreateManyVariableInputEnvelope - connect?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] -} - -export type ServerVariableUncheckedCreateNestedManyWithoutVariableInput = { - create?: Prisma.XOR | Prisma.ServerVariableCreateWithoutVariableInput[] | Prisma.ServerVariableUncheckedCreateWithoutVariableInput[] - connectOrCreate?: Prisma.ServerVariableCreateOrConnectWithoutVariableInput | Prisma.ServerVariableCreateOrConnectWithoutVariableInput[] - createMany?: Prisma.ServerVariableCreateManyVariableInputEnvelope - connect?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] -} - -export type ServerVariableUpdateManyWithoutVariableNestedInput = { - create?: Prisma.XOR | Prisma.ServerVariableCreateWithoutVariableInput[] | Prisma.ServerVariableUncheckedCreateWithoutVariableInput[] - connectOrCreate?: Prisma.ServerVariableCreateOrConnectWithoutVariableInput | Prisma.ServerVariableCreateOrConnectWithoutVariableInput[] - upsert?: Prisma.ServerVariableUpsertWithWhereUniqueWithoutVariableInput | Prisma.ServerVariableUpsertWithWhereUniqueWithoutVariableInput[] - createMany?: Prisma.ServerVariableCreateManyVariableInputEnvelope - set?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - disconnect?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - delete?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - connect?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - update?: Prisma.ServerVariableUpdateWithWhereUniqueWithoutVariableInput | Prisma.ServerVariableUpdateWithWhereUniqueWithoutVariableInput[] - updateMany?: Prisma.ServerVariableUpdateManyWithWhereWithoutVariableInput | Prisma.ServerVariableUpdateManyWithWhereWithoutVariableInput[] - deleteMany?: Prisma.ServerVariableScalarWhereInput | Prisma.ServerVariableScalarWhereInput[] -} - -export type ServerVariableUncheckedUpdateManyWithoutVariableNestedInput = { - create?: Prisma.XOR | Prisma.ServerVariableCreateWithoutVariableInput[] | Prisma.ServerVariableUncheckedCreateWithoutVariableInput[] - connectOrCreate?: Prisma.ServerVariableCreateOrConnectWithoutVariableInput | Prisma.ServerVariableCreateOrConnectWithoutVariableInput[] - upsert?: Prisma.ServerVariableUpsertWithWhereUniqueWithoutVariableInput | Prisma.ServerVariableUpsertWithWhereUniqueWithoutVariableInput[] - createMany?: Prisma.ServerVariableCreateManyVariableInputEnvelope - set?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - disconnect?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - delete?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - connect?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - update?: Prisma.ServerVariableUpdateWithWhereUniqueWithoutVariableInput | Prisma.ServerVariableUpdateWithWhereUniqueWithoutVariableInput[] - updateMany?: Prisma.ServerVariableUpdateManyWithWhereWithoutVariableInput | Prisma.ServerVariableUpdateManyWithWhereWithoutVariableInput[] - deleteMany?: Prisma.ServerVariableScalarWhereInput | Prisma.ServerVariableScalarWhereInput[] -} - -export type ServerVariableCreateNestedManyWithoutServerInput = { - create?: Prisma.XOR | Prisma.ServerVariableCreateWithoutServerInput[] | Prisma.ServerVariableUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerVariableCreateOrConnectWithoutServerInput | Prisma.ServerVariableCreateOrConnectWithoutServerInput[] - createMany?: Prisma.ServerVariableCreateManyServerInputEnvelope - connect?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] -} - -export type ServerVariableUncheckedCreateNestedManyWithoutServerInput = { - create?: Prisma.XOR | Prisma.ServerVariableCreateWithoutServerInput[] | Prisma.ServerVariableUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerVariableCreateOrConnectWithoutServerInput | Prisma.ServerVariableCreateOrConnectWithoutServerInput[] - createMany?: Prisma.ServerVariableCreateManyServerInputEnvelope - connect?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] -} - -export type ServerVariableUpdateManyWithoutServerNestedInput = { - create?: Prisma.XOR | Prisma.ServerVariableCreateWithoutServerInput[] | Prisma.ServerVariableUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerVariableCreateOrConnectWithoutServerInput | Prisma.ServerVariableCreateOrConnectWithoutServerInput[] - upsert?: Prisma.ServerVariableUpsertWithWhereUniqueWithoutServerInput | Prisma.ServerVariableUpsertWithWhereUniqueWithoutServerInput[] - createMany?: Prisma.ServerVariableCreateManyServerInputEnvelope - set?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - disconnect?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - delete?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - connect?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - update?: Prisma.ServerVariableUpdateWithWhereUniqueWithoutServerInput | Prisma.ServerVariableUpdateWithWhereUniqueWithoutServerInput[] - updateMany?: Prisma.ServerVariableUpdateManyWithWhereWithoutServerInput | Prisma.ServerVariableUpdateManyWithWhereWithoutServerInput[] - deleteMany?: Prisma.ServerVariableScalarWhereInput | Prisma.ServerVariableScalarWhereInput[] -} - -export type ServerVariableUncheckedUpdateManyWithoutServerNestedInput = { - create?: Prisma.XOR | Prisma.ServerVariableCreateWithoutServerInput[] | Prisma.ServerVariableUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.ServerVariableCreateOrConnectWithoutServerInput | Prisma.ServerVariableCreateOrConnectWithoutServerInput[] - upsert?: Prisma.ServerVariableUpsertWithWhereUniqueWithoutServerInput | Prisma.ServerVariableUpsertWithWhereUniqueWithoutServerInput[] - createMany?: Prisma.ServerVariableCreateManyServerInputEnvelope - set?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - disconnect?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - delete?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - connect?: Prisma.ServerVariableWhereUniqueInput | Prisma.ServerVariableWhereUniqueInput[] - update?: Prisma.ServerVariableUpdateWithWhereUniqueWithoutServerInput | Prisma.ServerVariableUpdateWithWhereUniqueWithoutServerInput[] - updateMany?: Prisma.ServerVariableUpdateManyWithWhereWithoutServerInput | Prisma.ServerVariableUpdateManyWithWhereWithoutServerInput[] - deleteMany?: Prisma.ServerVariableScalarWhereInput | Prisma.ServerVariableScalarWhereInput[] -} - -export type ServerVariableCreateWithoutVariableInput = { - id?: string - value: string - createdAt?: Date | string - updatedAt?: Date | string - server: Prisma.ServerCreateNestedOneWithoutVariablesInput -} - -export type ServerVariableUncheckedCreateWithoutVariableInput = { - id?: string - serverId: string - value: string - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerVariableCreateOrConnectWithoutVariableInput = { - where: Prisma.ServerVariableWhereUniqueInput - create: Prisma.XOR -} - -export type ServerVariableCreateManyVariableInputEnvelope = { - data: Prisma.ServerVariableCreateManyVariableInput | Prisma.ServerVariableCreateManyVariableInput[] - skipDuplicates?: boolean -} - -export type ServerVariableUpsertWithWhereUniqueWithoutVariableInput = { - where: Prisma.ServerVariableWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type ServerVariableUpdateWithWhereUniqueWithoutVariableInput = { - where: Prisma.ServerVariableWhereUniqueInput - data: Prisma.XOR -} - -export type ServerVariableUpdateManyWithWhereWithoutVariableInput = { - where: Prisma.ServerVariableScalarWhereInput - data: Prisma.XOR -} - -export type ServerVariableScalarWhereInput = { - AND?: Prisma.ServerVariableScalarWhereInput | Prisma.ServerVariableScalarWhereInput[] - OR?: Prisma.ServerVariableScalarWhereInput[] - NOT?: Prisma.ServerVariableScalarWhereInput | Prisma.ServerVariableScalarWhereInput[] - id?: Prisma.StringFilter<"ServerVariable"> | string - serverId?: Prisma.StringFilter<"ServerVariable"> | string - variableId?: Prisma.IntFilter<"ServerVariable"> | number - value?: Prisma.StringFilter<"ServerVariable"> | string - createdAt?: Prisma.DateTimeFilter<"ServerVariable"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"ServerVariable"> | Date | string -} - -export type ServerVariableCreateWithoutServerInput = { - id?: string - value: string - createdAt?: Date | string - updatedAt?: Date | string - variable: Prisma.EggVariableCreateNestedOneWithoutServerVariablesInput -} - -export type ServerVariableUncheckedCreateWithoutServerInput = { - id?: string - variableId: number - value: string - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerVariableCreateOrConnectWithoutServerInput = { - where: Prisma.ServerVariableWhereUniqueInput - create: Prisma.XOR -} - -export type ServerVariableCreateManyServerInputEnvelope = { - data: Prisma.ServerVariableCreateManyServerInput | Prisma.ServerVariableCreateManyServerInput[] - skipDuplicates?: boolean -} - -export type ServerVariableUpsertWithWhereUniqueWithoutServerInput = { - where: Prisma.ServerVariableWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type ServerVariableUpdateWithWhereUniqueWithoutServerInput = { - where: Prisma.ServerVariableWhereUniqueInput - data: Prisma.XOR -} - -export type ServerVariableUpdateManyWithWhereWithoutServerInput = { - where: Prisma.ServerVariableScalarWhereInput - data: Prisma.XOR -} - -export type ServerVariableCreateManyVariableInput = { - id?: string - serverId: string - value: string - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerVariableUpdateWithoutVariableInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - server?: Prisma.ServerUpdateOneRequiredWithoutVariablesNestedInput -} - -export type ServerVariableUncheckedUpdateWithoutVariableInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - serverId?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerVariableUncheckedUpdateManyWithoutVariableInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - serverId?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerVariableCreateManyServerInput = { - id?: string - variableId: number - value: string - createdAt?: Date | string - updatedAt?: Date | string -} - -export type ServerVariableUpdateWithoutServerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - variable?: Prisma.EggVariableUpdateOneRequiredWithoutServerVariablesNestedInput -} - -export type ServerVariableUncheckedUpdateWithoutServerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - variableId?: Prisma.IntFieldUpdateOperationsInput | number - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type ServerVariableUncheckedUpdateManyWithoutServerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - variableId?: Prisma.IntFieldUpdateOperationsInput | number - value?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - - -export type ServerVariableSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - serverId?: boolean - variableId?: boolean - value?: boolean - createdAt?: boolean - updatedAt?: boolean - server?: boolean | Prisma.ServerDefaultArgs - variable?: boolean | Prisma.EggVariableDefaultArgs -}, ExtArgs["result"]["serverVariable"]> - -export type ServerVariableSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - serverId?: boolean - variableId?: boolean - value?: boolean - createdAt?: boolean - updatedAt?: boolean - server?: boolean | Prisma.ServerDefaultArgs - variable?: boolean | Prisma.EggVariableDefaultArgs -}, ExtArgs["result"]["serverVariable"]> - -export type ServerVariableSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - serverId?: boolean - variableId?: boolean - value?: boolean - createdAt?: boolean - updatedAt?: boolean - server?: boolean | Prisma.ServerDefaultArgs - variable?: boolean | Prisma.EggVariableDefaultArgs -}, ExtArgs["result"]["serverVariable"]> - -export type ServerVariableSelectScalar = { - id?: boolean - serverId?: boolean - variableId?: boolean - value?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type ServerVariableOmit = runtime.Types.Extensions.GetOmit<"id" | "serverId" | "variableId" | "value" | "createdAt" | "updatedAt", ExtArgs["result"]["serverVariable"]> -export type ServerVariableInclude = { - server?: boolean | Prisma.ServerDefaultArgs - variable?: boolean | Prisma.EggVariableDefaultArgs -} -export type ServerVariableIncludeCreateManyAndReturn = { - server?: boolean | Prisma.ServerDefaultArgs - variable?: boolean | Prisma.EggVariableDefaultArgs -} -export type ServerVariableIncludeUpdateManyAndReturn = { - server?: boolean | Prisma.ServerDefaultArgs - variable?: boolean | Prisma.EggVariableDefaultArgs -} - -export type $ServerVariablePayload = { - name: "ServerVariable" - objects: { - server: Prisma.$ServerPayload - variable: Prisma.$EggVariablePayload - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - serverId: string - variableId: number - value: string - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["serverVariable"]> - composites: {} -} - -export type ServerVariableGetPayload = runtime.Types.Result.GetResult - -export type ServerVariableCountArgs = - Omit & { - select?: ServerVariableCountAggregateInputType | true - } - -export interface ServerVariableDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['ServerVariable'], meta: { name: 'ServerVariable' } } - /** - * Find zero or one ServerVariable that matches the filter. - * @param {ServerVariableFindUniqueArgs} args - Arguments to find a ServerVariable - * @example - * // Get one ServerVariable - * const serverVariable = await prisma.serverVariable.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__ServerVariableClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one ServerVariable that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {ServerVariableFindUniqueOrThrowArgs} args - Arguments to find a ServerVariable - * @example - * // Get one ServerVariable - * const serverVariable = await prisma.serverVariable.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__ServerVariableClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first ServerVariable that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerVariableFindFirstArgs} args - Arguments to find a ServerVariable - * @example - * // Get one ServerVariable - * const serverVariable = await prisma.serverVariable.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__ServerVariableClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first ServerVariable that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerVariableFindFirstOrThrowArgs} args - Arguments to find a ServerVariable - * @example - * // Get one ServerVariable - * const serverVariable = await prisma.serverVariable.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__ServerVariableClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more ServerVariables that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerVariableFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all ServerVariables - * const serverVariables = await prisma.serverVariable.findMany() - * - * // Get first 10 ServerVariables - * const serverVariables = await prisma.serverVariable.findMany({ take: 10 }) - * - * // Only select the `id` - * const serverVariableWithIdOnly = await prisma.serverVariable.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a ServerVariable. - * @param {ServerVariableCreateArgs} args - Arguments to create a ServerVariable. - * @example - * // Create one ServerVariable - * const ServerVariable = await prisma.serverVariable.create({ - * data: { - * // ... data to create a ServerVariable - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__ServerVariableClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many ServerVariables. - * @param {ServerVariableCreateManyArgs} args - Arguments to create many ServerVariables. - * @example - * // Create many ServerVariables - * const serverVariable = await prisma.serverVariable.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many ServerVariables and returns the data saved in the database. - * @param {ServerVariableCreateManyAndReturnArgs} args - Arguments to create many ServerVariables. - * @example - * // Create many ServerVariables - * const serverVariable = await prisma.serverVariable.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many ServerVariables and only return the `id` - * const serverVariableWithIdOnly = await prisma.serverVariable.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a ServerVariable. - * @param {ServerVariableDeleteArgs} args - Arguments to delete one ServerVariable. - * @example - * // Delete one ServerVariable - * const ServerVariable = await prisma.serverVariable.delete({ - * where: { - * // ... filter to delete one ServerVariable - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__ServerVariableClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one ServerVariable. - * @param {ServerVariableUpdateArgs} args - Arguments to update one ServerVariable. - * @example - * // Update one ServerVariable - * const serverVariable = await prisma.serverVariable.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__ServerVariableClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more ServerVariables. - * @param {ServerVariableDeleteManyArgs} args - Arguments to filter ServerVariables to delete. - * @example - * // Delete a few ServerVariables - * const { count } = await prisma.serverVariable.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more ServerVariables. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerVariableUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many ServerVariables - * const serverVariable = await prisma.serverVariable.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more ServerVariables and returns the data updated in the database. - * @param {ServerVariableUpdateManyAndReturnArgs} args - Arguments to update many ServerVariables. - * @example - * // Update many ServerVariables - * const serverVariable = await prisma.serverVariable.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more ServerVariables and only return the `id` - * const serverVariableWithIdOnly = await prisma.serverVariable.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one ServerVariable. - * @param {ServerVariableUpsertArgs} args - Arguments to update or create a ServerVariable. - * @example - * // Update or create a ServerVariable - * const serverVariable = await prisma.serverVariable.upsert({ - * create: { - * // ... data to create a ServerVariable - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the ServerVariable we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__ServerVariableClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of ServerVariables. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerVariableCountArgs} args - Arguments to filter ServerVariables to count. - * @example - * // Count the number of ServerVariables - * const count = await prisma.serverVariable.count({ - * where: { - * // ... the filter for the ServerVariables we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a ServerVariable. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerVariableAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by ServerVariable. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {ServerVariableGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends ServerVariableGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: ServerVariableGroupByArgs['orderBy'] } - : { orderBy?: ServerVariableGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetServerVariableGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the ServerVariable model - */ -readonly fields: ServerVariableFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for ServerVariable. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__ServerVariableClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - server = {}>(args?: Prisma.Subset>): Prisma.Prisma__ServerClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - variable = {}>(args?: Prisma.Subset>): Prisma.Prisma__EggVariableClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the ServerVariable model - */ -export interface ServerVariableFieldRefs { - readonly id: Prisma.FieldRef<"ServerVariable", 'String'> - readonly serverId: Prisma.FieldRef<"ServerVariable", 'String'> - readonly variableId: Prisma.FieldRef<"ServerVariable", 'Int'> - readonly value: Prisma.FieldRef<"ServerVariable", 'String'> - readonly createdAt: Prisma.FieldRef<"ServerVariable", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"ServerVariable", 'DateTime'> -} - - -// Custom InputTypes -/** - * ServerVariable findUnique - */ -export type ServerVariableFindUniqueArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelect | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableInclude | null - /** - * Filter, which ServerVariable to fetch. - */ - where: Prisma.ServerVariableWhereUniqueInput -} - -/** - * ServerVariable findUniqueOrThrow - */ -export type ServerVariableFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelect | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableInclude | null - /** - * Filter, which ServerVariable to fetch. - */ - where: Prisma.ServerVariableWhereUniqueInput -} - -/** - * ServerVariable findFirst - */ -export type ServerVariableFindFirstArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelect | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableInclude | null - /** - * Filter, which ServerVariable to fetch. - */ - where?: Prisma.ServerVariableWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerVariables to fetch. - */ - orderBy?: Prisma.ServerVariableOrderByWithRelationInput | Prisma.ServerVariableOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for ServerVariables. - */ - cursor?: Prisma.ServerVariableWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerVariables from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerVariables. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of ServerVariables. - */ - distinct?: Prisma.ServerVariableScalarFieldEnum | Prisma.ServerVariableScalarFieldEnum[] -} - -/** - * ServerVariable findFirstOrThrow - */ -export type ServerVariableFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelect | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableInclude | null - /** - * Filter, which ServerVariable to fetch. - */ - where?: Prisma.ServerVariableWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerVariables to fetch. - */ - orderBy?: Prisma.ServerVariableOrderByWithRelationInput | Prisma.ServerVariableOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for ServerVariables. - */ - cursor?: Prisma.ServerVariableWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerVariables from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerVariables. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of ServerVariables. - */ - distinct?: Prisma.ServerVariableScalarFieldEnum | Prisma.ServerVariableScalarFieldEnum[] -} - -/** - * ServerVariable findMany - */ -export type ServerVariableFindManyArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelect | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableInclude | null - /** - * Filter, which ServerVariables to fetch. - */ - where?: Prisma.ServerVariableWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of ServerVariables to fetch. - */ - orderBy?: Prisma.ServerVariableOrderByWithRelationInput | Prisma.ServerVariableOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing ServerVariables. - */ - cursor?: Prisma.ServerVariableWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` ServerVariables from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` ServerVariables. - */ - skip?: number - distinct?: Prisma.ServerVariableScalarFieldEnum | Prisma.ServerVariableScalarFieldEnum[] -} - -/** - * ServerVariable create - */ -export type ServerVariableCreateArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelect | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableInclude | null - /** - * The data needed to create a ServerVariable. - */ - data: Prisma.XOR -} - -/** - * ServerVariable createMany - */ -export type ServerVariableCreateManyArgs = { - /** - * The data used to create many ServerVariables. - */ - data: Prisma.ServerVariableCreateManyInput | Prisma.ServerVariableCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * ServerVariable createManyAndReturn - */ -export type ServerVariableCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelectCreateManyAndReturn | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * The data used to create many ServerVariables. - */ - data: Prisma.ServerVariableCreateManyInput | Prisma.ServerVariableCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableIncludeCreateManyAndReturn | null -} - -/** - * ServerVariable update - */ -export type ServerVariableUpdateArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelect | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableInclude | null - /** - * The data needed to update a ServerVariable. - */ - data: Prisma.XOR - /** - * Choose, which ServerVariable to update. - */ - where: Prisma.ServerVariableWhereUniqueInput -} - -/** - * ServerVariable updateMany - */ -export type ServerVariableUpdateManyArgs = { - /** - * The data used to update ServerVariables. - */ - data: Prisma.XOR - /** - * Filter which ServerVariables to update - */ - where?: Prisma.ServerVariableWhereInput - /** - * Limit how many ServerVariables to update. - */ - limit?: number -} - -/** - * ServerVariable updateManyAndReturn - */ -export type ServerVariableUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * The data used to update ServerVariables. - */ - data: Prisma.XOR - /** - * Filter which ServerVariables to update - */ - where?: Prisma.ServerVariableWhereInput - /** - * Limit how many ServerVariables to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableIncludeUpdateManyAndReturn | null -} - -/** - * ServerVariable upsert - */ -export type ServerVariableUpsertArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelect | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableInclude | null - /** - * The filter to search for the ServerVariable to update in case it exists. - */ - where: Prisma.ServerVariableWhereUniqueInput - /** - * In case the ServerVariable found by the `where` argument doesn't exist, create a new ServerVariable with this data. - */ - create: Prisma.XOR - /** - * In case the ServerVariable was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * ServerVariable delete - */ -export type ServerVariableDeleteArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelect | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableInclude | null - /** - * Filter which ServerVariable to delete. - */ - where: Prisma.ServerVariableWhereUniqueInput -} - -/** - * ServerVariable deleteMany - */ -export type ServerVariableDeleteManyArgs = { - /** - * Filter which ServerVariables to delete - */ - where?: Prisma.ServerVariableWhereInput - /** - * Limit how many ServerVariables to delete. - */ - limit?: number -} - -/** - * ServerVariable without action - */ -export type ServerVariableDefaultArgs = { - /** - * Select specific fields to fetch from the ServerVariable - */ - select?: Prisma.ServerVariableSelect | null - /** - * Omit specific fields from the ServerVariable - */ - omit?: Prisma.ServerVariableOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerVariableInclude | null -} diff --git a/prisma/generated/prisma/models/Session.ts b/prisma/generated/prisma/models/Session.ts deleted file mode 100644 index cfb840f..0000000 --- a/prisma/generated/prisma/models/Session.ts +++ /dev/null @@ -1,1340 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `Session` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model Session - * - */ -export type SessionModel = runtime.Types.Result.DefaultSelection - -export type AggregateSession = { - _count: SessionCountAggregateOutputType | null - _min: SessionMinAggregateOutputType | null - _max: SessionMaxAggregateOutputType | null -} - -export type SessionMinAggregateOutputType = { - id: string | null - sessionToken: string | null - userId: string | null - expires: Date | null - createdAt: Date | null -} - -export type SessionMaxAggregateOutputType = { - id: string | null - sessionToken: string | null - userId: string | null - expires: Date | null - createdAt: Date | null -} - -export type SessionCountAggregateOutputType = { - id: number - sessionToken: number - userId: number - expires: number - createdAt: number - _all: number -} - - -export type SessionMinAggregateInputType = { - id?: true - sessionToken?: true - userId?: true - expires?: true - createdAt?: true -} - -export type SessionMaxAggregateInputType = { - id?: true - sessionToken?: true - userId?: true - expires?: true - createdAt?: true -} - -export type SessionCountAggregateInputType = { - id?: true - sessionToken?: true - userId?: true - expires?: true - createdAt?: true - _all?: true -} - -export type SessionAggregateArgs = { - /** - * Filter which Session to aggregate. - */ - where?: Prisma.SessionWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Sessions to fetch. - */ - orderBy?: Prisma.SessionOrderByWithRelationInput | Prisma.SessionOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.SessionWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Sessions from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Sessions. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned Sessions - **/ - _count?: true | SessionCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: SessionMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: SessionMaxAggregateInputType -} - -export type GetSessionAggregateType = { - [P in keyof T & keyof AggregateSession]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type SessionGroupByArgs = { - where?: Prisma.SessionWhereInput - orderBy?: Prisma.SessionOrderByWithAggregationInput | Prisma.SessionOrderByWithAggregationInput[] - by: Prisma.SessionScalarFieldEnum[] | Prisma.SessionScalarFieldEnum - having?: Prisma.SessionScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: SessionCountAggregateInputType | true - _min?: SessionMinAggregateInputType - _max?: SessionMaxAggregateInputType -} - -export type SessionGroupByOutputType = { - id: string - sessionToken: string - userId: string - expires: Date - createdAt: Date - _count: SessionCountAggregateOutputType | null - _min: SessionMinAggregateOutputType | null - _max: SessionMaxAggregateOutputType | null -} - -type GetSessionGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof SessionGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type SessionWhereInput = { - AND?: Prisma.SessionWhereInput | Prisma.SessionWhereInput[] - OR?: Prisma.SessionWhereInput[] - NOT?: Prisma.SessionWhereInput | Prisma.SessionWhereInput[] - id?: Prisma.StringFilter<"Session"> | string - sessionToken?: Prisma.StringFilter<"Session"> | string - userId?: Prisma.StringFilter<"Session"> | string - expires?: Prisma.DateTimeFilter<"Session"> | Date | string - createdAt?: Prisma.DateTimeFilter<"Session"> | Date | string - user?: Prisma.XOR -} - -export type SessionOrderByWithRelationInput = { - id?: Prisma.SortOrder - sessionToken?: Prisma.SortOrder - userId?: Prisma.SortOrder - expires?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - user?: Prisma.UserOrderByWithRelationInput -} - -export type SessionWhereUniqueInput = Prisma.AtLeast<{ - id?: string - sessionToken?: string - AND?: Prisma.SessionWhereInput | Prisma.SessionWhereInput[] - OR?: Prisma.SessionWhereInput[] - NOT?: Prisma.SessionWhereInput | Prisma.SessionWhereInput[] - userId?: Prisma.StringFilter<"Session"> | string - expires?: Prisma.DateTimeFilter<"Session"> | Date | string - createdAt?: Prisma.DateTimeFilter<"Session"> | Date | string - user?: Prisma.XOR -}, "id" | "sessionToken"> - -export type SessionOrderByWithAggregationInput = { - id?: Prisma.SortOrder - sessionToken?: Prisma.SortOrder - userId?: Prisma.SortOrder - expires?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - _count?: Prisma.SessionCountOrderByAggregateInput - _max?: Prisma.SessionMaxOrderByAggregateInput - _min?: Prisma.SessionMinOrderByAggregateInput -} - -export type SessionScalarWhereWithAggregatesInput = { - AND?: Prisma.SessionScalarWhereWithAggregatesInput | Prisma.SessionScalarWhereWithAggregatesInput[] - OR?: Prisma.SessionScalarWhereWithAggregatesInput[] - NOT?: Prisma.SessionScalarWhereWithAggregatesInput | Prisma.SessionScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"Session"> | string - sessionToken?: Prisma.StringWithAggregatesFilter<"Session"> | string - userId?: Prisma.StringWithAggregatesFilter<"Session"> | string - expires?: Prisma.DateTimeWithAggregatesFilter<"Session"> | Date | string - createdAt?: Prisma.DateTimeWithAggregatesFilter<"Session"> | Date | string -} - -export type SessionCreateInput = { - id?: string - sessionToken: string - expires: Date | string - createdAt?: Date | string - user: Prisma.UserCreateNestedOneWithoutSessionsInput -} - -export type SessionUncheckedCreateInput = { - id?: string - sessionToken: string - userId: string - expires: Date | string - createdAt?: Date | string -} - -export type SessionUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - sessionToken?: Prisma.StringFieldUpdateOperationsInput | string - expires?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - user?: Prisma.UserUpdateOneRequiredWithoutSessionsNestedInput -} - -export type SessionUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - sessionToken?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - expires?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type SessionCreateManyInput = { - id?: string - sessionToken: string - userId: string - expires: Date | string - createdAt?: Date | string -} - -export type SessionUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - sessionToken?: Prisma.StringFieldUpdateOperationsInput | string - expires?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type SessionUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - sessionToken?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - expires?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type SessionListRelationFilter = { - every?: Prisma.SessionWhereInput - some?: Prisma.SessionWhereInput - none?: Prisma.SessionWhereInput -} - -export type SessionOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type SessionCountOrderByAggregateInput = { - id?: Prisma.SortOrder - sessionToken?: Prisma.SortOrder - userId?: Prisma.SortOrder - expires?: Prisma.SortOrder - createdAt?: Prisma.SortOrder -} - -export type SessionMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - sessionToken?: Prisma.SortOrder - userId?: Prisma.SortOrder - expires?: Prisma.SortOrder - createdAt?: Prisma.SortOrder -} - -export type SessionMinOrderByAggregateInput = { - id?: Prisma.SortOrder - sessionToken?: Prisma.SortOrder - userId?: Prisma.SortOrder - expires?: Prisma.SortOrder - createdAt?: Prisma.SortOrder -} - -export type SessionCreateNestedManyWithoutUserInput = { - create?: Prisma.XOR | Prisma.SessionCreateWithoutUserInput[] | Prisma.SessionUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.SessionCreateOrConnectWithoutUserInput | Prisma.SessionCreateOrConnectWithoutUserInput[] - createMany?: Prisma.SessionCreateManyUserInputEnvelope - connect?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] -} - -export type SessionUncheckedCreateNestedManyWithoutUserInput = { - create?: Prisma.XOR | Prisma.SessionCreateWithoutUserInput[] | Prisma.SessionUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.SessionCreateOrConnectWithoutUserInput | Prisma.SessionCreateOrConnectWithoutUserInput[] - createMany?: Prisma.SessionCreateManyUserInputEnvelope - connect?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] -} - -export type SessionUpdateManyWithoutUserNestedInput = { - create?: Prisma.XOR | Prisma.SessionCreateWithoutUserInput[] | Prisma.SessionUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.SessionCreateOrConnectWithoutUserInput | Prisma.SessionCreateOrConnectWithoutUserInput[] - upsert?: Prisma.SessionUpsertWithWhereUniqueWithoutUserInput | Prisma.SessionUpsertWithWhereUniqueWithoutUserInput[] - createMany?: Prisma.SessionCreateManyUserInputEnvelope - set?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] - disconnect?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] - delete?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] - connect?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] - update?: Prisma.SessionUpdateWithWhereUniqueWithoutUserInput | Prisma.SessionUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: Prisma.SessionUpdateManyWithWhereWithoutUserInput | Prisma.SessionUpdateManyWithWhereWithoutUserInput[] - deleteMany?: Prisma.SessionScalarWhereInput | Prisma.SessionScalarWhereInput[] -} - -export type SessionUncheckedUpdateManyWithoutUserNestedInput = { - create?: Prisma.XOR | Prisma.SessionCreateWithoutUserInput[] | Prisma.SessionUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.SessionCreateOrConnectWithoutUserInput | Prisma.SessionCreateOrConnectWithoutUserInput[] - upsert?: Prisma.SessionUpsertWithWhereUniqueWithoutUserInput | Prisma.SessionUpsertWithWhereUniqueWithoutUserInput[] - createMany?: Prisma.SessionCreateManyUserInputEnvelope - set?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] - disconnect?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] - delete?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] - connect?: Prisma.SessionWhereUniqueInput | Prisma.SessionWhereUniqueInput[] - update?: Prisma.SessionUpdateWithWhereUniqueWithoutUserInput | Prisma.SessionUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: Prisma.SessionUpdateManyWithWhereWithoutUserInput | Prisma.SessionUpdateManyWithWhereWithoutUserInput[] - deleteMany?: Prisma.SessionScalarWhereInput | Prisma.SessionScalarWhereInput[] -} - -export type SessionCreateWithoutUserInput = { - id?: string - sessionToken: string - expires: Date | string - createdAt?: Date | string -} - -export type SessionUncheckedCreateWithoutUserInput = { - id?: string - sessionToken: string - expires: Date | string - createdAt?: Date | string -} - -export type SessionCreateOrConnectWithoutUserInput = { - where: Prisma.SessionWhereUniqueInput - create: Prisma.XOR -} - -export type SessionCreateManyUserInputEnvelope = { - data: Prisma.SessionCreateManyUserInput | Prisma.SessionCreateManyUserInput[] - skipDuplicates?: boolean -} - -export type SessionUpsertWithWhereUniqueWithoutUserInput = { - where: Prisma.SessionWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type SessionUpdateWithWhereUniqueWithoutUserInput = { - where: Prisma.SessionWhereUniqueInput - data: Prisma.XOR -} - -export type SessionUpdateManyWithWhereWithoutUserInput = { - where: Prisma.SessionScalarWhereInput - data: Prisma.XOR -} - -export type SessionScalarWhereInput = { - AND?: Prisma.SessionScalarWhereInput | Prisma.SessionScalarWhereInput[] - OR?: Prisma.SessionScalarWhereInput[] - NOT?: Prisma.SessionScalarWhereInput | Prisma.SessionScalarWhereInput[] - id?: Prisma.StringFilter<"Session"> | string - sessionToken?: Prisma.StringFilter<"Session"> | string - userId?: Prisma.StringFilter<"Session"> | string - expires?: Prisma.DateTimeFilter<"Session"> | Date | string - createdAt?: Prisma.DateTimeFilter<"Session"> | Date | string -} - -export type SessionCreateManyUserInput = { - id?: string - sessionToken: string - expires: Date | string - createdAt?: Date | string -} - -export type SessionUpdateWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - sessionToken?: Prisma.StringFieldUpdateOperationsInput | string - expires?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type SessionUncheckedUpdateWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - sessionToken?: Prisma.StringFieldUpdateOperationsInput | string - expires?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type SessionUncheckedUpdateManyWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - sessionToken?: Prisma.StringFieldUpdateOperationsInput | string - expires?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - - -export type SessionSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - sessionToken?: boolean - userId?: boolean - expires?: boolean - createdAt?: boolean - user?: boolean | Prisma.UserDefaultArgs -}, ExtArgs["result"]["session"]> - -export type SessionSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - sessionToken?: boolean - userId?: boolean - expires?: boolean - createdAt?: boolean - user?: boolean | Prisma.UserDefaultArgs -}, ExtArgs["result"]["session"]> - -export type SessionSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - sessionToken?: boolean - userId?: boolean - expires?: boolean - createdAt?: boolean - user?: boolean | Prisma.UserDefaultArgs -}, ExtArgs["result"]["session"]> - -export type SessionSelectScalar = { - id?: boolean - sessionToken?: boolean - userId?: boolean - expires?: boolean - createdAt?: boolean -} - -export type SessionOmit = runtime.Types.Extensions.GetOmit<"id" | "sessionToken" | "userId" | "expires" | "createdAt", ExtArgs["result"]["session"]> -export type SessionInclude = { - user?: boolean | Prisma.UserDefaultArgs -} -export type SessionIncludeCreateManyAndReturn = { - user?: boolean | Prisma.UserDefaultArgs -} -export type SessionIncludeUpdateManyAndReturn = { - user?: boolean | Prisma.UserDefaultArgs -} - -export type $SessionPayload = { - name: "Session" - objects: { - user: Prisma.$UserPayload - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - sessionToken: string - userId: string - expires: Date - createdAt: Date - }, ExtArgs["result"]["session"]> - composites: {} -} - -export type SessionGetPayload = runtime.Types.Result.GetResult - -export type SessionCountArgs = - Omit & { - select?: SessionCountAggregateInputType | true - } - -export interface SessionDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['Session'], meta: { name: 'Session' } } - /** - * Find zero or one Session that matches the filter. - * @param {SessionFindUniqueArgs} args - Arguments to find a Session - * @example - * // Get one Session - * const session = await prisma.session.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one Session that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {SessionFindUniqueOrThrowArgs} args - Arguments to find a Session - * @example - * // Get one Session - * const session = await prisma.session.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Session that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SessionFindFirstArgs} args - Arguments to find a Session - * @example - * // Get one Session - * const session = await prisma.session.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first Session that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SessionFindFirstOrThrowArgs} args - Arguments to find a Session - * @example - * // Get one Session - * const session = await prisma.session.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more Sessions that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SessionFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all Sessions - * const sessions = await prisma.session.findMany() - * - * // Get first 10 Sessions - * const sessions = await prisma.session.findMany({ take: 10 }) - * - * // Only select the `id` - * const sessionWithIdOnly = await prisma.session.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a Session. - * @param {SessionCreateArgs} args - Arguments to create a Session. - * @example - * // Create one Session - * const Session = await prisma.session.create({ - * data: { - * // ... data to create a Session - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many Sessions. - * @param {SessionCreateManyArgs} args - Arguments to create many Sessions. - * @example - * // Create many Sessions - * const session = await prisma.session.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many Sessions and returns the data saved in the database. - * @param {SessionCreateManyAndReturnArgs} args - Arguments to create many Sessions. - * @example - * // Create many Sessions - * const session = await prisma.session.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many Sessions and only return the `id` - * const sessionWithIdOnly = await prisma.session.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a Session. - * @param {SessionDeleteArgs} args - Arguments to delete one Session. - * @example - * // Delete one Session - * const Session = await prisma.session.delete({ - * where: { - * // ... filter to delete one Session - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one Session. - * @param {SessionUpdateArgs} args - Arguments to update one Session. - * @example - * // Update one Session - * const session = await prisma.session.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more Sessions. - * @param {SessionDeleteManyArgs} args - Arguments to filter Sessions to delete. - * @example - * // Delete a few Sessions - * const { count } = await prisma.session.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Sessions. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SessionUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many Sessions - * const session = await prisma.session.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Sessions and returns the data updated in the database. - * @param {SessionUpdateManyAndReturnArgs} args - Arguments to update many Sessions. - * @example - * // Update many Sessions - * const session = await prisma.session.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more Sessions and only return the `id` - * const sessionWithIdOnly = await prisma.session.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one Session. - * @param {SessionUpsertArgs} args - Arguments to update or create a Session. - * @example - * // Update or create a Session - * const session = await prisma.session.upsert({ - * create: { - * // ... data to create a Session - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the Session we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__SessionClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of Sessions. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SessionCountArgs} args - Arguments to filter Sessions to count. - * @example - * // Count the number of Sessions - * const count = await prisma.session.count({ - * where: { - * // ... the filter for the Sessions we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a Session. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SessionAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by Session. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SessionGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends SessionGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: SessionGroupByArgs['orderBy'] } - : { orderBy?: SessionGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetSessionGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the Session model - */ -readonly fields: SessionFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for Session. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__SessionClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - user = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the Session model - */ -export interface SessionFieldRefs { - readonly id: Prisma.FieldRef<"Session", 'String'> - readonly sessionToken: Prisma.FieldRef<"Session", 'String'> - readonly userId: Prisma.FieldRef<"Session", 'String'> - readonly expires: Prisma.FieldRef<"Session", 'DateTime'> - readonly createdAt: Prisma.FieldRef<"Session", 'DateTime'> -} - - -// Custom InputTypes -/** - * Session findUnique - */ -export type SessionFindUniqueArgs = { - /** - * Select specific fields to fetch from the Session - */ - select?: Prisma.SessionSelect | null - /** - * Omit specific fields from the Session - */ - omit?: Prisma.SessionOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SessionInclude | null - /** - * Filter, which Session to fetch. - */ - where: Prisma.SessionWhereUniqueInput -} - -/** - * Session findUniqueOrThrow - */ -export type SessionFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the Session - */ - select?: Prisma.SessionSelect | null - /** - * Omit specific fields from the Session - */ - omit?: Prisma.SessionOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SessionInclude | null - /** - * Filter, which Session to fetch. - */ - where: Prisma.SessionWhereUniqueInput -} - -/** - * Session findFirst - */ -export type SessionFindFirstArgs = { - /** - * Select specific fields to fetch from the Session - */ - select?: Prisma.SessionSelect | null - /** - * Omit specific fields from the Session - */ - omit?: Prisma.SessionOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SessionInclude | null - /** - * Filter, which Session to fetch. - */ - where?: Prisma.SessionWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Sessions to fetch. - */ - orderBy?: Prisma.SessionOrderByWithRelationInput | Prisma.SessionOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Sessions. - */ - cursor?: Prisma.SessionWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Sessions from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Sessions. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Sessions. - */ - distinct?: Prisma.SessionScalarFieldEnum | Prisma.SessionScalarFieldEnum[] -} - -/** - * Session findFirstOrThrow - */ -export type SessionFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the Session - */ - select?: Prisma.SessionSelect | null - /** - * Omit specific fields from the Session - */ - omit?: Prisma.SessionOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SessionInclude | null - /** - * Filter, which Session to fetch. - */ - where?: Prisma.SessionWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Sessions to fetch. - */ - orderBy?: Prisma.SessionOrderByWithRelationInput | Prisma.SessionOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Sessions. - */ - cursor?: Prisma.SessionWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Sessions from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Sessions. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Sessions. - */ - distinct?: Prisma.SessionScalarFieldEnum | Prisma.SessionScalarFieldEnum[] -} - -/** - * Session findMany - */ -export type SessionFindManyArgs = { - /** - * Select specific fields to fetch from the Session - */ - select?: Prisma.SessionSelect | null - /** - * Omit specific fields from the Session - */ - omit?: Prisma.SessionOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SessionInclude | null - /** - * Filter, which Sessions to fetch. - */ - where?: Prisma.SessionWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Sessions to fetch. - */ - orderBy?: Prisma.SessionOrderByWithRelationInput | Prisma.SessionOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing Sessions. - */ - cursor?: Prisma.SessionWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Sessions from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Sessions. - */ - skip?: number - distinct?: Prisma.SessionScalarFieldEnum | Prisma.SessionScalarFieldEnum[] -} - -/** - * Session create - */ -export type SessionCreateArgs = { - /** - * Select specific fields to fetch from the Session - */ - select?: Prisma.SessionSelect | null - /** - * Omit specific fields from the Session - */ - omit?: Prisma.SessionOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SessionInclude | null - /** - * The data needed to create a Session. - */ - data: Prisma.XOR -} - -/** - * Session createMany - */ -export type SessionCreateManyArgs = { - /** - * The data used to create many Sessions. - */ - data: Prisma.SessionCreateManyInput | Prisma.SessionCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * Session createManyAndReturn - */ -export type SessionCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Session - */ - select?: Prisma.SessionSelectCreateManyAndReturn | null - /** - * Omit specific fields from the Session - */ - omit?: Prisma.SessionOmit | null - /** - * The data used to create many Sessions. - */ - data: Prisma.SessionCreateManyInput | Prisma.SessionCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SessionIncludeCreateManyAndReturn | null -} - -/** - * Session update - */ -export type SessionUpdateArgs = { - /** - * Select specific fields to fetch from the Session - */ - select?: Prisma.SessionSelect | null - /** - * Omit specific fields from the Session - */ - omit?: Prisma.SessionOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SessionInclude | null - /** - * The data needed to update a Session. - */ - data: Prisma.XOR - /** - * Choose, which Session to update. - */ - where: Prisma.SessionWhereUniqueInput -} - -/** - * Session updateMany - */ -export type SessionUpdateManyArgs = { - /** - * The data used to update Sessions. - */ - data: Prisma.XOR - /** - * Filter which Sessions to update - */ - where?: Prisma.SessionWhereInput - /** - * Limit how many Sessions to update. - */ - limit?: number -} - -/** - * Session updateManyAndReturn - */ -export type SessionUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the Session - */ - select?: Prisma.SessionSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the Session - */ - omit?: Prisma.SessionOmit | null - /** - * The data used to update Sessions. - */ - data: Prisma.XOR - /** - * Filter which Sessions to update - */ - where?: Prisma.SessionWhereInput - /** - * Limit how many Sessions to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SessionIncludeUpdateManyAndReturn | null -} - -/** - * Session upsert - */ -export type SessionUpsertArgs = { - /** - * Select specific fields to fetch from the Session - */ - select?: Prisma.SessionSelect | null - /** - * Omit specific fields from the Session - */ - omit?: Prisma.SessionOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SessionInclude | null - /** - * The filter to search for the Session to update in case it exists. - */ - where: Prisma.SessionWhereUniqueInput - /** - * In case the Session found by the `where` argument doesn't exist, create a new Session with this data. - */ - create: Prisma.XOR - /** - * In case the Session was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * Session delete - */ -export type SessionDeleteArgs = { - /** - * Select specific fields to fetch from the Session - */ - select?: Prisma.SessionSelect | null - /** - * Omit specific fields from the Session - */ - omit?: Prisma.SessionOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SessionInclude | null - /** - * Filter which Session to delete. - */ - where: Prisma.SessionWhereUniqueInput -} - -/** - * Session deleteMany - */ -export type SessionDeleteManyArgs = { - /** - * Filter which Sessions to delete - */ - where?: Prisma.SessionWhereInput - /** - * Limit how many Sessions to delete. - */ - limit?: number -} - -/** - * Session without action - */ -export type SessionDefaultArgs = { - /** - * Select specific fields to fetch from the Session - */ - select?: Prisma.SessionSelect | null - /** - * Omit specific fields from the Session - */ - omit?: Prisma.SessionOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SessionInclude | null -} diff --git a/prisma/generated/prisma/models/SupportTicket.ts b/prisma/generated/prisma/models/SupportTicket.ts deleted file mode 100644 index baa355b..0000000 --- a/prisma/generated/prisma/models/SupportTicket.ts +++ /dev/null @@ -1,1935 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `SupportTicket` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model SupportTicket - * - */ -export type SupportTicketModel = runtime.Types.Result.DefaultSelection - -export type AggregateSupportTicket = { - _count: SupportTicketCountAggregateOutputType | null - _min: SupportTicketMinAggregateOutputType | null - _max: SupportTicketMaxAggregateOutputType | null -} - -export type SupportTicketMinAggregateOutputType = { - id: string | null - ticketNumber: string | null - userId: string | null - serverId: string | null - subject: string | null - category: string | null - priority: string | null - status: string | null - assignedToId: string | null - createdAt: Date | null - updatedAt: Date | null - resolvedAt: Date | null -} - -export type SupportTicketMaxAggregateOutputType = { - id: string | null - ticketNumber: string | null - userId: string | null - serverId: string | null - subject: string | null - category: string | null - priority: string | null - status: string | null - assignedToId: string | null - createdAt: Date | null - updatedAt: Date | null - resolvedAt: Date | null -} - -export type SupportTicketCountAggregateOutputType = { - id: number - ticketNumber: number - userId: number - serverId: number - subject: number - category: number - priority: number - status: number - assignedToId: number - createdAt: number - updatedAt: number - resolvedAt: number - _all: number -} - - -export type SupportTicketMinAggregateInputType = { - id?: true - ticketNumber?: true - userId?: true - serverId?: true - subject?: true - category?: true - priority?: true - status?: true - assignedToId?: true - createdAt?: true - updatedAt?: true - resolvedAt?: true -} - -export type SupportTicketMaxAggregateInputType = { - id?: true - ticketNumber?: true - userId?: true - serverId?: true - subject?: true - category?: true - priority?: true - status?: true - assignedToId?: true - createdAt?: true - updatedAt?: true - resolvedAt?: true -} - -export type SupportTicketCountAggregateInputType = { - id?: true - ticketNumber?: true - userId?: true - serverId?: true - subject?: true - category?: true - priority?: true - status?: true - assignedToId?: true - createdAt?: true - updatedAt?: true - resolvedAt?: true - _all?: true -} - -export type SupportTicketAggregateArgs = { - /** - * Filter which SupportTicket to aggregate. - */ - where?: Prisma.SupportTicketWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of SupportTickets to fetch. - */ - orderBy?: Prisma.SupportTicketOrderByWithRelationInput | Prisma.SupportTicketOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.SupportTicketWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` SupportTickets from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` SupportTickets. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned SupportTickets - **/ - _count?: true | SupportTicketCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: SupportTicketMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: SupportTicketMaxAggregateInputType -} - -export type GetSupportTicketAggregateType = { - [P in keyof T & keyof AggregateSupportTicket]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type SupportTicketGroupByArgs = { - where?: Prisma.SupportTicketWhereInput - orderBy?: Prisma.SupportTicketOrderByWithAggregationInput | Prisma.SupportTicketOrderByWithAggregationInput[] - by: Prisma.SupportTicketScalarFieldEnum[] | Prisma.SupportTicketScalarFieldEnum - having?: Prisma.SupportTicketScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: SupportTicketCountAggregateInputType | true - _min?: SupportTicketMinAggregateInputType - _max?: SupportTicketMaxAggregateInputType -} - -export type SupportTicketGroupByOutputType = { - id: string - ticketNumber: string - userId: string - serverId: string | null - subject: string - category: string - priority: string - status: string - assignedToId: string | null - createdAt: Date - updatedAt: Date - resolvedAt: Date | null - _count: SupportTicketCountAggregateOutputType | null - _min: SupportTicketMinAggregateOutputType | null - _max: SupportTicketMaxAggregateOutputType | null -} - -type GetSupportTicketGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof SupportTicketGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type SupportTicketWhereInput = { - AND?: Prisma.SupportTicketWhereInput | Prisma.SupportTicketWhereInput[] - OR?: Prisma.SupportTicketWhereInput[] - NOT?: Prisma.SupportTicketWhereInput | Prisma.SupportTicketWhereInput[] - id?: Prisma.StringFilter<"SupportTicket"> | string - ticketNumber?: Prisma.StringFilter<"SupportTicket"> | string - userId?: Prisma.StringFilter<"SupportTicket"> | string - serverId?: Prisma.StringNullableFilter<"SupportTicket"> | string | null - subject?: Prisma.StringFilter<"SupportTicket"> | string - category?: Prisma.StringFilter<"SupportTicket"> | string - priority?: Prisma.StringFilter<"SupportTicket"> | string - status?: Prisma.StringFilter<"SupportTicket"> | string - assignedToId?: Prisma.StringNullableFilter<"SupportTicket"> | string | null - createdAt?: Prisma.DateTimeFilter<"SupportTicket"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"SupportTicket"> | Date | string - resolvedAt?: Prisma.DateTimeNullableFilter<"SupportTicket"> | Date | string | null - user?: Prisma.XOR - server?: Prisma.XOR | null - replies?: Prisma.SupportTicketReplyListRelationFilter -} - -export type SupportTicketOrderByWithRelationInput = { - id?: Prisma.SortOrder - ticketNumber?: Prisma.SortOrder - userId?: Prisma.SortOrder - serverId?: Prisma.SortOrderInput | Prisma.SortOrder - subject?: Prisma.SortOrder - category?: Prisma.SortOrder - priority?: Prisma.SortOrder - status?: Prisma.SortOrder - assignedToId?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - resolvedAt?: Prisma.SortOrderInput | Prisma.SortOrder - user?: Prisma.UserOrderByWithRelationInput - server?: Prisma.ServerOrderByWithRelationInput - replies?: Prisma.SupportTicketReplyOrderByRelationAggregateInput -} - -export type SupportTicketWhereUniqueInput = Prisma.AtLeast<{ - id?: string - ticketNumber?: string - AND?: Prisma.SupportTicketWhereInput | Prisma.SupportTicketWhereInput[] - OR?: Prisma.SupportTicketWhereInput[] - NOT?: Prisma.SupportTicketWhereInput | Prisma.SupportTicketWhereInput[] - userId?: Prisma.StringFilter<"SupportTicket"> | string - serverId?: Prisma.StringNullableFilter<"SupportTicket"> | string | null - subject?: Prisma.StringFilter<"SupportTicket"> | string - category?: Prisma.StringFilter<"SupportTicket"> | string - priority?: Prisma.StringFilter<"SupportTicket"> | string - status?: Prisma.StringFilter<"SupportTicket"> | string - assignedToId?: Prisma.StringNullableFilter<"SupportTicket"> | string | null - createdAt?: Prisma.DateTimeFilter<"SupportTicket"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"SupportTicket"> | Date | string - resolvedAt?: Prisma.DateTimeNullableFilter<"SupportTicket"> | Date | string | null - user?: Prisma.XOR - server?: Prisma.XOR | null - replies?: Prisma.SupportTicketReplyListRelationFilter -}, "id" | "ticketNumber"> - -export type SupportTicketOrderByWithAggregationInput = { - id?: Prisma.SortOrder - ticketNumber?: Prisma.SortOrder - userId?: Prisma.SortOrder - serverId?: Prisma.SortOrderInput | Prisma.SortOrder - subject?: Prisma.SortOrder - category?: Prisma.SortOrder - priority?: Prisma.SortOrder - status?: Prisma.SortOrder - assignedToId?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - resolvedAt?: Prisma.SortOrderInput | Prisma.SortOrder - _count?: Prisma.SupportTicketCountOrderByAggregateInput - _max?: Prisma.SupportTicketMaxOrderByAggregateInput - _min?: Prisma.SupportTicketMinOrderByAggregateInput -} - -export type SupportTicketScalarWhereWithAggregatesInput = { - AND?: Prisma.SupportTicketScalarWhereWithAggregatesInput | Prisma.SupportTicketScalarWhereWithAggregatesInput[] - OR?: Prisma.SupportTicketScalarWhereWithAggregatesInput[] - NOT?: Prisma.SupportTicketScalarWhereWithAggregatesInput | Prisma.SupportTicketScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"SupportTicket"> | string - ticketNumber?: Prisma.StringWithAggregatesFilter<"SupportTicket"> | string - userId?: Prisma.StringWithAggregatesFilter<"SupportTicket"> | string - serverId?: Prisma.StringNullableWithAggregatesFilter<"SupportTicket"> | string | null - subject?: Prisma.StringWithAggregatesFilter<"SupportTicket"> | string - category?: Prisma.StringWithAggregatesFilter<"SupportTicket"> | string - priority?: Prisma.StringWithAggregatesFilter<"SupportTicket"> | string - status?: Prisma.StringWithAggregatesFilter<"SupportTicket"> | string - assignedToId?: Prisma.StringNullableWithAggregatesFilter<"SupportTicket"> | string | null - createdAt?: Prisma.DateTimeWithAggregatesFilter<"SupportTicket"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"SupportTicket"> | Date | string - resolvedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"SupportTicket"> | Date | string | null -} - -export type SupportTicketCreateInput = { - id?: string - ticketNumber: string - subject: string - category: string - priority?: string - status?: string - assignedToId?: string | null - createdAt?: Date | string - updatedAt?: Date | string - resolvedAt?: Date | string | null - user: Prisma.UserCreateNestedOneWithoutTicketsInput - server?: Prisma.ServerCreateNestedOneWithoutTicketsInput - replies?: Prisma.SupportTicketReplyCreateNestedManyWithoutTicketInput -} - -export type SupportTicketUncheckedCreateInput = { - id?: string - ticketNumber: string - userId: string - serverId?: string | null - subject: string - category: string - priority?: string - status?: string - assignedToId?: string | null - createdAt?: Date | string - updatedAt?: Date | string - resolvedAt?: Date | string | null - replies?: Prisma.SupportTicketReplyUncheckedCreateNestedManyWithoutTicketInput -} - -export type SupportTicketUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketNumber?: Prisma.StringFieldUpdateOperationsInput | string - subject?: Prisma.StringFieldUpdateOperationsInput | string - category?: Prisma.StringFieldUpdateOperationsInput | string - priority?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.StringFieldUpdateOperationsInput | string - assignedToId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - resolvedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - user?: Prisma.UserUpdateOneRequiredWithoutTicketsNestedInput - server?: Prisma.ServerUpdateOneWithoutTicketsNestedInput - replies?: Prisma.SupportTicketReplyUpdateManyWithoutTicketNestedInput -} - -export type SupportTicketUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketNumber?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - serverId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - subject?: Prisma.StringFieldUpdateOperationsInput | string - category?: Prisma.StringFieldUpdateOperationsInput | string - priority?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.StringFieldUpdateOperationsInput | string - assignedToId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - resolvedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - replies?: Prisma.SupportTicketReplyUncheckedUpdateManyWithoutTicketNestedInput -} - -export type SupportTicketCreateManyInput = { - id?: string - ticketNumber: string - userId: string - serverId?: string | null - subject: string - category: string - priority?: string - status?: string - assignedToId?: string | null - createdAt?: Date | string - updatedAt?: Date | string - resolvedAt?: Date | string | null -} - -export type SupportTicketUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketNumber?: Prisma.StringFieldUpdateOperationsInput | string - subject?: Prisma.StringFieldUpdateOperationsInput | string - category?: Prisma.StringFieldUpdateOperationsInput | string - priority?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.StringFieldUpdateOperationsInput | string - assignedToId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - resolvedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type SupportTicketUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketNumber?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - serverId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - subject?: Prisma.StringFieldUpdateOperationsInput | string - category?: Prisma.StringFieldUpdateOperationsInput | string - priority?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.StringFieldUpdateOperationsInput | string - assignedToId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - resolvedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type SupportTicketListRelationFilter = { - every?: Prisma.SupportTicketWhereInput - some?: Prisma.SupportTicketWhereInput - none?: Prisma.SupportTicketWhereInput -} - -export type SupportTicketOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type SupportTicketCountOrderByAggregateInput = { - id?: Prisma.SortOrder - ticketNumber?: Prisma.SortOrder - userId?: Prisma.SortOrder - serverId?: Prisma.SortOrder - subject?: Prisma.SortOrder - category?: Prisma.SortOrder - priority?: Prisma.SortOrder - status?: Prisma.SortOrder - assignedToId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - resolvedAt?: Prisma.SortOrder -} - -export type SupportTicketMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - ticketNumber?: Prisma.SortOrder - userId?: Prisma.SortOrder - serverId?: Prisma.SortOrder - subject?: Prisma.SortOrder - category?: Prisma.SortOrder - priority?: Prisma.SortOrder - status?: Prisma.SortOrder - assignedToId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - resolvedAt?: Prisma.SortOrder -} - -export type SupportTicketMinOrderByAggregateInput = { - id?: Prisma.SortOrder - ticketNumber?: Prisma.SortOrder - userId?: Prisma.SortOrder - serverId?: Prisma.SortOrder - subject?: Prisma.SortOrder - category?: Prisma.SortOrder - priority?: Prisma.SortOrder - status?: Prisma.SortOrder - assignedToId?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - resolvedAt?: Prisma.SortOrder -} - -export type SupportTicketScalarRelationFilter = { - is?: Prisma.SupportTicketWhereInput - isNot?: Prisma.SupportTicketWhereInput -} - -export type SupportTicketCreateNestedManyWithoutUserInput = { - create?: Prisma.XOR | Prisma.SupportTicketCreateWithoutUserInput[] | Prisma.SupportTicketUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.SupportTicketCreateOrConnectWithoutUserInput | Prisma.SupportTicketCreateOrConnectWithoutUserInput[] - createMany?: Prisma.SupportTicketCreateManyUserInputEnvelope - connect?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] -} - -export type SupportTicketUncheckedCreateNestedManyWithoutUserInput = { - create?: Prisma.XOR | Prisma.SupportTicketCreateWithoutUserInput[] | Prisma.SupportTicketUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.SupportTicketCreateOrConnectWithoutUserInput | Prisma.SupportTicketCreateOrConnectWithoutUserInput[] - createMany?: Prisma.SupportTicketCreateManyUserInputEnvelope - connect?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] -} - -export type SupportTicketUpdateManyWithoutUserNestedInput = { - create?: Prisma.XOR | Prisma.SupportTicketCreateWithoutUserInput[] | Prisma.SupportTicketUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.SupportTicketCreateOrConnectWithoutUserInput | Prisma.SupportTicketCreateOrConnectWithoutUserInput[] - upsert?: Prisma.SupportTicketUpsertWithWhereUniqueWithoutUserInput | Prisma.SupportTicketUpsertWithWhereUniqueWithoutUserInput[] - createMany?: Prisma.SupportTicketCreateManyUserInputEnvelope - set?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - disconnect?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - delete?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - connect?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - update?: Prisma.SupportTicketUpdateWithWhereUniqueWithoutUserInput | Prisma.SupportTicketUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: Prisma.SupportTicketUpdateManyWithWhereWithoutUserInput | Prisma.SupportTicketUpdateManyWithWhereWithoutUserInput[] - deleteMany?: Prisma.SupportTicketScalarWhereInput | Prisma.SupportTicketScalarWhereInput[] -} - -export type SupportTicketUncheckedUpdateManyWithoutUserNestedInput = { - create?: Prisma.XOR | Prisma.SupportTicketCreateWithoutUserInput[] | Prisma.SupportTicketUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.SupportTicketCreateOrConnectWithoutUserInput | Prisma.SupportTicketCreateOrConnectWithoutUserInput[] - upsert?: Prisma.SupportTicketUpsertWithWhereUniqueWithoutUserInput | Prisma.SupportTicketUpsertWithWhereUniqueWithoutUserInput[] - createMany?: Prisma.SupportTicketCreateManyUserInputEnvelope - set?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - disconnect?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - delete?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - connect?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - update?: Prisma.SupportTicketUpdateWithWhereUniqueWithoutUserInput | Prisma.SupportTicketUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: Prisma.SupportTicketUpdateManyWithWhereWithoutUserInput | Prisma.SupportTicketUpdateManyWithWhereWithoutUserInput[] - deleteMany?: Prisma.SupportTicketScalarWhereInput | Prisma.SupportTicketScalarWhereInput[] -} - -export type SupportTicketCreateNestedManyWithoutServerInput = { - create?: Prisma.XOR | Prisma.SupportTicketCreateWithoutServerInput[] | Prisma.SupportTicketUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.SupportTicketCreateOrConnectWithoutServerInput | Prisma.SupportTicketCreateOrConnectWithoutServerInput[] - createMany?: Prisma.SupportTicketCreateManyServerInputEnvelope - connect?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] -} - -export type SupportTicketUncheckedCreateNestedManyWithoutServerInput = { - create?: Prisma.XOR | Prisma.SupportTicketCreateWithoutServerInput[] | Prisma.SupportTicketUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.SupportTicketCreateOrConnectWithoutServerInput | Prisma.SupportTicketCreateOrConnectWithoutServerInput[] - createMany?: Prisma.SupportTicketCreateManyServerInputEnvelope - connect?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] -} - -export type SupportTicketUpdateManyWithoutServerNestedInput = { - create?: Prisma.XOR | Prisma.SupportTicketCreateWithoutServerInput[] | Prisma.SupportTicketUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.SupportTicketCreateOrConnectWithoutServerInput | Prisma.SupportTicketCreateOrConnectWithoutServerInput[] - upsert?: Prisma.SupportTicketUpsertWithWhereUniqueWithoutServerInput | Prisma.SupportTicketUpsertWithWhereUniqueWithoutServerInput[] - createMany?: Prisma.SupportTicketCreateManyServerInputEnvelope - set?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - disconnect?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - delete?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - connect?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - update?: Prisma.SupportTicketUpdateWithWhereUniqueWithoutServerInput | Prisma.SupportTicketUpdateWithWhereUniqueWithoutServerInput[] - updateMany?: Prisma.SupportTicketUpdateManyWithWhereWithoutServerInput | Prisma.SupportTicketUpdateManyWithWhereWithoutServerInput[] - deleteMany?: Prisma.SupportTicketScalarWhereInput | Prisma.SupportTicketScalarWhereInput[] -} - -export type SupportTicketUncheckedUpdateManyWithoutServerNestedInput = { - create?: Prisma.XOR | Prisma.SupportTicketCreateWithoutServerInput[] | Prisma.SupportTicketUncheckedCreateWithoutServerInput[] - connectOrCreate?: Prisma.SupportTicketCreateOrConnectWithoutServerInput | Prisma.SupportTicketCreateOrConnectWithoutServerInput[] - upsert?: Prisma.SupportTicketUpsertWithWhereUniqueWithoutServerInput | Prisma.SupportTicketUpsertWithWhereUniqueWithoutServerInput[] - createMany?: Prisma.SupportTicketCreateManyServerInputEnvelope - set?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - disconnect?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - delete?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - connect?: Prisma.SupportTicketWhereUniqueInput | Prisma.SupportTicketWhereUniqueInput[] - update?: Prisma.SupportTicketUpdateWithWhereUniqueWithoutServerInput | Prisma.SupportTicketUpdateWithWhereUniqueWithoutServerInput[] - updateMany?: Prisma.SupportTicketUpdateManyWithWhereWithoutServerInput | Prisma.SupportTicketUpdateManyWithWhereWithoutServerInput[] - deleteMany?: Prisma.SupportTicketScalarWhereInput | Prisma.SupportTicketScalarWhereInput[] -} - -export type SupportTicketCreateNestedOneWithoutRepliesInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.SupportTicketCreateOrConnectWithoutRepliesInput - connect?: Prisma.SupportTicketWhereUniqueInput -} - -export type SupportTicketUpdateOneRequiredWithoutRepliesNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.SupportTicketCreateOrConnectWithoutRepliesInput - upsert?: Prisma.SupportTicketUpsertWithoutRepliesInput - connect?: Prisma.SupportTicketWhereUniqueInput - update?: Prisma.XOR, Prisma.SupportTicketUncheckedUpdateWithoutRepliesInput> -} - -export type SupportTicketCreateWithoutUserInput = { - id?: string - ticketNumber: string - subject: string - category: string - priority?: string - status?: string - assignedToId?: string | null - createdAt?: Date | string - updatedAt?: Date | string - resolvedAt?: Date | string | null - server?: Prisma.ServerCreateNestedOneWithoutTicketsInput - replies?: Prisma.SupportTicketReplyCreateNestedManyWithoutTicketInput -} - -export type SupportTicketUncheckedCreateWithoutUserInput = { - id?: string - ticketNumber: string - serverId?: string | null - subject: string - category: string - priority?: string - status?: string - assignedToId?: string | null - createdAt?: Date | string - updatedAt?: Date | string - resolvedAt?: Date | string | null - replies?: Prisma.SupportTicketReplyUncheckedCreateNestedManyWithoutTicketInput -} - -export type SupportTicketCreateOrConnectWithoutUserInput = { - where: Prisma.SupportTicketWhereUniqueInput - create: Prisma.XOR -} - -export type SupportTicketCreateManyUserInputEnvelope = { - data: Prisma.SupportTicketCreateManyUserInput | Prisma.SupportTicketCreateManyUserInput[] - skipDuplicates?: boolean -} - -export type SupportTicketUpsertWithWhereUniqueWithoutUserInput = { - where: Prisma.SupportTicketWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type SupportTicketUpdateWithWhereUniqueWithoutUserInput = { - where: Prisma.SupportTicketWhereUniqueInput - data: Prisma.XOR -} - -export type SupportTicketUpdateManyWithWhereWithoutUserInput = { - where: Prisma.SupportTicketScalarWhereInput - data: Prisma.XOR -} - -export type SupportTicketScalarWhereInput = { - AND?: Prisma.SupportTicketScalarWhereInput | Prisma.SupportTicketScalarWhereInput[] - OR?: Prisma.SupportTicketScalarWhereInput[] - NOT?: Prisma.SupportTicketScalarWhereInput | Prisma.SupportTicketScalarWhereInput[] - id?: Prisma.StringFilter<"SupportTicket"> | string - ticketNumber?: Prisma.StringFilter<"SupportTicket"> | string - userId?: Prisma.StringFilter<"SupportTicket"> | string - serverId?: Prisma.StringNullableFilter<"SupportTicket"> | string | null - subject?: Prisma.StringFilter<"SupportTicket"> | string - category?: Prisma.StringFilter<"SupportTicket"> | string - priority?: Prisma.StringFilter<"SupportTicket"> | string - status?: Prisma.StringFilter<"SupportTicket"> | string - assignedToId?: Prisma.StringNullableFilter<"SupportTicket"> | string | null - createdAt?: Prisma.DateTimeFilter<"SupportTicket"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"SupportTicket"> | Date | string - resolvedAt?: Prisma.DateTimeNullableFilter<"SupportTicket"> | Date | string | null -} - -export type SupportTicketCreateWithoutServerInput = { - id?: string - ticketNumber: string - subject: string - category: string - priority?: string - status?: string - assignedToId?: string | null - createdAt?: Date | string - updatedAt?: Date | string - resolvedAt?: Date | string | null - user: Prisma.UserCreateNestedOneWithoutTicketsInput - replies?: Prisma.SupportTicketReplyCreateNestedManyWithoutTicketInput -} - -export type SupportTicketUncheckedCreateWithoutServerInput = { - id?: string - ticketNumber: string - userId: string - subject: string - category: string - priority?: string - status?: string - assignedToId?: string | null - createdAt?: Date | string - updatedAt?: Date | string - resolvedAt?: Date | string | null - replies?: Prisma.SupportTicketReplyUncheckedCreateNestedManyWithoutTicketInput -} - -export type SupportTicketCreateOrConnectWithoutServerInput = { - where: Prisma.SupportTicketWhereUniqueInput - create: Prisma.XOR -} - -export type SupportTicketCreateManyServerInputEnvelope = { - data: Prisma.SupportTicketCreateManyServerInput | Prisma.SupportTicketCreateManyServerInput[] - skipDuplicates?: boolean -} - -export type SupportTicketUpsertWithWhereUniqueWithoutServerInput = { - where: Prisma.SupportTicketWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type SupportTicketUpdateWithWhereUniqueWithoutServerInput = { - where: Prisma.SupportTicketWhereUniqueInput - data: Prisma.XOR -} - -export type SupportTicketUpdateManyWithWhereWithoutServerInput = { - where: Prisma.SupportTicketScalarWhereInput - data: Prisma.XOR -} - -export type SupportTicketCreateWithoutRepliesInput = { - id?: string - ticketNumber: string - subject: string - category: string - priority?: string - status?: string - assignedToId?: string | null - createdAt?: Date | string - updatedAt?: Date | string - resolvedAt?: Date | string | null - user: Prisma.UserCreateNestedOneWithoutTicketsInput - server?: Prisma.ServerCreateNestedOneWithoutTicketsInput -} - -export type SupportTicketUncheckedCreateWithoutRepliesInput = { - id?: string - ticketNumber: string - userId: string - serverId?: string | null - subject: string - category: string - priority?: string - status?: string - assignedToId?: string | null - createdAt?: Date | string - updatedAt?: Date | string - resolvedAt?: Date | string | null -} - -export type SupportTicketCreateOrConnectWithoutRepliesInput = { - where: Prisma.SupportTicketWhereUniqueInput - create: Prisma.XOR -} - -export type SupportTicketUpsertWithoutRepliesInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.SupportTicketWhereInput -} - -export type SupportTicketUpdateToOneWithWhereWithoutRepliesInput = { - where?: Prisma.SupportTicketWhereInput - data: Prisma.XOR -} - -export type SupportTicketUpdateWithoutRepliesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketNumber?: Prisma.StringFieldUpdateOperationsInput | string - subject?: Prisma.StringFieldUpdateOperationsInput | string - category?: Prisma.StringFieldUpdateOperationsInput | string - priority?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.StringFieldUpdateOperationsInput | string - assignedToId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - resolvedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - user?: Prisma.UserUpdateOneRequiredWithoutTicketsNestedInput - server?: Prisma.ServerUpdateOneWithoutTicketsNestedInput -} - -export type SupportTicketUncheckedUpdateWithoutRepliesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketNumber?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - serverId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - subject?: Prisma.StringFieldUpdateOperationsInput | string - category?: Prisma.StringFieldUpdateOperationsInput | string - priority?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.StringFieldUpdateOperationsInput | string - assignedToId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - resolvedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type SupportTicketCreateManyUserInput = { - id?: string - ticketNumber: string - serverId?: string | null - subject: string - category: string - priority?: string - status?: string - assignedToId?: string | null - createdAt?: Date | string - updatedAt?: Date | string - resolvedAt?: Date | string | null -} - -export type SupportTicketUpdateWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketNumber?: Prisma.StringFieldUpdateOperationsInput | string - subject?: Prisma.StringFieldUpdateOperationsInput | string - category?: Prisma.StringFieldUpdateOperationsInput | string - priority?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.StringFieldUpdateOperationsInput | string - assignedToId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - resolvedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - server?: Prisma.ServerUpdateOneWithoutTicketsNestedInput - replies?: Prisma.SupportTicketReplyUpdateManyWithoutTicketNestedInput -} - -export type SupportTicketUncheckedUpdateWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketNumber?: Prisma.StringFieldUpdateOperationsInput | string - serverId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - subject?: Prisma.StringFieldUpdateOperationsInput | string - category?: Prisma.StringFieldUpdateOperationsInput | string - priority?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.StringFieldUpdateOperationsInput | string - assignedToId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - resolvedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - replies?: Prisma.SupportTicketReplyUncheckedUpdateManyWithoutTicketNestedInput -} - -export type SupportTicketUncheckedUpdateManyWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketNumber?: Prisma.StringFieldUpdateOperationsInput | string - serverId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - subject?: Prisma.StringFieldUpdateOperationsInput | string - category?: Prisma.StringFieldUpdateOperationsInput | string - priority?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.StringFieldUpdateOperationsInput | string - assignedToId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - resolvedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type SupportTicketCreateManyServerInput = { - id?: string - ticketNumber: string - userId: string - subject: string - category: string - priority?: string - status?: string - assignedToId?: string | null - createdAt?: Date | string - updatedAt?: Date | string - resolvedAt?: Date | string | null -} - -export type SupportTicketUpdateWithoutServerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketNumber?: Prisma.StringFieldUpdateOperationsInput | string - subject?: Prisma.StringFieldUpdateOperationsInput | string - category?: Prisma.StringFieldUpdateOperationsInput | string - priority?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.StringFieldUpdateOperationsInput | string - assignedToId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - resolvedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - user?: Prisma.UserUpdateOneRequiredWithoutTicketsNestedInput - replies?: Prisma.SupportTicketReplyUpdateManyWithoutTicketNestedInput -} - -export type SupportTicketUncheckedUpdateWithoutServerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketNumber?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - subject?: Prisma.StringFieldUpdateOperationsInput | string - category?: Prisma.StringFieldUpdateOperationsInput | string - priority?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.StringFieldUpdateOperationsInput | string - assignedToId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - resolvedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - replies?: Prisma.SupportTicketReplyUncheckedUpdateManyWithoutTicketNestedInput -} - -export type SupportTicketUncheckedUpdateManyWithoutServerInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketNumber?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - subject?: Prisma.StringFieldUpdateOperationsInput | string - category?: Prisma.StringFieldUpdateOperationsInput | string - priority?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.StringFieldUpdateOperationsInput | string - assignedToId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - resolvedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - - -/** - * Count Type SupportTicketCountOutputType - */ - -export type SupportTicketCountOutputType = { - replies: number -} - -export type SupportTicketCountOutputTypeSelect = { - replies?: boolean | SupportTicketCountOutputTypeCountRepliesArgs -} - -/** - * SupportTicketCountOutputType without action - */ -export type SupportTicketCountOutputTypeDefaultArgs = { - /** - * Select specific fields to fetch from the SupportTicketCountOutputType - */ - select?: Prisma.SupportTicketCountOutputTypeSelect | null -} - -/** - * SupportTicketCountOutputType without action - */ -export type SupportTicketCountOutputTypeCountRepliesArgs = { - where?: Prisma.SupportTicketReplyWhereInput -} - - -export type SupportTicketSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - ticketNumber?: boolean - userId?: boolean - serverId?: boolean - subject?: boolean - category?: boolean - priority?: boolean - status?: boolean - assignedToId?: boolean - createdAt?: boolean - updatedAt?: boolean - resolvedAt?: boolean - user?: boolean | Prisma.UserDefaultArgs - server?: boolean | Prisma.SupportTicket$serverArgs - replies?: boolean | Prisma.SupportTicket$repliesArgs - _count?: boolean | Prisma.SupportTicketCountOutputTypeDefaultArgs -}, ExtArgs["result"]["supportTicket"]> - -export type SupportTicketSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - ticketNumber?: boolean - userId?: boolean - serverId?: boolean - subject?: boolean - category?: boolean - priority?: boolean - status?: boolean - assignedToId?: boolean - createdAt?: boolean - updatedAt?: boolean - resolvedAt?: boolean - user?: boolean | Prisma.UserDefaultArgs - server?: boolean | Prisma.SupportTicket$serverArgs -}, ExtArgs["result"]["supportTicket"]> - -export type SupportTicketSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - ticketNumber?: boolean - userId?: boolean - serverId?: boolean - subject?: boolean - category?: boolean - priority?: boolean - status?: boolean - assignedToId?: boolean - createdAt?: boolean - updatedAt?: boolean - resolvedAt?: boolean - user?: boolean | Prisma.UserDefaultArgs - server?: boolean | Prisma.SupportTicket$serverArgs -}, ExtArgs["result"]["supportTicket"]> - -export type SupportTicketSelectScalar = { - id?: boolean - ticketNumber?: boolean - userId?: boolean - serverId?: boolean - subject?: boolean - category?: boolean - priority?: boolean - status?: boolean - assignedToId?: boolean - createdAt?: boolean - updatedAt?: boolean - resolvedAt?: boolean -} - -export type SupportTicketOmit = runtime.Types.Extensions.GetOmit<"id" | "ticketNumber" | "userId" | "serverId" | "subject" | "category" | "priority" | "status" | "assignedToId" | "createdAt" | "updatedAt" | "resolvedAt", ExtArgs["result"]["supportTicket"]> -export type SupportTicketInclude = { - user?: boolean | Prisma.UserDefaultArgs - server?: boolean | Prisma.SupportTicket$serverArgs - replies?: boolean | Prisma.SupportTicket$repliesArgs - _count?: boolean | Prisma.SupportTicketCountOutputTypeDefaultArgs -} -export type SupportTicketIncludeCreateManyAndReturn = { - user?: boolean | Prisma.UserDefaultArgs - server?: boolean | Prisma.SupportTicket$serverArgs -} -export type SupportTicketIncludeUpdateManyAndReturn = { - user?: boolean | Prisma.UserDefaultArgs - server?: boolean | Prisma.SupportTicket$serverArgs -} - -export type $SupportTicketPayload = { - name: "SupportTicket" - objects: { - user: Prisma.$UserPayload - server: Prisma.$ServerPayload | null - replies: Prisma.$SupportTicketReplyPayload[] - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - ticketNumber: string - userId: string - serverId: string | null - subject: string - category: string - priority: string - status: string - assignedToId: string | null - createdAt: Date - updatedAt: Date - resolvedAt: Date | null - }, ExtArgs["result"]["supportTicket"]> - composites: {} -} - -export type SupportTicketGetPayload = runtime.Types.Result.GetResult - -export type SupportTicketCountArgs = - Omit & { - select?: SupportTicketCountAggregateInputType | true - } - -export interface SupportTicketDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['SupportTicket'], meta: { name: 'SupportTicket' } } - /** - * Find zero or one SupportTicket that matches the filter. - * @param {SupportTicketFindUniqueArgs} args - Arguments to find a SupportTicket - * @example - * // Get one SupportTicket - * const supportTicket = await prisma.supportTicket.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one SupportTicket that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {SupportTicketFindUniqueOrThrowArgs} args - Arguments to find a SupportTicket - * @example - * // Get one SupportTicket - * const supportTicket = await prisma.supportTicket.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first SupportTicket that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketFindFirstArgs} args - Arguments to find a SupportTicket - * @example - * // Get one SupportTicket - * const supportTicket = await prisma.supportTicket.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first SupportTicket that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketFindFirstOrThrowArgs} args - Arguments to find a SupportTicket - * @example - * // Get one SupportTicket - * const supportTicket = await prisma.supportTicket.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more SupportTickets that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all SupportTickets - * const supportTickets = await prisma.supportTicket.findMany() - * - * // Get first 10 SupportTickets - * const supportTickets = await prisma.supportTicket.findMany({ take: 10 }) - * - * // Only select the `id` - * const supportTicketWithIdOnly = await prisma.supportTicket.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a SupportTicket. - * @param {SupportTicketCreateArgs} args - Arguments to create a SupportTicket. - * @example - * // Create one SupportTicket - * const SupportTicket = await prisma.supportTicket.create({ - * data: { - * // ... data to create a SupportTicket - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many SupportTickets. - * @param {SupportTicketCreateManyArgs} args - Arguments to create many SupportTickets. - * @example - * // Create many SupportTickets - * const supportTicket = await prisma.supportTicket.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many SupportTickets and returns the data saved in the database. - * @param {SupportTicketCreateManyAndReturnArgs} args - Arguments to create many SupportTickets. - * @example - * // Create many SupportTickets - * const supportTicket = await prisma.supportTicket.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many SupportTickets and only return the `id` - * const supportTicketWithIdOnly = await prisma.supportTicket.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a SupportTicket. - * @param {SupportTicketDeleteArgs} args - Arguments to delete one SupportTicket. - * @example - * // Delete one SupportTicket - * const SupportTicket = await prisma.supportTicket.delete({ - * where: { - * // ... filter to delete one SupportTicket - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one SupportTicket. - * @param {SupportTicketUpdateArgs} args - Arguments to update one SupportTicket. - * @example - * // Update one SupportTicket - * const supportTicket = await prisma.supportTicket.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more SupportTickets. - * @param {SupportTicketDeleteManyArgs} args - Arguments to filter SupportTickets to delete. - * @example - * // Delete a few SupportTickets - * const { count } = await prisma.supportTicket.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more SupportTickets. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many SupportTickets - * const supportTicket = await prisma.supportTicket.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more SupportTickets and returns the data updated in the database. - * @param {SupportTicketUpdateManyAndReturnArgs} args - Arguments to update many SupportTickets. - * @example - * // Update many SupportTickets - * const supportTicket = await prisma.supportTicket.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more SupportTickets and only return the `id` - * const supportTicketWithIdOnly = await prisma.supportTicket.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one SupportTicket. - * @param {SupportTicketUpsertArgs} args - Arguments to update or create a SupportTicket. - * @example - * // Update or create a SupportTicket - * const supportTicket = await prisma.supportTicket.upsert({ - * create: { - * // ... data to create a SupportTicket - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the SupportTicket we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of SupportTickets. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketCountArgs} args - Arguments to filter SupportTickets to count. - * @example - * // Count the number of SupportTickets - * const count = await prisma.supportTicket.count({ - * where: { - * // ... the filter for the SupportTickets we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a SupportTicket. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by SupportTicket. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends SupportTicketGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: SupportTicketGroupByArgs['orderBy'] } - : { orderBy?: SupportTicketGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetSupportTicketGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the SupportTicket model - */ -readonly fields: SupportTicketFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for SupportTicket. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__SupportTicketClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - user = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - server = {}>(args?: Prisma.Subset>): Prisma.Prisma__ServerClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - replies = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the SupportTicket model - */ -export interface SupportTicketFieldRefs { - readonly id: Prisma.FieldRef<"SupportTicket", 'String'> - readonly ticketNumber: Prisma.FieldRef<"SupportTicket", 'String'> - readonly userId: Prisma.FieldRef<"SupportTicket", 'String'> - readonly serverId: Prisma.FieldRef<"SupportTicket", 'String'> - readonly subject: Prisma.FieldRef<"SupportTicket", 'String'> - readonly category: Prisma.FieldRef<"SupportTicket", 'String'> - readonly priority: Prisma.FieldRef<"SupportTicket", 'String'> - readonly status: Prisma.FieldRef<"SupportTicket", 'String'> - readonly assignedToId: Prisma.FieldRef<"SupportTicket", 'String'> - readonly createdAt: Prisma.FieldRef<"SupportTicket", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"SupportTicket", 'DateTime'> - readonly resolvedAt: Prisma.FieldRef<"SupportTicket", 'DateTime'> -} - - -// Custom InputTypes -/** - * SupportTicket findUnique - */ -export type SupportTicketFindUniqueArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelect | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketInclude | null - /** - * Filter, which SupportTicket to fetch. - */ - where: Prisma.SupportTicketWhereUniqueInput -} - -/** - * SupportTicket findUniqueOrThrow - */ -export type SupportTicketFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelect | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketInclude | null - /** - * Filter, which SupportTicket to fetch. - */ - where: Prisma.SupportTicketWhereUniqueInput -} - -/** - * SupportTicket findFirst - */ -export type SupportTicketFindFirstArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelect | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketInclude | null - /** - * Filter, which SupportTicket to fetch. - */ - where?: Prisma.SupportTicketWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of SupportTickets to fetch. - */ - orderBy?: Prisma.SupportTicketOrderByWithRelationInput | Prisma.SupportTicketOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for SupportTickets. - */ - cursor?: Prisma.SupportTicketWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` SupportTickets from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` SupportTickets. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of SupportTickets. - */ - distinct?: Prisma.SupportTicketScalarFieldEnum | Prisma.SupportTicketScalarFieldEnum[] -} - -/** - * SupportTicket findFirstOrThrow - */ -export type SupportTicketFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelect | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketInclude | null - /** - * Filter, which SupportTicket to fetch. - */ - where?: Prisma.SupportTicketWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of SupportTickets to fetch. - */ - orderBy?: Prisma.SupportTicketOrderByWithRelationInput | Prisma.SupportTicketOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for SupportTickets. - */ - cursor?: Prisma.SupportTicketWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` SupportTickets from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` SupportTickets. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of SupportTickets. - */ - distinct?: Prisma.SupportTicketScalarFieldEnum | Prisma.SupportTicketScalarFieldEnum[] -} - -/** - * SupportTicket findMany - */ -export type SupportTicketFindManyArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelect | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketInclude | null - /** - * Filter, which SupportTickets to fetch. - */ - where?: Prisma.SupportTicketWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of SupportTickets to fetch. - */ - orderBy?: Prisma.SupportTicketOrderByWithRelationInput | Prisma.SupportTicketOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing SupportTickets. - */ - cursor?: Prisma.SupportTicketWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` SupportTickets from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` SupportTickets. - */ - skip?: number - distinct?: Prisma.SupportTicketScalarFieldEnum | Prisma.SupportTicketScalarFieldEnum[] -} - -/** - * SupportTicket create - */ -export type SupportTicketCreateArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelect | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketInclude | null - /** - * The data needed to create a SupportTicket. - */ - data: Prisma.XOR -} - -/** - * SupportTicket createMany - */ -export type SupportTicketCreateManyArgs = { - /** - * The data used to create many SupportTickets. - */ - data: Prisma.SupportTicketCreateManyInput | Prisma.SupportTicketCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * SupportTicket createManyAndReturn - */ -export type SupportTicketCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelectCreateManyAndReturn | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * The data used to create many SupportTickets. - */ - data: Prisma.SupportTicketCreateManyInput | Prisma.SupportTicketCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketIncludeCreateManyAndReturn | null -} - -/** - * SupportTicket update - */ -export type SupportTicketUpdateArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelect | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketInclude | null - /** - * The data needed to update a SupportTicket. - */ - data: Prisma.XOR - /** - * Choose, which SupportTicket to update. - */ - where: Prisma.SupportTicketWhereUniqueInput -} - -/** - * SupportTicket updateMany - */ -export type SupportTicketUpdateManyArgs = { - /** - * The data used to update SupportTickets. - */ - data: Prisma.XOR - /** - * Filter which SupportTickets to update - */ - where?: Prisma.SupportTicketWhereInput - /** - * Limit how many SupportTickets to update. - */ - limit?: number -} - -/** - * SupportTicket updateManyAndReturn - */ -export type SupportTicketUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * The data used to update SupportTickets. - */ - data: Prisma.XOR - /** - * Filter which SupportTickets to update - */ - where?: Prisma.SupportTicketWhereInput - /** - * Limit how many SupportTickets to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketIncludeUpdateManyAndReturn | null -} - -/** - * SupportTicket upsert - */ -export type SupportTicketUpsertArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelect | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketInclude | null - /** - * The filter to search for the SupportTicket to update in case it exists. - */ - where: Prisma.SupportTicketWhereUniqueInput - /** - * In case the SupportTicket found by the `where` argument doesn't exist, create a new SupportTicket with this data. - */ - create: Prisma.XOR - /** - * In case the SupportTicket was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * SupportTicket delete - */ -export type SupportTicketDeleteArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelect | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketInclude | null - /** - * Filter which SupportTicket to delete. - */ - where: Prisma.SupportTicketWhereUniqueInput -} - -/** - * SupportTicket deleteMany - */ -export type SupportTicketDeleteManyArgs = { - /** - * Filter which SupportTickets to delete - */ - where?: Prisma.SupportTicketWhereInput - /** - * Limit how many SupportTickets to delete. - */ - limit?: number -} - -/** - * SupportTicket.server - */ -export type SupportTicket$serverArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - where?: Prisma.ServerWhereInput -} - -/** - * SupportTicket.replies - */ -export type SupportTicket$repliesArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelect | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyInclude | null - where?: Prisma.SupportTicketReplyWhereInput - orderBy?: Prisma.SupportTicketReplyOrderByWithRelationInput | Prisma.SupportTicketReplyOrderByWithRelationInput[] - cursor?: Prisma.SupportTicketReplyWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.SupportTicketReplyScalarFieldEnum | Prisma.SupportTicketReplyScalarFieldEnum[] -} - -/** - * SupportTicket without action - */ -export type SupportTicketDefaultArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelect | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketInclude | null -} diff --git a/prisma/generated/prisma/models/SupportTicketReply.ts b/prisma/generated/prisma/models/SupportTicketReply.ts deleted file mode 100644 index ef18974..0000000 --- a/prisma/generated/prisma/models/SupportTicketReply.ts +++ /dev/null @@ -1,1577 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `SupportTicketReply` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model SupportTicketReply - * - */ -export type SupportTicketReplyModel = runtime.Types.Result.DefaultSelection - -export type AggregateSupportTicketReply = { - _count: SupportTicketReplyCountAggregateOutputType | null - _min: SupportTicketReplyMinAggregateOutputType | null - _max: SupportTicketReplyMaxAggregateOutputType | null -} - -export type SupportTicketReplyMinAggregateOutputType = { - id: string | null - ticketId: string | null - userId: string | null - message: string | null - isInternal: boolean | null - createdAt: Date | null - updatedAt: Date | null -} - -export type SupportTicketReplyMaxAggregateOutputType = { - id: string | null - ticketId: string | null - userId: string | null - message: string | null - isInternal: boolean | null - createdAt: Date | null - updatedAt: Date | null -} - -export type SupportTicketReplyCountAggregateOutputType = { - id: number - ticketId: number - userId: number - message: number - isInternal: number - attachments: number - createdAt: number - updatedAt: number - _all: number -} - - -export type SupportTicketReplyMinAggregateInputType = { - id?: true - ticketId?: true - userId?: true - message?: true - isInternal?: true - createdAt?: true - updatedAt?: true -} - -export type SupportTicketReplyMaxAggregateInputType = { - id?: true - ticketId?: true - userId?: true - message?: true - isInternal?: true - createdAt?: true - updatedAt?: true -} - -export type SupportTicketReplyCountAggregateInputType = { - id?: true - ticketId?: true - userId?: true - message?: true - isInternal?: true - attachments?: true - createdAt?: true - updatedAt?: true - _all?: true -} - -export type SupportTicketReplyAggregateArgs = { - /** - * Filter which SupportTicketReply to aggregate. - */ - where?: Prisma.SupportTicketReplyWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of SupportTicketReplies to fetch. - */ - orderBy?: Prisma.SupportTicketReplyOrderByWithRelationInput | Prisma.SupportTicketReplyOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.SupportTicketReplyWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` SupportTicketReplies from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` SupportTicketReplies. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned SupportTicketReplies - **/ - _count?: true | SupportTicketReplyCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: SupportTicketReplyMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: SupportTicketReplyMaxAggregateInputType -} - -export type GetSupportTicketReplyAggregateType = { - [P in keyof T & keyof AggregateSupportTicketReply]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type SupportTicketReplyGroupByArgs = { - where?: Prisma.SupportTicketReplyWhereInput - orderBy?: Prisma.SupportTicketReplyOrderByWithAggregationInput | Prisma.SupportTicketReplyOrderByWithAggregationInput[] - by: Prisma.SupportTicketReplyScalarFieldEnum[] | Prisma.SupportTicketReplyScalarFieldEnum - having?: Prisma.SupportTicketReplyScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: SupportTicketReplyCountAggregateInputType | true - _min?: SupportTicketReplyMinAggregateInputType - _max?: SupportTicketReplyMaxAggregateInputType -} - -export type SupportTicketReplyGroupByOutputType = { - id: string - ticketId: string - userId: string - message: string - isInternal: boolean - attachments: runtime.JsonValue | null - createdAt: Date - updatedAt: Date - _count: SupportTicketReplyCountAggregateOutputType | null - _min: SupportTicketReplyMinAggregateOutputType | null - _max: SupportTicketReplyMaxAggregateOutputType | null -} - -type GetSupportTicketReplyGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof SupportTicketReplyGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type SupportTicketReplyWhereInput = { - AND?: Prisma.SupportTicketReplyWhereInput | Prisma.SupportTicketReplyWhereInput[] - OR?: Prisma.SupportTicketReplyWhereInput[] - NOT?: Prisma.SupportTicketReplyWhereInput | Prisma.SupportTicketReplyWhereInput[] - id?: Prisma.StringFilter<"SupportTicketReply"> | string - ticketId?: Prisma.StringFilter<"SupportTicketReply"> | string - userId?: Prisma.StringFilter<"SupportTicketReply"> | string - message?: Prisma.StringFilter<"SupportTicketReply"> | string - isInternal?: Prisma.BoolFilter<"SupportTicketReply"> | boolean - attachments?: Prisma.JsonNullableFilter<"SupportTicketReply"> - createdAt?: Prisma.DateTimeFilter<"SupportTicketReply"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"SupportTicketReply"> | Date | string - ticket?: Prisma.XOR - user?: Prisma.XOR -} - -export type SupportTicketReplyOrderByWithRelationInput = { - id?: Prisma.SortOrder - ticketId?: Prisma.SortOrder - userId?: Prisma.SortOrder - message?: Prisma.SortOrder - isInternal?: Prisma.SortOrder - attachments?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - ticket?: Prisma.SupportTicketOrderByWithRelationInput - user?: Prisma.UserOrderByWithRelationInput -} - -export type SupportTicketReplyWhereUniqueInput = Prisma.AtLeast<{ - id?: string - AND?: Prisma.SupportTicketReplyWhereInput | Prisma.SupportTicketReplyWhereInput[] - OR?: Prisma.SupportTicketReplyWhereInput[] - NOT?: Prisma.SupportTicketReplyWhereInput | Prisma.SupportTicketReplyWhereInput[] - ticketId?: Prisma.StringFilter<"SupportTicketReply"> | string - userId?: Prisma.StringFilter<"SupportTicketReply"> | string - message?: Prisma.StringFilter<"SupportTicketReply"> | string - isInternal?: Prisma.BoolFilter<"SupportTicketReply"> | boolean - attachments?: Prisma.JsonNullableFilter<"SupportTicketReply"> - createdAt?: Prisma.DateTimeFilter<"SupportTicketReply"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"SupportTicketReply"> | Date | string - ticket?: Prisma.XOR - user?: Prisma.XOR -}, "id"> - -export type SupportTicketReplyOrderByWithAggregationInput = { - id?: Prisma.SortOrder - ticketId?: Prisma.SortOrder - userId?: Prisma.SortOrder - message?: Prisma.SortOrder - isInternal?: Prisma.SortOrder - attachments?: Prisma.SortOrderInput | Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - _count?: Prisma.SupportTicketReplyCountOrderByAggregateInput - _max?: Prisma.SupportTicketReplyMaxOrderByAggregateInput - _min?: Prisma.SupportTicketReplyMinOrderByAggregateInput -} - -export type SupportTicketReplyScalarWhereWithAggregatesInput = { - AND?: Prisma.SupportTicketReplyScalarWhereWithAggregatesInput | Prisma.SupportTicketReplyScalarWhereWithAggregatesInput[] - OR?: Prisma.SupportTicketReplyScalarWhereWithAggregatesInput[] - NOT?: Prisma.SupportTicketReplyScalarWhereWithAggregatesInput | Prisma.SupportTicketReplyScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"SupportTicketReply"> | string - ticketId?: Prisma.StringWithAggregatesFilter<"SupportTicketReply"> | string - userId?: Prisma.StringWithAggregatesFilter<"SupportTicketReply"> | string - message?: Prisma.StringWithAggregatesFilter<"SupportTicketReply"> | string - isInternal?: Prisma.BoolWithAggregatesFilter<"SupportTicketReply"> | boolean - attachments?: Prisma.JsonNullableWithAggregatesFilter<"SupportTicketReply"> - createdAt?: Prisma.DateTimeWithAggregatesFilter<"SupportTicketReply"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"SupportTicketReply"> | Date | string -} - -export type SupportTicketReplyCreateInput = { - id?: string - message: string - isInternal?: boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - ticket: Prisma.SupportTicketCreateNestedOneWithoutRepliesInput - user: Prisma.UserCreateNestedOneWithoutTicketRepliesInput -} - -export type SupportTicketReplyUncheckedCreateInput = { - id?: string - ticketId: string - userId: string - message: string - isInternal?: boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string -} - -export type SupportTicketReplyUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - message?: Prisma.StringFieldUpdateOperationsInput | string - isInternal?: Prisma.BoolFieldUpdateOperationsInput | boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - ticket?: Prisma.SupportTicketUpdateOneRequiredWithoutRepliesNestedInput - user?: Prisma.UserUpdateOneRequiredWithoutTicketRepliesNestedInput -} - -export type SupportTicketReplyUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketId?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - message?: Prisma.StringFieldUpdateOperationsInput | string - isInternal?: Prisma.BoolFieldUpdateOperationsInput | boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type SupportTicketReplyCreateManyInput = { - id?: string - ticketId: string - userId: string - message: string - isInternal?: boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string -} - -export type SupportTicketReplyUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - message?: Prisma.StringFieldUpdateOperationsInput | string - isInternal?: Prisma.BoolFieldUpdateOperationsInput | boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type SupportTicketReplyUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketId?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - message?: Prisma.StringFieldUpdateOperationsInput | string - isInternal?: Prisma.BoolFieldUpdateOperationsInput | boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type SupportTicketReplyListRelationFilter = { - every?: Prisma.SupportTicketReplyWhereInput - some?: Prisma.SupportTicketReplyWhereInput - none?: Prisma.SupportTicketReplyWhereInput -} - -export type SupportTicketReplyOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder -} - -export type SupportTicketReplyCountOrderByAggregateInput = { - id?: Prisma.SortOrder - ticketId?: Prisma.SortOrder - userId?: Prisma.SortOrder - message?: Prisma.SortOrder - isInternal?: Prisma.SortOrder - attachments?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type SupportTicketReplyMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - ticketId?: Prisma.SortOrder - userId?: Prisma.SortOrder - message?: Prisma.SortOrder - isInternal?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type SupportTicketReplyMinOrderByAggregateInput = { - id?: Prisma.SortOrder - ticketId?: Prisma.SortOrder - userId?: Prisma.SortOrder - message?: Prisma.SortOrder - isInternal?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder -} - -export type SupportTicketReplyCreateNestedManyWithoutUserInput = { - create?: Prisma.XOR | Prisma.SupportTicketReplyCreateWithoutUserInput[] | Prisma.SupportTicketReplyUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.SupportTicketReplyCreateOrConnectWithoutUserInput | Prisma.SupportTicketReplyCreateOrConnectWithoutUserInput[] - createMany?: Prisma.SupportTicketReplyCreateManyUserInputEnvelope - connect?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] -} - -export type SupportTicketReplyUncheckedCreateNestedManyWithoutUserInput = { - create?: Prisma.XOR | Prisma.SupportTicketReplyCreateWithoutUserInput[] | Prisma.SupportTicketReplyUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.SupportTicketReplyCreateOrConnectWithoutUserInput | Prisma.SupportTicketReplyCreateOrConnectWithoutUserInput[] - createMany?: Prisma.SupportTicketReplyCreateManyUserInputEnvelope - connect?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] -} - -export type SupportTicketReplyUpdateManyWithoutUserNestedInput = { - create?: Prisma.XOR | Prisma.SupportTicketReplyCreateWithoutUserInput[] | Prisma.SupportTicketReplyUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.SupportTicketReplyCreateOrConnectWithoutUserInput | Prisma.SupportTicketReplyCreateOrConnectWithoutUserInput[] - upsert?: Prisma.SupportTicketReplyUpsertWithWhereUniqueWithoutUserInput | Prisma.SupportTicketReplyUpsertWithWhereUniqueWithoutUserInput[] - createMany?: Prisma.SupportTicketReplyCreateManyUserInputEnvelope - set?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - disconnect?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - delete?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - connect?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - update?: Prisma.SupportTicketReplyUpdateWithWhereUniqueWithoutUserInput | Prisma.SupportTicketReplyUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: Prisma.SupportTicketReplyUpdateManyWithWhereWithoutUserInput | Prisma.SupportTicketReplyUpdateManyWithWhereWithoutUserInput[] - deleteMany?: Prisma.SupportTicketReplyScalarWhereInput | Prisma.SupportTicketReplyScalarWhereInput[] -} - -export type SupportTicketReplyUncheckedUpdateManyWithoutUserNestedInput = { - create?: Prisma.XOR | Prisma.SupportTicketReplyCreateWithoutUserInput[] | Prisma.SupportTicketReplyUncheckedCreateWithoutUserInput[] - connectOrCreate?: Prisma.SupportTicketReplyCreateOrConnectWithoutUserInput | Prisma.SupportTicketReplyCreateOrConnectWithoutUserInput[] - upsert?: Prisma.SupportTicketReplyUpsertWithWhereUniqueWithoutUserInput | Prisma.SupportTicketReplyUpsertWithWhereUniqueWithoutUserInput[] - createMany?: Prisma.SupportTicketReplyCreateManyUserInputEnvelope - set?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - disconnect?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - delete?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - connect?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - update?: Prisma.SupportTicketReplyUpdateWithWhereUniqueWithoutUserInput | Prisma.SupportTicketReplyUpdateWithWhereUniqueWithoutUserInput[] - updateMany?: Prisma.SupportTicketReplyUpdateManyWithWhereWithoutUserInput | Prisma.SupportTicketReplyUpdateManyWithWhereWithoutUserInput[] - deleteMany?: Prisma.SupportTicketReplyScalarWhereInput | Prisma.SupportTicketReplyScalarWhereInput[] -} - -export type SupportTicketReplyCreateNestedManyWithoutTicketInput = { - create?: Prisma.XOR | Prisma.SupportTicketReplyCreateWithoutTicketInput[] | Prisma.SupportTicketReplyUncheckedCreateWithoutTicketInput[] - connectOrCreate?: Prisma.SupportTicketReplyCreateOrConnectWithoutTicketInput | Prisma.SupportTicketReplyCreateOrConnectWithoutTicketInput[] - createMany?: Prisma.SupportTicketReplyCreateManyTicketInputEnvelope - connect?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] -} - -export type SupportTicketReplyUncheckedCreateNestedManyWithoutTicketInput = { - create?: Prisma.XOR | Prisma.SupportTicketReplyCreateWithoutTicketInput[] | Prisma.SupportTicketReplyUncheckedCreateWithoutTicketInput[] - connectOrCreate?: Prisma.SupportTicketReplyCreateOrConnectWithoutTicketInput | Prisma.SupportTicketReplyCreateOrConnectWithoutTicketInput[] - createMany?: Prisma.SupportTicketReplyCreateManyTicketInputEnvelope - connect?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] -} - -export type SupportTicketReplyUpdateManyWithoutTicketNestedInput = { - create?: Prisma.XOR | Prisma.SupportTicketReplyCreateWithoutTicketInput[] | Prisma.SupportTicketReplyUncheckedCreateWithoutTicketInput[] - connectOrCreate?: Prisma.SupportTicketReplyCreateOrConnectWithoutTicketInput | Prisma.SupportTicketReplyCreateOrConnectWithoutTicketInput[] - upsert?: Prisma.SupportTicketReplyUpsertWithWhereUniqueWithoutTicketInput | Prisma.SupportTicketReplyUpsertWithWhereUniqueWithoutTicketInput[] - createMany?: Prisma.SupportTicketReplyCreateManyTicketInputEnvelope - set?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - disconnect?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - delete?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - connect?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - update?: Prisma.SupportTicketReplyUpdateWithWhereUniqueWithoutTicketInput | Prisma.SupportTicketReplyUpdateWithWhereUniqueWithoutTicketInput[] - updateMany?: Prisma.SupportTicketReplyUpdateManyWithWhereWithoutTicketInput | Prisma.SupportTicketReplyUpdateManyWithWhereWithoutTicketInput[] - deleteMany?: Prisma.SupportTicketReplyScalarWhereInput | Prisma.SupportTicketReplyScalarWhereInput[] -} - -export type SupportTicketReplyUncheckedUpdateManyWithoutTicketNestedInput = { - create?: Prisma.XOR | Prisma.SupportTicketReplyCreateWithoutTicketInput[] | Prisma.SupportTicketReplyUncheckedCreateWithoutTicketInput[] - connectOrCreate?: Prisma.SupportTicketReplyCreateOrConnectWithoutTicketInput | Prisma.SupportTicketReplyCreateOrConnectWithoutTicketInput[] - upsert?: Prisma.SupportTicketReplyUpsertWithWhereUniqueWithoutTicketInput | Prisma.SupportTicketReplyUpsertWithWhereUniqueWithoutTicketInput[] - createMany?: Prisma.SupportTicketReplyCreateManyTicketInputEnvelope - set?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - disconnect?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - delete?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - connect?: Prisma.SupportTicketReplyWhereUniqueInput | Prisma.SupportTicketReplyWhereUniqueInput[] - update?: Prisma.SupportTicketReplyUpdateWithWhereUniqueWithoutTicketInput | Prisma.SupportTicketReplyUpdateWithWhereUniqueWithoutTicketInput[] - updateMany?: Prisma.SupportTicketReplyUpdateManyWithWhereWithoutTicketInput | Prisma.SupportTicketReplyUpdateManyWithWhereWithoutTicketInput[] - deleteMany?: Prisma.SupportTicketReplyScalarWhereInput | Prisma.SupportTicketReplyScalarWhereInput[] -} - -export type SupportTicketReplyCreateWithoutUserInput = { - id?: string - message: string - isInternal?: boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - ticket: Prisma.SupportTicketCreateNestedOneWithoutRepliesInput -} - -export type SupportTicketReplyUncheckedCreateWithoutUserInput = { - id?: string - ticketId: string - message: string - isInternal?: boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string -} - -export type SupportTicketReplyCreateOrConnectWithoutUserInput = { - where: Prisma.SupportTicketReplyWhereUniqueInput - create: Prisma.XOR -} - -export type SupportTicketReplyCreateManyUserInputEnvelope = { - data: Prisma.SupportTicketReplyCreateManyUserInput | Prisma.SupportTicketReplyCreateManyUserInput[] - skipDuplicates?: boolean -} - -export type SupportTicketReplyUpsertWithWhereUniqueWithoutUserInput = { - where: Prisma.SupportTicketReplyWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type SupportTicketReplyUpdateWithWhereUniqueWithoutUserInput = { - where: Prisma.SupportTicketReplyWhereUniqueInput - data: Prisma.XOR -} - -export type SupportTicketReplyUpdateManyWithWhereWithoutUserInput = { - where: Prisma.SupportTicketReplyScalarWhereInput - data: Prisma.XOR -} - -export type SupportTicketReplyScalarWhereInput = { - AND?: Prisma.SupportTicketReplyScalarWhereInput | Prisma.SupportTicketReplyScalarWhereInput[] - OR?: Prisma.SupportTicketReplyScalarWhereInput[] - NOT?: Prisma.SupportTicketReplyScalarWhereInput | Prisma.SupportTicketReplyScalarWhereInput[] - id?: Prisma.StringFilter<"SupportTicketReply"> | string - ticketId?: Prisma.StringFilter<"SupportTicketReply"> | string - userId?: Prisma.StringFilter<"SupportTicketReply"> | string - message?: Prisma.StringFilter<"SupportTicketReply"> | string - isInternal?: Prisma.BoolFilter<"SupportTicketReply"> | boolean - attachments?: Prisma.JsonNullableFilter<"SupportTicketReply"> - createdAt?: Prisma.DateTimeFilter<"SupportTicketReply"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"SupportTicketReply"> | Date | string -} - -export type SupportTicketReplyCreateWithoutTicketInput = { - id?: string - message: string - isInternal?: boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string - user: Prisma.UserCreateNestedOneWithoutTicketRepliesInput -} - -export type SupportTicketReplyUncheckedCreateWithoutTicketInput = { - id?: string - userId: string - message: string - isInternal?: boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string -} - -export type SupportTicketReplyCreateOrConnectWithoutTicketInput = { - where: Prisma.SupportTicketReplyWhereUniqueInput - create: Prisma.XOR -} - -export type SupportTicketReplyCreateManyTicketInputEnvelope = { - data: Prisma.SupportTicketReplyCreateManyTicketInput | Prisma.SupportTicketReplyCreateManyTicketInput[] - skipDuplicates?: boolean -} - -export type SupportTicketReplyUpsertWithWhereUniqueWithoutTicketInput = { - where: Prisma.SupportTicketReplyWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR -} - -export type SupportTicketReplyUpdateWithWhereUniqueWithoutTicketInput = { - where: Prisma.SupportTicketReplyWhereUniqueInput - data: Prisma.XOR -} - -export type SupportTicketReplyUpdateManyWithWhereWithoutTicketInput = { - where: Prisma.SupportTicketReplyScalarWhereInput - data: Prisma.XOR -} - -export type SupportTicketReplyCreateManyUserInput = { - id?: string - ticketId: string - message: string - isInternal?: boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string -} - -export type SupportTicketReplyUpdateWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - message?: Prisma.StringFieldUpdateOperationsInput | string - isInternal?: Prisma.BoolFieldUpdateOperationsInput | boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - ticket?: Prisma.SupportTicketUpdateOneRequiredWithoutRepliesNestedInput -} - -export type SupportTicketReplyUncheckedUpdateWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketId?: Prisma.StringFieldUpdateOperationsInput | string - message?: Prisma.StringFieldUpdateOperationsInput | string - isInternal?: Prisma.BoolFieldUpdateOperationsInput | boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type SupportTicketReplyUncheckedUpdateManyWithoutUserInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - ticketId?: Prisma.StringFieldUpdateOperationsInput | string - message?: Prisma.StringFieldUpdateOperationsInput | string - isInternal?: Prisma.BoolFieldUpdateOperationsInput | boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type SupportTicketReplyCreateManyTicketInput = { - id?: string - userId: string - message: string - isInternal?: boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Date | string - updatedAt?: Date | string -} - -export type SupportTicketReplyUpdateWithoutTicketInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - message?: Prisma.StringFieldUpdateOperationsInput | string - isInternal?: Prisma.BoolFieldUpdateOperationsInput | boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - user?: Prisma.UserUpdateOneRequiredWithoutTicketRepliesNestedInput -} - -export type SupportTicketReplyUncheckedUpdateWithoutTicketInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - message?: Prisma.StringFieldUpdateOperationsInput | string - isInternal?: Prisma.BoolFieldUpdateOperationsInput | boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - -export type SupportTicketReplyUncheckedUpdateManyWithoutTicketInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - userId?: Prisma.StringFieldUpdateOperationsInput | string - message?: Prisma.StringFieldUpdateOperationsInput | string - isInternal?: Prisma.BoolFieldUpdateOperationsInput | boolean - attachments?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string -} - - - -export type SupportTicketReplySelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - ticketId?: boolean - userId?: boolean - message?: boolean - isInternal?: boolean - attachments?: boolean - createdAt?: boolean - updatedAt?: boolean - ticket?: boolean | Prisma.SupportTicketDefaultArgs - user?: boolean | Prisma.UserDefaultArgs -}, ExtArgs["result"]["supportTicketReply"]> - -export type SupportTicketReplySelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - ticketId?: boolean - userId?: boolean - message?: boolean - isInternal?: boolean - attachments?: boolean - createdAt?: boolean - updatedAt?: boolean - ticket?: boolean | Prisma.SupportTicketDefaultArgs - user?: boolean | Prisma.UserDefaultArgs -}, ExtArgs["result"]["supportTicketReply"]> - -export type SupportTicketReplySelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - ticketId?: boolean - userId?: boolean - message?: boolean - isInternal?: boolean - attachments?: boolean - createdAt?: boolean - updatedAt?: boolean - ticket?: boolean | Prisma.SupportTicketDefaultArgs - user?: boolean | Prisma.UserDefaultArgs -}, ExtArgs["result"]["supportTicketReply"]> - -export type SupportTicketReplySelectScalar = { - id?: boolean - ticketId?: boolean - userId?: boolean - message?: boolean - isInternal?: boolean - attachments?: boolean - createdAt?: boolean - updatedAt?: boolean -} - -export type SupportTicketReplyOmit = runtime.Types.Extensions.GetOmit<"id" | "ticketId" | "userId" | "message" | "isInternal" | "attachments" | "createdAt" | "updatedAt", ExtArgs["result"]["supportTicketReply"]> -export type SupportTicketReplyInclude = { - ticket?: boolean | Prisma.SupportTicketDefaultArgs - user?: boolean | Prisma.UserDefaultArgs -} -export type SupportTicketReplyIncludeCreateManyAndReturn = { - ticket?: boolean | Prisma.SupportTicketDefaultArgs - user?: boolean | Prisma.UserDefaultArgs -} -export type SupportTicketReplyIncludeUpdateManyAndReturn = { - ticket?: boolean | Prisma.SupportTicketDefaultArgs - user?: boolean | Prisma.UserDefaultArgs -} - -export type $SupportTicketReplyPayload = { - name: "SupportTicketReply" - objects: { - ticket: Prisma.$SupportTicketPayload - user: Prisma.$UserPayload - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - ticketId: string - userId: string - message: string - isInternal: boolean - attachments: runtime.JsonValue | null - createdAt: Date - updatedAt: Date - }, ExtArgs["result"]["supportTicketReply"]> - composites: {} -} - -export type SupportTicketReplyGetPayload = runtime.Types.Result.GetResult - -export type SupportTicketReplyCountArgs = - Omit & { - select?: SupportTicketReplyCountAggregateInputType | true - } - -export interface SupportTicketReplyDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['SupportTicketReply'], meta: { name: 'SupportTicketReply' } } - /** - * Find zero or one SupportTicketReply that matches the filter. - * @param {SupportTicketReplyFindUniqueArgs} args - Arguments to find a SupportTicketReply - * @example - * // Get one SupportTicketReply - * const supportTicketReply = await prisma.supportTicketReply.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketReplyClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one SupportTicketReply that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {SupportTicketReplyFindUniqueOrThrowArgs} args - Arguments to find a SupportTicketReply - * @example - * // Get one SupportTicketReply - * const supportTicketReply = await prisma.supportTicketReply.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketReplyClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first SupportTicketReply that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketReplyFindFirstArgs} args - Arguments to find a SupportTicketReply - * @example - * // Get one SupportTicketReply - * const supportTicketReply = await prisma.supportTicketReply.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketReplyClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first SupportTicketReply that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketReplyFindFirstOrThrowArgs} args - Arguments to find a SupportTicketReply - * @example - * // Get one SupportTicketReply - * const supportTicketReply = await prisma.supportTicketReply.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketReplyClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more SupportTicketReplies that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketReplyFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all SupportTicketReplies - * const supportTicketReplies = await prisma.supportTicketReply.findMany() - * - * // Get first 10 SupportTicketReplies - * const supportTicketReplies = await prisma.supportTicketReply.findMany({ take: 10 }) - * - * // Only select the `id` - * const supportTicketReplyWithIdOnly = await prisma.supportTicketReply.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a SupportTicketReply. - * @param {SupportTicketReplyCreateArgs} args - Arguments to create a SupportTicketReply. - * @example - * // Create one SupportTicketReply - * const SupportTicketReply = await prisma.supportTicketReply.create({ - * data: { - * // ... data to create a SupportTicketReply - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketReplyClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many SupportTicketReplies. - * @param {SupportTicketReplyCreateManyArgs} args - Arguments to create many SupportTicketReplies. - * @example - * // Create many SupportTicketReplies - * const supportTicketReply = await prisma.supportTicketReply.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many SupportTicketReplies and returns the data saved in the database. - * @param {SupportTicketReplyCreateManyAndReturnArgs} args - Arguments to create many SupportTicketReplies. - * @example - * // Create many SupportTicketReplies - * const supportTicketReply = await prisma.supportTicketReply.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many SupportTicketReplies and only return the `id` - * const supportTicketReplyWithIdOnly = await prisma.supportTicketReply.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a SupportTicketReply. - * @param {SupportTicketReplyDeleteArgs} args - Arguments to delete one SupportTicketReply. - * @example - * // Delete one SupportTicketReply - * const SupportTicketReply = await prisma.supportTicketReply.delete({ - * where: { - * // ... filter to delete one SupportTicketReply - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketReplyClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one SupportTicketReply. - * @param {SupportTicketReplyUpdateArgs} args - Arguments to update one SupportTicketReply. - * @example - * // Update one SupportTicketReply - * const supportTicketReply = await prisma.supportTicketReply.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketReplyClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more SupportTicketReplies. - * @param {SupportTicketReplyDeleteManyArgs} args - Arguments to filter SupportTicketReplies to delete. - * @example - * // Delete a few SupportTicketReplies - * const { count } = await prisma.supportTicketReply.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more SupportTicketReplies. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketReplyUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many SupportTicketReplies - * const supportTicketReply = await prisma.supportTicketReply.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more SupportTicketReplies and returns the data updated in the database. - * @param {SupportTicketReplyUpdateManyAndReturnArgs} args - Arguments to update many SupportTicketReplies. - * @example - * // Update many SupportTicketReplies - * const supportTicketReply = await prisma.supportTicketReply.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more SupportTicketReplies and only return the `id` - * const supportTicketReplyWithIdOnly = await prisma.supportTicketReply.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one SupportTicketReply. - * @param {SupportTicketReplyUpsertArgs} args - Arguments to update or create a SupportTicketReply. - * @example - * // Update or create a SupportTicketReply - * const supportTicketReply = await prisma.supportTicketReply.upsert({ - * create: { - * // ... data to create a SupportTicketReply - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the SupportTicketReply we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__SupportTicketReplyClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of SupportTicketReplies. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketReplyCountArgs} args - Arguments to filter SupportTicketReplies to count. - * @example - * // Count the number of SupportTicketReplies - * const count = await prisma.supportTicketReply.count({ - * where: { - * // ... the filter for the SupportTicketReplies we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a SupportTicketReply. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketReplyAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by SupportTicketReply. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SupportTicketReplyGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends SupportTicketReplyGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: SupportTicketReplyGroupByArgs['orderBy'] } - : { orderBy?: SupportTicketReplyGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetSupportTicketReplyGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the SupportTicketReply model - */ -readonly fields: SupportTicketReplyFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for SupportTicketReply. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__SupportTicketReplyClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - ticket = {}>(args?: Prisma.Subset>): Prisma.Prisma__SupportTicketClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - user = {}>(args?: Prisma.Subset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the SupportTicketReply model - */ -export interface SupportTicketReplyFieldRefs { - readonly id: Prisma.FieldRef<"SupportTicketReply", 'String'> - readonly ticketId: Prisma.FieldRef<"SupportTicketReply", 'String'> - readonly userId: Prisma.FieldRef<"SupportTicketReply", 'String'> - readonly message: Prisma.FieldRef<"SupportTicketReply", 'String'> - readonly isInternal: Prisma.FieldRef<"SupportTicketReply", 'Boolean'> - readonly attachments: Prisma.FieldRef<"SupportTicketReply", 'Json'> - readonly createdAt: Prisma.FieldRef<"SupportTicketReply", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"SupportTicketReply", 'DateTime'> -} - - -// Custom InputTypes -/** - * SupportTicketReply findUnique - */ -export type SupportTicketReplyFindUniqueArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelect | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyInclude | null - /** - * Filter, which SupportTicketReply to fetch. - */ - where: Prisma.SupportTicketReplyWhereUniqueInput -} - -/** - * SupportTicketReply findUniqueOrThrow - */ -export type SupportTicketReplyFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelect | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyInclude | null - /** - * Filter, which SupportTicketReply to fetch. - */ - where: Prisma.SupportTicketReplyWhereUniqueInput -} - -/** - * SupportTicketReply findFirst - */ -export type SupportTicketReplyFindFirstArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelect | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyInclude | null - /** - * Filter, which SupportTicketReply to fetch. - */ - where?: Prisma.SupportTicketReplyWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of SupportTicketReplies to fetch. - */ - orderBy?: Prisma.SupportTicketReplyOrderByWithRelationInput | Prisma.SupportTicketReplyOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for SupportTicketReplies. - */ - cursor?: Prisma.SupportTicketReplyWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` SupportTicketReplies from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` SupportTicketReplies. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of SupportTicketReplies. - */ - distinct?: Prisma.SupportTicketReplyScalarFieldEnum | Prisma.SupportTicketReplyScalarFieldEnum[] -} - -/** - * SupportTicketReply findFirstOrThrow - */ -export type SupportTicketReplyFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelect | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyInclude | null - /** - * Filter, which SupportTicketReply to fetch. - */ - where?: Prisma.SupportTicketReplyWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of SupportTicketReplies to fetch. - */ - orderBy?: Prisma.SupportTicketReplyOrderByWithRelationInput | Prisma.SupportTicketReplyOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for SupportTicketReplies. - */ - cursor?: Prisma.SupportTicketReplyWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` SupportTicketReplies from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` SupportTicketReplies. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of SupportTicketReplies. - */ - distinct?: Prisma.SupportTicketReplyScalarFieldEnum | Prisma.SupportTicketReplyScalarFieldEnum[] -} - -/** - * SupportTicketReply findMany - */ -export type SupportTicketReplyFindManyArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelect | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyInclude | null - /** - * Filter, which SupportTicketReplies to fetch. - */ - where?: Prisma.SupportTicketReplyWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of SupportTicketReplies to fetch. - */ - orderBy?: Prisma.SupportTicketReplyOrderByWithRelationInput | Prisma.SupportTicketReplyOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing SupportTicketReplies. - */ - cursor?: Prisma.SupportTicketReplyWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` SupportTicketReplies from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` SupportTicketReplies. - */ - skip?: number - distinct?: Prisma.SupportTicketReplyScalarFieldEnum | Prisma.SupportTicketReplyScalarFieldEnum[] -} - -/** - * SupportTicketReply create - */ -export type SupportTicketReplyCreateArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelect | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyInclude | null - /** - * The data needed to create a SupportTicketReply. - */ - data: Prisma.XOR -} - -/** - * SupportTicketReply createMany - */ -export type SupportTicketReplyCreateManyArgs = { - /** - * The data used to create many SupportTicketReplies. - */ - data: Prisma.SupportTicketReplyCreateManyInput | Prisma.SupportTicketReplyCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * SupportTicketReply createManyAndReturn - */ -export type SupportTicketReplyCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelectCreateManyAndReturn | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * The data used to create many SupportTicketReplies. - */ - data: Prisma.SupportTicketReplyCreateManyInput | Prisma.SupportTicketReplyCreateManyInput[] - skipDuplicates?: boolean - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyIncludeCreateManyAndReturn | null -} - -/** - * SupportTicketReply update - */ -export type SupportTicketReplyUpdateArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelect | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyInclude | null - /** - * The data needed to update a SupportTicketReply. - */ - data: Prisma.XOR - /** - * Choose, which SupportTicketReply to update. - */ - where: Prisma.SupportTicketReplyWhereUniqueInput -} - -/** - * SupportTicketReply updateMany - */ -export type SupportTicketReplyUpdateManyArgs = { - /** - * The data used to update SupportTicketReplies. - */ - data: Prisma.XOR - /** - * Filter which SupportTicketReplies to update - */ - where?: Prisma.SupportTicketReplyWhereInput - /** - * Limit how many SupportTicketReplies to update. - */ - limit?: number -} - -/** - * SupportTicketReply updateManyAndReturn - */ -export type SupportTicketReplyUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelectUpdateManyAndReturn | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * The data used to update SupportTicketReplies. - */ - data: Prisma.XOR - /** - * Filter which SupportTicketReplies to update - */ - where?: Prisma.SupportTicketReplyWhereInput - /** - * Limit how many SupportTicketReplies to update. - */ - limit?: number - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyIncludeUpdateManyAndReturn | null -} - -/** - * SupportTicketReply upsert - */ -export type SupportTicketReplyUpsertArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelect | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyInclude | null - /** - * The filter to search for the SupportTicketReply to update in case it exists. - */ - where: Prisma.SupportTicketReplyWhereUniqueInput - /** - * In case the SupportTicketReply found by the `where` argument doesn't exist, create a new SupportTicketReply with this data. - */ - create: Prisma.XOR - /** - * In case the SupportTicketReply was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * SupportTicketReply delete - */ -export type SupportTicketReplyDeleteArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelect | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyInclude | null - /** - * Filter which SupportTicketReply to delete. - */ - where: Prisma.SupportTicketReplyWhereUniqueInput -} - -/** - * SupportTicketReply deleteMany - */ -export type SupportTicketReplyDeleteManyArgs = { - /** - * Filter which SupportTicketReplies to delete - */ - where?: Prisma.SupportTicketReplyWhereInput - /** - * Limit how many SupportTicketReplies to delete. - */ - limit?: number -} - -/** - * SupportTicketReply without action - */ -export type SupportTicketReplyDefaultArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelect | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyInclude | null -} diff --git a/prisma/generated/prisma/models/SyncLog.ts b/prisma/generated/prisma/models/SyncLog.ts deleted file mode 100644 index 73cef14..0000000 --- a/prisma/generated/prisma/models/SyncLog.ts +++ /dev/null @@ -1,1338 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `SyncLog` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model SyncLog - * - */ -export type SyncLogModel = runtime.Types.Result.DefaultSelection - -export type AggregateSyncLog = { - _count: SyncLogCountAggregateOutputType | null - _avg: SyncLogAvgAggregateOutputType | null - _sum: SyncLogSumAggregateOutputType | null - _min: SyncLogMinAggregateOutputType | null - _max: SyncLogMaxAggregateOutputType | null -} - -export type SyncLogAvgAggregateOutputType = { - itemsTotal: number | null - itemsSynced: number | null - itemsFailed: number | null -} - -export type SyncLogSumAggregateOutputType = { - itemsTotal: number | null - itemsSynced: number | null - itemsFailed: number | null -} - -export type SyncLogMinAggregateOutputType = { - id: string | null - type: string | null - status: $Enums.SyncStatus | null - itemsTotal: number | null - itemsSynced: number | null - itemsFailed: number | null - error: string | null - startedAt: Date | null - completedAt: Date | null -} - -export type SyncLogMaxAggregateOutputType = { - id: string | null - type: string | null - status: $Enums.SyncStatus | null - itemsTotal: number | null - itemsSynced: number | null - itemsFailed: number | null - error: string | null - startedAt: Date | null - completedAt: Date | null -} - -export type SyncLogCountAggregateOutputType = { - id: number - type: number - status: number - itemsTotal: number - itemsSynced: number - itemsFailed: number - error: number - metadata: number - startedAt: number - completedAt: number - _all: number -} - - -export type SyncLogAvgAggregateInputType = { - itemsTotal?: true - itemsSynced?: true - itemsFailed?: true -} - -export type SyncLogSumAggregateInputType = { - itemsTotal?: true - itemsSynced?: true - itemsFailed?: true -} - -export type SyncLogMinAggregateInputType = { - id?: true - type?: true - status?: true - itemsTotal?: true - itemsSynced?: true - itemsFailed?: true - error?: true - startedAt?: true - completedAt?: true -} - -export type SyncLogMaxAggregateInputType = { - id?: true - type?: true - status?: true - itemsTotal?: true - itemsSynced?: true - itemsFailed?: true - error?: true - startedAt?: true - completedAt?: true -} - -export type SyncLogCountAggregateInputType = { - id?: true - type?: true - status?: true - itemsTotal?: true - itemsSynced?: true - itemsFailed?: true - error?: true - metadata?: true - startedAt?: true - completedAt?: true - _all?: true -} - -export type SyncLogAggregateArgs = { - /** - * Filter which SyncLog to aggregate. - */ - where?: Prisma.SyncLogWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of SyncLogs to fetch. - */ - orderBy?: Prisma.SyncLogOrderByWithRelationInput | Prisma.SyncLogOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.SyncLogWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` SyncLogs from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` SyncLogs. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned SyncLogs - **/ - _count?: true | SyncLogCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: SyncLogAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: SyncLogSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: SyncLogMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: SyncLogMaxAggregateInputType -} - -export type GetSyncLogAggregateType = { - [P in keyof T & keyof AggregateSyncLog]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type SyncLogGroupByArgs = { - where?: Prisma.SyncLogWhereInput - orderBy?: Prisma.SyncLogOrderByWithAggregationInput | Prisma.SyncLogOrderByWithAggregationInput[] - by: Prisma.SyncLogScalarFieldEnum[] | Prisma.SyncLogScalarFieldEnum - having?: Prisma.SyncLogScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: SyncLogCountAggregateInputType | true - _avg?: SyncLogAvgAggregateInputType - _sum?: SyncLogSumAggregateInputType - _min?: SyncLogMinAggregateInputType - _max?: SyncLogMaxAggregateInputType -} - -export type SyncLogGroupByOutputType = { - id: string - type: string - status: $Enums.SyncStatus - itemsTotal: number - itemsSynced: number - itemsFailed: number - error: string | null - metadata: runtime.JsonValue | null - startedAt: Date - completedAt: Date | null - _count: SyncLogCountAggregateOutputType | null - _avg: SyncLogAvgAggregateOutputType | null - _sum: SyncLogSumAggregateOutputType | null - _min: SyncLogMinAggregateOutputType | null - _max: SyncLogMaxAggregateOutputType | null -} - -type GetSyncLogGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof SyncLogGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type SyncLogWhereInput = { - AND?: Prisma.SyncLogWhereInput | Prisma.SyncLogWhereInput[] - OR?: Prisma.SyncLogWhereInput[] - NOT?: Prisma.SyncLogWhereInput | Prisma.SyncLogWhereInput[] - id?: Prisma.StringFilter<"SyncLog"> | string - type?: Prisma.StringFilter<"SyncLog"> | string - status?: Prisma.EnumSyncStatusFilter<"SyncLog"> | $Enums.SyncStatus - itemsTotal?: Prisma.IntFilter<"SyncLog"> | number - itemsSynced?: Prisma.IntFilter<"SyncLog"> | number - itemsFailed?: Prisma.IntFilter<"SyncLog"> | number - error?: Prisma.StringNullableFilter<"SyncLog"> | string | null - metadata?: Prisma.JsonNullableFilter<"SyncLog"> - startedAt?: Prisma.DateTimeFilter<"SyncLog"> | Date | string - completedAt?: Prisma.DateTimeNullableFilter<"SyncLog"> | Date | string | null -} - -export type SyncLogOrderByWithRelationInput = { - id?: Prisma.SortOrder - type?: Prisma.SortOrder - status?: Prisma.SortOrder - itemsTotal?: Prisma.SortOrder - itemsSynced?: Prisma.SortOrder - itemsFailed?: Prisma.SortOrder - error?: Prisma.SortOrderInput | Prisma.SortOrder - metadata?: Prisma.SortOrderInput | Prisma.SortOrder - startedAt?: Prisma.SortOrder - completedAt?: Prisma.SortOrderInput | Prisma.SortOrder -} - -export type SyncLogWhereUniqueInput = Prisma.AtLeast<{ - id?: string - AND?: Prisma.SyncLogWhereInput | Prisma.SyncLogWhereInput[] - OR?: Prisma.SyncLogWhereInput[] - NOT?: Prisma.SyncLogWhereInput | Prisma.SyncLogWhereInput[] - type?: Prisma.StringFilter<"SyncLog"> | string - status?: Prisma.EnumSyncStatusFilter<"SyncLog"> | $Enums.SyncStatus - itemsTotal?: Prisma.IntFilter<"SyncLog"> | number - itemsSynced?: Prisma.IntFilter<"SyncLog"> | number - itemsFailed?: Prisma.IntFilter<"SyncLog"> | number - error?: Prisma.StringNullableFilter<"SyncLog"> | string | null - metadata?: Prisma.JsonNullableFilter<"SyncLog"> - startedAt?: Prisma.DateTimeFilter<"SyncLog"> | Date | string - completedAt?: Prisma.DateTimeNullableFilter<"SyncLog"> | Date | string | null -}, "id"> - -export type SyncLogOrderByWithAggregationInput = { - id?: Prisma.SortOrder - type?: Prisma.SortOrder - status?: Prisma.SortOrder - itemsTotal?: Prisma.SortOrder - itemsSynced?: Prisma.SortOrder - itemsFailed?: Prisma.SortOrder - error?: Prisma.SortOrderInput | Prisma.SortOrder - metadata?: Prisma.SortOrderInput | Prisma.SortOrder - startedAt?: Prisma.SortOrder - completedAt?: Prisma.SortOrderInput | Prisma.SortOrder - _count?: Prisma.SyncLogCountOrderByAggregateInput - _avg?: Prisma.SyncLogAvgOrderByAggregateInput - _max?: Prisma.SyncLogMaxOrderByAggregateInput - _min?: Prisma.SyncLogMinOrderByAggregateInput - _sum?: Prisma.SyncLogSumOrderByAggregateInput -} - -export type SyncLogScalarWhereWithAggregatesInput = { - AND?: Prisma.SyncLogScalarWhereWithAggregatesInput | Prisma.SyncLogScalarWhereWithAggregatesInput[] - OR?: Prisma.SyncLogScalarWhereWithAggregatesInput[] - NOT?: Prisma.SyncLogScalarWhereWithAggregatesInput | Prisma.SyncLogScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"SyncLog"> | string - type?: Prisma.StringWithAggregatesFilter<"SyncLog"> | string - status?: Prisma.EnumSyncStatusWithAggregatesFilter<"SyncLog"> | $Enums.SyncStatus - itemsTotal?: Prisma.IntWithAggregatesFilter<"SyncLog"> | number - itemsSynced?: Prisma.IntWithAggregatesFilter<"SyncLog"> | number - itemsFailed?: Prisma.IntWithAggregatesFilter<"SyncLog"> | number - error?: Prisma.StringNullableWithAggregatesFilter<"SyncLog"> | string | null - metadata?: Prisma.JsonNullableWithAggregatesFilter<"SyncLog"> - startedAt?: Prisma.DateTimeWithAggregatesFilter<"SyncLog"> | Date | string - completedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"SyncLog"> | Date | string | null -} - -export type SyncLogCreateInput = { - id?: string - type: string - status?: $Enums.SyncStatus - itemsTotal?: number - itemsSynced?: number - itemsFailed?: number - error?: string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - startedAt?: Date | string - completedAt?: Date | string | null -} - -export type SyncLogUncheckedCreateInput = { - id?: string - type: string - status?: $Enums.SyncStatus - itemsTotal?: number - itemsSynced?: number - itemsFailed?: number - error?: string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - startedAt?: Date | string - completedAt?: Date | string | null -} - -export type SyncLogUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - type?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.EnumSyncStatusFieldUpdateOperationsInput | $Enums.SyncStatus - itemsTotal?: Prisma.IntFieldUpdateOperationsInput | number - itemsSynced?: Prisma.IntFieldUpdateOperationsInput | number - itemsFailed?: Prisma.IntFieldUpdateOperationsInput | number - error?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - startedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type SyncLogUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - type?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.EnumSyncStatusFieldUpdateOperationsInput | $Enums.SyncStatus - itemsTotal?: Prisma.IntFieldUpdateOperationsInput | number - itemsSynced?: Prisma.IntFieldUpdateOperationsInput | number - itemsFailed?: Prisma.IntFieldUpdateOperationsInput | number - error?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - startedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type SyncLogCreateManyInput = { - id?: string - type: string - status?: $Enums.SyncStatus - itemsTotal?: number - itemsSynced?: number - itemsFailed?: number - error?: string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - startedAt?: Date | string - completedAt?: Date | string | null -} - -export type SyncLogUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - type?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.EnumSyncStatusFieldUpdateOperationsInput | $Enums.SyncStatus - itemsTotal?: Prisma.IntFieldUpdateOperationsInput | number - itemsSynced?: Prisma.IntFieldUpdateOperationsInput | number - itemsFailed?: Prisma.IntFieldUpdateOperationsInput | number - error?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - startedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type SyncLogUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - type?: Prisma.StringFieldUpdateOperationsInput | string - status?: Prisma.EnumSyncStatusFieldUpdateOperationsInput | $Enums.SyncStatus - itemsTotal?: Prisma.IntFieldUpdateOperationsInput | number - itemsSynced?: Prisma.IntFieldUpdateOperationsInput | number - itemsFailed?: Prisma.IntFieldUpdateOperationsInput | number - error?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - metadata?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue - startedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type SyncLogCountOrderByAggregateInput = { - id?: Prisma.SortOrder - type?: Prisma.SortOrder - status?: Prisma.SortOrder - itemsTotal?: Prisma.SortOrder - itemsSynced?: Prisma.SortOrder - itemsFailed?: Prisma.SortOrder - error?: Prisma.SortOrder - metadata?: Prisma.SortOrder - startedAt?: Prisma.SortOrder - completedAt?: Prisma.SortOrder -} - -export type SyncLogAvgOrderByAggregateInput = { - itemsTotal?: Prisma.SortOrder - itemsSynced?: Prisma.SortOrder - itemsFailed?: Prisma.SortOrder -} - -export type SyncLogMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - type?: Prisma.SortOrder - status?: Prisma.SortOrder - itemsTotal?: Prisma.SortOrder - itemsSynced?: Prisma.SortOrder - itemsFailed?: Prisma.SortOrder - error?: Prisma.SortOrder - startedAt?: Prisma.SortOrder - completedAt?: Prisma.SortOrder -} - -export type SyncLogMinOrderByAggregateInput = { - id?: Prisma.SortOrder - type?: Prisma.SortOrder - status?: Prisma.SortOrder - itemsTotal?: Prisma.SortOrder - itemsSynced?: Prisma.SortOrder - itemsFailed?: Prisma.SortOrder - error?: Prisma.SortOrder - startedAt?: Prisma.SortOrder - completedAt?: Prisma.SortOrder -} - -export type SyncLogSumOrderByAggregateInput = { - itemsTotal?: Prisma.SortOrder - itemsSynced?: Prisma.SortOrder - itemsFailed?: Prisma.SortOrder -} - -export type EnumSyncStatusFieldUpdateOperationsInput = { - set?: $Enums.SyncStatus -} - - - -export type SyncLogSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - type?: boolean - status?: boolean - itemsTotal?: boolean - itemsSynced?: boolean - itemsFailed?: boolean - error?: boolean - metadata?: boolean - startedAt?: boolean - completedAt?: boolean -}, ExtArgs["result"]["syncLog"]> - -export type SyncLogSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - type?: boolean - status?: boolean - itemsTotal?: boolean - itemsSynced?: boolean - itemsFailed?: boolean - error?: boolean - metadata?: boolean - startedAt?: boolean - completedAt?: boolean -}, ExtArgs["result"]["syncLog"]> - -export type SyncLogSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - type?: boolean - status?: boolean - itemsTotal?: boolean - itemsSynced?: boolean - itemsFailed?: boolean - error?: boolean - metadata?: boolean - startedAt?: boolean - completedAt?: boolean -}, ExtArgs["result"]["syncLog"]> - -export type SyncLogSelectScalar = { - id?: boolean - type?: boolean - status?: boolean - itemsTotal?: boolean - itemsSynced?: boolean - itemsFailed?: boolean - error?: boolean - metadata?: boolean - startedAt?: boolean - completedAt?: boolean -} - -export type SyncLogOmit = runtime.Types.Extensions.GetOmit<"id" | "type" | "status" | "itemsTotal" | "itemsSynced" | "itemsFailed" | "error" | "metadata" | "startedAt" | "completedAt", ExtArgs["result"]["syncLog"]> - -export type $SyncLogPayload = { - name: "SyncLog" - objects: {} - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - type: string - status: $Enums.SyncStatus - itemsTotal: number - itemsSynced: number - itemsFailed: number - error: string | null - metadata: runtime.JsonValue | null - startedAt: Date - completedAt: Date | null - }, ExtArgs["result"]["syncLog"]> - composites: {} -} - -export type SyncLogGetPayload = runtime.Types.Result.GetResult - -export type SyncLogCountArgs = - Omit & { - select?: SyncLogCountAggregateInputType | true - } - -export interface SyncLogDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['SyncLog'], meta: { name: 'SyncLog' } } - /** - * Find zero or one SyncLog that matches the filter. - * @param {SyncLogFindUniqueArgs} args - Arguments to find a SyncLog - * @example - * // Get one SyncLog - * const syncLog = await prisma.syncLog.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__SyncLogClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one SyncLog that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {SyncLogFindUniqueOrThrowArgs} args - Arguments to find a SyncLog - * @example - * // Get one SyncLog - * const syncLog = await prisma.syncLog.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__SyncLogClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first SyncLog that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SyncLogFindFirstArgs} args - Arguments to find a SyncLog - * @example - * // Get one SyncLog - * const syncLog = await prisma.syncLog.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__SyncLogClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first SyncLog that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SyncLogFindFirstOrThrowArgs} args - Arguments to find a SyncLog - * @example - * // Get one SyncLog - * const syncLog = await prisma.syncLog.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__SyncLogClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more SyncLogs that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SyncLogFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all SyncLogs - * const syncLogs = await prisma.syncLog.findMany() - * - * // Get first 10 SyncLogs - * const syncLogs = await prisma.syncLog.findMany({ take: 10 }) - * - * // Only select the `id` - * const syncLogWithIdOnly = await prisma.syncLog.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a SyncLog. - * @param {SyncLogCreateArgs} args - Arguments to create a SyncLog. - * @example - * // Create one SyncLog - * const SyncLog = await prisma.syncLog.create({ - * data: { - * // ... data to create a SyncLog - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__SyncLogClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many SyncLogs. - * @param {SyncLogCreateManyArgs} args - Arguments to create many SyncLogs. - * @example - * // Create many SyncLogs - * const syncLog = await prisma.syncLog.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many SyncLogs and returns the data saved in the database. - * @param {SyncLogCreateManyAndReturnArgs} args - Arguments to create many SyncLogs. - * @example - * // Create many SyncLogs - * const syncLog = await prisma.syncLog.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many SyncLogs and only return the `id` - * const syncLogWithIdOnly = await prisma.syncLog.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a SyncLog. - * @param {SyncLogDeleteArgs} args - Arguments to delete one SyncLog. - * @example - * // Delete one SyncLog - * const SyncLog = await prisma.syncLog.delete({ - * where: { - * // ... filter to delete one SyncLog - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__SyncLogClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one SyncLog. - * @param {SyncLogUpdateArgs} args - Arguments to update one SyncLog. - * @example - * // Update one SyncLog - * const syncLog = await prisma.syncLog.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__SyncLogClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more SyncLogs. - * @param {SyncLogDeleteManyArgs} args - Arguments to filter SyncLogs to delete. - * @example - * // Delete a few SyncLogs - * const { count } = await prisma.syncLog.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more SyncLogs. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SyncLogUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many SyncLogs - * const syncLog = await prisma.syncLog.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more SyncLogs and returns the data updated in the database. - * @param {SyncLogUpdateManyAndReturnArgs} args - Arguments to update many SyncLogs. - * @example - * // Update many SyncLogs - * const syncLog = await prisma.syncLog.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more SyncLogs and only return the `id` - * const syncLogWithIdOnly = await prisma.syncLog.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one SyncLog. - * @param {SyncLogUpsertArgs} args - Arguments to update or create a SyncLog. - * @example - * // Update or create a SyncLog - * const syncLog = await prisma.syncLog.upsert({ - * create: { - * // ... data to create a SyncLog - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the SyncLog we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__SyncLogClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of SyncLogs. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SyncLogCountArgs} args - Arguments to filter SyncLogs to count. - * @example - * // Count the number of SyncLogs - * const count = await prisma.syncLog.count({ - * where: { - * // ... the filter for the SyncLogs we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a SyncLog. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SyncLogAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by SyncLog. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {SyncLogGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends SyncLogGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: SyncLogGroupByArgs['orderBy'] } - : { orderBy?: SyncLogGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetSyncLogGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the SyncLog model - */ -readonly fields: SyncLogFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for SyncLog. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__SyncLogClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the SyncLog model - */ -export interface SyncLogFieldRefs { - readonly id: Prisma.FieldRef<"SyncLog", 'String'> - readonly type: Prisma.FieldRef<"SyncLog", 'String'> - readonly status: Prisma.FieldRef<"SyncLog", 'SyncStatus'> - readonly itemsTotal: Prisma.FieldRef<"SyncLog", 'Int'> - readonly itemsSynced: Prisma.FieldRef<"SyncLog", 'Int'> - readonly itemsFailed: Prisma.FieldRef<"SyncLog", 'Int'> - readonly error: Prisma.FieldRef<"SyncLog", 'String'> - readonly metadata: Prisma.FieldRef<"SyncLog", 'Json'> - readonly startedAt: Prisma.FieldRef<"SyncLog", 'DateTime'> - readonly completedAt: Prisma.FieldRef<"SyncLog", 'DateTime'> -} - - -// Custom InputTypes -/** - * SyncLog findUnique - */ -export type SyncLogFindUniqueArgs = { - /** - * Select specific fields to fetch from the SyncLog - */ - select?: Prisma.SyncLogSelect | null - /** - * Omit specific fields from the SyncLog - */ - omit?: Prisma.SyncLogOmit | null - /** - * Filter, which SyncLog to fetch. - */ - where: Prisma.SyncLogWhereUniqueInput -} - -/** - * SyncLog findUniqueOrThrow - */ -export type SyncLogFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the SyncLog - */ - select?: Prisma.SyncLogSelect | null - /** - * Omit specific fields from the SyncLog - */ - omit?: Prisma.SyncLogOmit | null - /** - * Filter, which SyncLog to fetch. - */ - where: Prisma.SyncLogWhereUniqueInput -} - -/** - * SyncLog findFirst - */ -export type SyncLogFindFirstArgs = { - /** - * Select specific fields to fetch from the SyncLog - */ - select?: Prisma.SyncLogSelect | null - /** - * Omit specific fields from the SyncLog - */ - omit?: Prisma.SyncLogOmit | null - /** - * Filter, which SyncLog to fetch. - */ - where?: Prisma.SyncLogWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of SyncLogs to fetch. - */ - orderBy?: Prisma.SyncLogOrderByWithRelationInput | Prisma.SyncLogOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for SyncLogs. - */ - cursor?: Prisma.SyncLogWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` SyncLogs from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` SyncLogs. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of SyncLogs. - */ - distinct?: Prisma.SyncLogScalarFieldEnum | Prisma.SyncLogScalarFieldEnum[] -} - -/** - * SyncLog findFirstOrThrow - */ -export type SyncLogFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the SyncLog - */ - select?: Prisma.SyncLogSelect | null - /** - * Omit specific fields from the SyncLog - */ - omit?: Prisma.SyncLogOmit | null - /** - * Filter, which SyncLog to fetch. - */ - where?: Prisma.SyncLogWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of SyncLogs to fetch. - */ - orderBy?: Prisma.SyncLogOrderByWithRelationInput | Prisma.SyncLogOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for SyncLogs. - */ - cursor?: Prisma.SyncLogWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` SyncLogs from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` SyncLogs. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of SyncLogs. - */ - distinct?: Prisma.SyncLogScalarFieldEnum | Prisma.SyncLogScalarFieldEnum[] -} - -/** - * SyncLog findMany - */ -export type SyncLogFindManyArgs = { - /** - * Select specific fields to fetch from the SyncLog - */ - select?: Prisma.SyncLogSelect | null - /** - * Omit specific fields from the SyncLog - */ - omit?: Prisma.SyncLogOmit | null - /** - * Filter, which SyncLogs to fetch. - */ - where?: Prisma.SyncLogWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of SyncLogs to fetch. - */ - orderBy?: Prisma.SyncLogOrderByWithRelationInput | Prisma.SyncLogOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing SyncLogs. - */ - cursor?: Prisma.SyncLogWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` SyncLogs from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` SyncLogs. - */ - skip?: number - distinct?: Prisma.SyncLogScalarFieldEnum | Prisma.SyncLogScalarFieldEnum[] -} - -/** - * SyncLog create - */ -export type SyncLogCreateArgs = { - /** - * Select specific fields to fetch from the SyncLog - */ - select?: Prisma.SyncLogSelect | null - /** - * Omit specific fields from the SyncLog - */ - omit?: Prisma.SyncLogOmit | null - /** - * The data needed to create a SyncLog. - */ - data: Prisma.XOR -} - -/** - * SyncLog createMany - */ -export type SyncLogCreateManyArgs = { - /** - * The data used to create many SyncLogs. - */ - data: Prisma.SyncLogCreateManyInput | Prisma.SyncLogCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * SyncLog createManyAndReturn - */ -export type SyncLogCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the SyncLog - */ - select?: Prisma.SyncLogSelectCreateManyAndReturn | null - /** - * Omit specific fields from the SyncLog - */ - omit?: Prisma.SyncLogOmit | null - /** - * The data used to create many SyncLogs. - */ - data: Prisma.SyncLogCreateManyInput | Prisma.SyncLogCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * SyncLog update - */ -export type SyncLogUpdateArgs = { - /** - * Select specific fields to fetch from the SyncLog - */ - select?: Prisma.SyncLogSelect | null - /** - * Omit specific fields from the SyncLog - */ - omit?: Prisma.SyncLogOmit | null - /** - * The data needed to update a SyncLog. - */ - data: Prisma.XOR - /** - * Choose, which SyncLog to update. - */ - where: Prisma.SyncLogWhereUniqueInput -} - -/** - * SyncLog updateMany - */ -export type SyncLogUpdateManyArgs = { - /** - * The data used to update SyncLogs. - */ - data: Prisma.XOR - /** - * Filter which SyncLogs to update - */ - where?: Prisma.SyncLogWhereInput - /** - * Limit how many SyncLogs to update. - */ - limit?: number -} - -/** - * SyncLog updateManyAndReturn - */ -export type SyncLogUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the SyncLog - */ - select?: Prisma.SyncLogSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the SyncLog - */ - omit?: Prisma.SyncLogOmit | null - /** - * The data used to update SyncLogs. - */ - data: Prisma.XOR - /** - * Filter which SyncLogs to update - */ - where?: Prisma.SyncLogWhereInput - /** - * Limit how many SyncLogs to update. - */ - limit?: number -} - -/** - * SyncLog upsert - */ -export type SyncLogUpsertArgs = { - /** - * Select specific fields to fetch from the SyncLog - */ - select?: Prisma.SyncLogSelect | null - /** - * Omit specific fields from the SyncLog - */ - omit?: Prisma.SyncLogOmit | null - /** - * The filter to search for the SyncLog to update in case it exists. - */ - where: Prisma.SyncLogWhereUniqueInput - /** - * In case the SyncLog found by the `where` argument doesn't exist, create a new SyncLog with this data. - */ - create: Prisma.XOR - /** - * In case the SyncLog was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * SyncLog delete - */ -export type SyncLogDeleteArgs = { - /** - * Select specific fields to fetch from the SyncLog - */ - select?: Prisma.SyncLogSelect | null - /** - * Omit specific fields from the SyncLog - */ - omit?: Prisma.SyncLogOmit | null - /** - * Filter which SyncLog to delete. - */ - where: Prisma.SyncLogWhereUniqueInput -} - -/** - * SyncLog deleteMany - */ -export type SyncLogDeleteManyArgs = { - /** - * Filter which SyncLogs to delete - */ - where?: Prisma.SyncLogWhereInput - /** - * Limit how many SyncLogs to delete. - */ - limit?: number -} - -/** - * SyncLog without action - */ -export type SyncLogDefaultArgs = { - /** - * Select specific fields to fetch from the SyncLog - */ - select?: Prisma.SyncLogSelect | null - /** - * Omit specific fields from the SyncLog - */ - omit?: Prisma.SyncLogOmit | null -} diff --git a/prisma/generated/prisma/models/User.ts b/prisma/generated/prisma/models/User.ts deleted file mode 100644 index 2a0eb91..0000000 --- a/prisma/generated/prisma/models/User.ts +++ /dev/null @@ -1,3356 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `User` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model User - * - */ -export type UserModel = runtime.Types.Result.DefaultSelection - -export type AggregateUser = { - _count: UserCountAggregateOutputType | null - _avg: UserAvgAggregateOutputType | null - _sum: UserSumAggregateOutputType | null - _min: UserMinAggregateOutputType | null - _max: UserMaxAggregateOutputType | null -} - -export type UserAvgAggregateOutputType = { - pterodactylId: number | null - virtfusionId: number | null - accountBalance: runtime.Decimal | null -} - -export type UserSumAggregateOutputType = { - pterodactylId: number | null - virtfusionId: number | null - accountBalance: runtime.Decimal | null -} - -export type UserMinAggregateOutputType = { - id: string | null - email: string | null - password: string | null - username: string | null - firstName: string | null - lastName: string | null - isPterodactylAdmin: boolean | null - isVirtfusionAdmin: boolean | null - isSystemAdmin: boolean | null - pterodactylId: number | null - virtfusionId: number | null - isMigrated: boolean | null - emailVerified: Date | null - isActive: boolean | null - avatarUrl: string | null - companyName: string | null - phoneNumber: string | null - billingEmail: string | null - accountBalance: runtime.Decimal | null - accountStatus: string | null - createdAt: Date | null - updatedAt: Date | null - lastLoginAt: Date | null - lastSyncedAt: Date | null -} - -export type UserMaxAggregateOutputType = { - id: string | null - email: string | null - password: string | null - username: string | null - firstName: string | null - lastName: string | null - isPterodactylAdmin: boolean | null - isVirtfusionAdmin: boolean | null - isSystemAdmin: boolean | null - pterodactylId: number | null - virtfusionId: number | null - isMigrated: boolean | null - emailVerified: Date | null - isActive: boolean | null - avatarUrl: string | null - companyName: string | null - phoneNumber: string | null - billingEmail: string | null - accountBalance: runtime.Decimal | null - accountStatus: string | null - createdAt: Date | null - updatedAt: Date | null - lastLoginAt: Date | null - lastSyncedAt: Date | null -} - -export type UserCountAggregateOutputType = { - id: number - email: number - password: number - username: number - firstName: number - lastName: number - roles: number - isPterodactylAdmin: number - isVirtfusionAdmin: number - isSystemAdmin: number - pterodactylId: number - virtfusionId: number - isMigrated: number - emailVerified: number - isActive: number - avatarUrl: number - companyName: number - phoneNumber: number - billingEmail: number - accountBalance: number - accountStatus: number - createdAt: number - updatedAt: number - lastLoginAt: number - lastSyncedAt: number - _all: number -} - - -export type UserAvgAggregateInputType = { - pterodactylId?: true - virtfusionId?: true - accountBalance?: true -} - -export type UserSumAggregateInputType = { - pterodactylId?: true - virtfusionId?: true - accountBalance?: true -} - -export type UserMinAggregateInputType = { - id?: true - email?: true - password?: true - username?: true - firstName?: true - lastName?: true - isPterodactylAdmin?: true - isVirtfusionAdmin?: true - isSystemAdmin?: true - pterodactylId?: true - virtfusionId?: true - isMigrated?: true - emailVerified?: true - isActive?: true - avatarUrl?: true - companyName?: true - phoneNumber?: true - billingEmail?: true - accountBalance?: true - accountStatus?: true - createdAt?: true - updatedAt?: true - lastLoginAt?: true - lastSyncedAt?: true -} - -export type UserMaxAggregateInputType = { - id?: true - email?: true - password?: true - username?: true - firstName?: true - lastName?: true - isPterodactylAdmin?: true - isVirtfusionAdmin?: true - isSystemAdmin?: true - pterodactylId?: true - virtfusionId?: true - isMigrated?: true - emailVerified?: true - isActive?: true - avatarUrl?: true - companyName?: true - phoneNumber?: true - billingEmail?: true - accountBalance?: true - accountStatus?: true - createdAt?: true - updatedAt?: true - lastLoginAt?: true - lastSyncedAt?: true -} - -export type UserCountAggregateInputType = { - id?: true - email?: true - password?: true - username?: true - firstName?: true - lastName?: true - roles?: true - isPterodactylAdmin?: true - isVirtfusionAdmin?: true - isSystemAdmin?: true - pterodactylId?: true - virtfusionId?: true - isMigrated?: true - emailVerified?: true - isActive?: true - avatarUrl?: true - companyName?: true - phoneNumber?: true - billingEmail?: true - accountBalance?: true - accountStatus?: true - createdAt?: true - updatedAt?: true - lastLoginAt?: true - lastSyncedAt?: true - _all?: true -} - -export type UserAggregateArgs = { - /** - * Filter which User to aggregate. - */ - where?: Prisma.UserWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Users to fetch. - */ - orderBy?: Prisma.UserOrderByWithRelationInput | Prisma.UserOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.UserWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Users from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Users. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned Users - **/ - _count?: true | UserCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to average - **/ - _avg?: UserAvgAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to sum - **/ - _sum?: UserSumAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: UserMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: UserMaxAggregateInputType -} - -export type GetUserAggregateType = { - [P in keyof T & keyof AggregateUser]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type UserGroupByArgs = { - where?: Prisma.UserWhereInput - orderBy?: Prisma.UserOrderByWithAggregationInput | Prisma.UserOrderByWithAggregationInput[] - by: Prisma.UserScalarFieldEnum[] | Prisma.UserScalarFieldEnum - having?: Prisma.UserScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: UserCountAggregateInputType | true - _avg?: UserAvgAggregateInputType - _sum?: UserSumAggregateInputType - _min?: UserMinAggregateInputType - _max?: UserMaxAggregateInputType -} - -export type UserGroupByOutputType = { - id: string - email: string - password: string | null - username: string | null - firstName: string | null - lastName: string | null - roles: $Enums.Role[] - isPterodactylAdmin: boolean - isVirtfusionAdmin: boolean - isSystemAdmin: boolean - pterodactylId: number | null - virtfusionId: number | null - isMigrated: boolean - emailVerified: Date | null - isActive: boolean - avatarUrl: string | null - companyName: string | null - phoneNumber: string | null - billingEmail: string | null - accountBalance: runtime.Decimal - accountStatus: string - createdAt: Date - updatedAt: Date - lastLoginAt: Date | null - lastSyncedAt: Date | null - _count: UserCountAggregateOutputType | null - _avg: UserAvgAggregateOutputType | null - _sum: UserSumAggregateOutputType | null - _min: UserMinAggregateOutputType | null - _max: UserMaxAggregateOutputType | null -} - -type GetUserGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof UserGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type UserWhereInput = { - AND?: Prisma.UserWhereInput | Prisma.UserWhereInput[] - OR?: Prisma.UserWhereInput[] - NOT?: Prisma.UserWhereInput | Prisma.UserWhereInput[] - id?: Prisma.StringFilter<"User"> | string - email?: Prisma.StringFilter<"User"> | string - password?: Prisma.StringNullableFilter<"User"> | string | null - username?: Prisma.StringNullableFilter<"User"> | string | null - firstName?: Prisma.StringNullableFilter<"User"> | string | null - lastName?: Prisma.StringNullableFilter<"User"> | string | null - roles?: Prisma.EnumRoleNullableListFilter<"User"> - isPterodactylAdmin?: Prisma.BoolFilter<"User"> | boolean - isVirtfusionAdmin?: Prisma.BoolFilter<"User"> | boolean - isSystemAdmin?: Prisma.BoolFilter<"User"> | boolean - pterodactylId?: Prisma.IntNullableFilter<"User"> | number | null - virtfusionId?: Prisma.IntNullableFilter<"User"> | number | null - isMigrated?: Prisma.BoolFilter<"User"> | boolean - emailVerified?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null - isActive?: Prisma.BoolFilter<"User"> | boolean - avatarUrl?: Prisma.StringNullableFilter<"User"> | string | null - companyName?: Prisma.StringNullableFilter<"User"> | string | null - phoneNumber?: Prisma.StringNullableFilter<"User"> | string | null - billingEmail?: Prisma.StringNullableFilter<"User"> | string | null - accountBalance?: Prisma.DecimalFilter<"User"> | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFilter<"User"> | string - createdAt?: Prisma.DateTimeFilter<"User"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"User"> | Date | string - lastLoginAt?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null - lastSyncedAt?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null - sessions?: Prisma.SessionListRelationFilter - servers?: Prisma.ServerListRelationFilter - discordWebhooks?: Prisma.DiscordWebhookListRelationFilter - invoices?: Prisma.InvoiceListRelationFilter - tickets?: Prisma.SupportTicketListRelationFilter - ticketReplies?: Prisma.SupportTicketReplyListRelationFilter - products?: Prisma.ProductListRelationFilter -} - -export type UserOrderByWithRelationInput = { - id?: Prisma.SortOrder - email?: Prisma.SortOrder - password?: Prisma.SortOrderInput | Prisma.SortOrder - username?: Prisma.SortOrderInput | Prisma.SortOrder - firstName?: Prisma.SortOrderInput | Prisma.SortOrder - lastName?: Prisma.SortOrderInput | Prisma.SortOrder - roles?: Prisma.SortOrder - isPterodactylAdmin?: Prisma.SortOrder - isVirtfusionAdmin?: Prisma.SortOrder - isSystemAdmin?: Prisma.SortOrder - pterodactylId?: Prisma.SortOrderInput | Prisma.SortOrder - virtfusionId?: Prisma.SortOrderInput | Prisma.SortOrder - isMigrated?: Prisma.SortOrder - emailVerified?: Prisma.SortOrderInput | Prisma.SortOrder - isActive?: Prisma.SortOrder - avatarUrl?: Prisma.SortOrderInput | Prisma.SortOrder - companyName?: Prisma.SortOrderInput | Prisma.SortOrder - phoneNumber?: Prisma.SortOrderInput | Prisma.SortOrder - billingEmail?: Prisma.SortOrderInput | Prisma.SortOrder - accountBalance?: Prisma.SortOrder - accountStatus?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - lastLoginAt?: Prisma.SortOrderInput | Prisma.SortOrder - lastSyncedAt?: Prisma.SortOrderInput | Prisma.SortOrder - sessions?: Prisma.SessionOrderByRelationAggregateInput - servers?: Prisma.ServerOrderByRelationAggregateInput - discordWebhooks?: Prisma.DiscordWebhookOrderByRelationAggregateInput - invoices?: Prisma.InvoiceOrderByRelationAggregateInput - tickets?: Prisma.SupportTicketOrderByRelationAggregateInput - ticketReplies?: Prisma.SupportTicketReplyOrderByRelationAggregateInput - products?: Prisma.ProductOrderByRelationAggregateInput -} - -export type UserWhereUniqueInput = Prisma.AtLeast<{ - id?: string - email?: string - AND?: Prisma.UserWhereInput | Prisma.UserWhereInput[] - OR?: Prisma.UserWhereInput[] - NOT?: Prisma.UserWhereInput | Prisma.UserWhereInput[] - password?: Prisma.StringNullableFilter<"User"> | string | null - username?: Prisma.StringNullableFilter<"User"> | string | null - firstName?: Prisma.StringNullableFilter<"User"> | string | null - lastName?: Prisma.StringNullableFilter<"User"> | string | null - roles?: Prisma.EnumRoleNullableListFilter<"User"> - isPterodactylAdmin?: Prisma.BoolFilter<"User"> | boolean - isVirtfusionAdmin?: Prisma.BoolFilter<"User"> | boolean - isSystemAdmin?: Prisma.BoolFilter<"User"> | boolean - pterodactylId?: Prisma.IntNullableFilter<"User"> | number | null - virtfusionId?: Prisma.IntNullableFilter<"User"> | number | null - isMigrated?: Prisma.BoolFilter<"User"> | boolean - emailVerified?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null - isActive?: Prisma.BoolFilter<"User"> | boolean - avatarUrl?: Prisma.StringNullableFilter<"User"> | string | null - companyName?: Prisma.StringNullableFilter<"User"> | string | null - phoneNumber?: Prisma.StringNullableFilter<"User"> | string | null - billingEmail?: Prisma.StringNullableFilter<"User"> | string | null - accountBalance?: Prisma.DecimalFilter<"User"> | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFilter<"User"> | string - createdAt?: Prisma.DateTimeFilter<"User"> | Date | string - updatedAt?: Prisma.DateTimeFilter<"User"> | Date | string - lastLoginAt?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null - lastSyncedAt?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null - sessions?: Prisma.SessionListRelationFilter - servers?: Prisma.ServerListRelationFilter - discordWebhooks?: Prisma.DiscordWebhookListRelationFilter - invoices?: Prisma.InvoiceListRelationFilter - tickets?: Prisma.SupportTicketListRelationFilter - ticketReplies?: Prisma.SupportTicketReplyListRelationFilter - products?: Prisma.ProductListRelationFilter -}, "id" | "email"> - -export type UserOrderByWithAggregationInput = { - id?: Prisma.SortOrder - email?: Prisma.SortOrder - password?: Prisma.SortOrderInput | Prisma.SortOrder - username?: Prisma.SortOrderInput | Prisma.SortOrder - firstName?: Prisma.SortOrderInput | Prisma.SortOrder - lastName?: Prisma.SortOrderInput | Prisma.SortOrder - roles?: Prisma.SortOrder - isPterodactylAdmin?: Prisma.SortOrder - isVirtfusionAdmin?: Prisma.SortOrder - isSystemAdmin?: Prisma.SortOrder - pterodactylId?: Prisma.SortOrderInput | Prisma.SortOrder - virtfusionId?: Prisma.SortOrderInput | Prisma.SortOrder - isMigrated?: Prisma.SortOrder - emailVerified?: Prisma.SortOrderInput | Prisma.SortOrder - isActive?: Prisma.SortOrder - avatarUrl?: Prisma.SortOrderInput | Prisma.SortOrder - companyName?: Prisma.SortOrderInput | Prisma.SortOrder - phoneNumber?: Prisma.SortOrderInput | Prisma.SortOrder - billingEmail?: Prisma.SortOrderInput | Prisma.SortOrder - accountBalance?: Prisma.SortOrder - accountStatus?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - lastLoginAt?: Prisma.SortOrderInput | Prisma.SortOrder - lastSyncedAt?: Prisma.SortOrderInput | Prisma.SortOrder - _count?: Prisma.UserCountOrderByAggregateInput - _avg?: Prisma.UserAvgOrderByAggregateInput - _max?: Prisma.UserMaxOrderByAggregateInput - _min?: Prisma.UserMinOrderByAggregateInput - _sum?: Prisma.UserSumOrderByAggregateInput -} - -export type UserScalarWhereWithAggregatesInput = { - AND?: Prisma.UserScalarWhereWithAggregatesInput | Prisma.UserScalarWhereWithAggregatesInput[] - OR?: Prisma.UserScalarWhereWithAggregatesInput[] - NOT?: Prisma.UserScalarWhereWithAggregatesInput | Prisma.UserScalarWhereWithAggregatesInput[] - id?: Prisma.StringWithAggregatesFilter<"User"> | string - email?: Prisma.StringWithAggregatesFilter<"User"> | string - password?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null - username?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null - firstName?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null - lastName?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null - roles?: Prisma.EnumRoleNullableListFilter<"User"> - isPterodactylAdmin?: Prisma.BoolWithAggregatesFilter<"User"> | boolean - isVirtfusionAdmin?: Prisma.BoolWithAggregatesFilter<"User"> | boolean - isSystemAdmin?: Prisma.BoolWithAggregatesFilter<"User"> | boolean - pterodactylId?: Prisma.IntNullableWithAggregatesFilter<"User"> | number | null - virtfusionId?: Prisma.IntNullableWithAggregatesFilter<"User"> | number | null - isMigrated?: Prisma.BoolWithAggregatesFilter<"User"> | boolean - emailVerified?: Prisma.DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null - isActive?: Prisma.BoolWithAggregatesFilter<"User"> | boolean - avatarUrl?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null - companyName?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null - phoneNumber?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null - billingEmail?: Prisma.StringNullableWithAggregatesFilter<"User"> | string | null - accountBalance?: Prisma.DecimalWithAggregatesFilter<"User"> | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringWithAggregatesFilter<"User"> | string - createdAt?: Prisma.DateTimeWithAggregatesFilter<"User"> | Date | string - updatedAt?: Prisma.DateTimeWithAggregatesFilter<"User"> | Date | string - lastLoginAt?: Prisma.DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null - lastSyncedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"User"> | Date | string | null -} - -export type UserCreateInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionCreateNestedManyWithoutUserInput - servers?: Prisma.ServerCreateNestedManyWithoutOwnerInput - discordWebhooks?: Prisma.DiscordWebhookCreateNestedManyWithoutUserInput - invoices?: Prisma.InvoiceCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyCreateNestedManyWithoutUserInput - products?: Prisma.ProductCreateNestedManyWithoutCreatorInput -} - -export type UserUncheckedCreateInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutOwnerInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedCreateNestedManyWithoutUserInput - invoices?: Prisma.InvoiceUncheckedCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedCreateNestedManyWithoutUserInput - products?: Prisma.ProductUncheckedCreateNestedManyWithoutCreatorInput -} - -export type UserUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUpdateManyWithoutUserNestedInput - servers?: Prisma.ServerUpdateManyWithoutOwnerNestedInput - discordWebhooks?: Prisma.DiscordWebhookUpdateManyWithoutUserNestedInput - invoices?: Prisma.InvoiceUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUpdateManyWithoutCreatorNestedInput -} - -export type UserUncheckedUpdateInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput - servers?: Prisma.ServerUncheckedUpdateManyWithoutOwnerNestedInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedUpdateManyWithoutUserNestedInput - invoices?: Prisma.InvoiceUncheckedUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUncheckedUpdateManyWithoutCreatorNestedInput -} - -export type UserCreateManyInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null -} - -export type UserUpdateManyMutationInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type UserUncheckedUpdateManyInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null -} - -export type EnumRoleNullableListFilter<$PrismaModel = never> = { - equals?: $Enums.Role[] | Prisma.ListEnumRoleFieldRefInput<$PrismaModel> | null - has?: $Enums.Role | Prisma.EnumRoleFieldRefInput<$PrismaModel> | null - hasEvery?: $Enums.Role[] | Prisma.ListEnumRoleFieldRefInput<$PrismaModel> - hasSome?: $Enums.Role[] | Prisma.ListEnumRoleFieldRefInput<$PrismaModel> - isEmpty?: boolean -} - -export type UserCountOrderByAggregateInput = { - id?: Prisma.SortOrder - email?: Prisma.SortOrder - password?: Prisma.SortOrder - username?: Prisma.SortOrder - firstName?: Prisma.SortOrder - lastName?: Prisma.SortOrder - roles?: Prisma.SortOrder - isPterodactylAdmin?: Prisma.SortOrder - isVirtfusionAdmin?: Prisma.SortOrder - isSystemAdmin?: Prisma.SortOrder - pterodactylId?: Prisma.SortOrder - virtfusionId?: Prisma.SortOrder - isMigrated?: Prisma.SortOrder - emailVerified?: Prisma.SortOrder - isActive?: Prisma.SortOrder - avatarUrl?: Prisma.SortOrder - companyName?: Prisma.SortOrder - phoneNumber?: Prisma.SortOrder - billingEmail?: Prisma.SortOrder - accountBalance?: Prisma.SortOrder - accountStatus?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - lastLoginAt?: Prisma.SortOrder - lastSyncedAt?: Prisma.SortOrder -} - -export type UserAvgOrderByAggregateInput = { - pterodactylId?: Prisma.SortOrder - virtfusionId?: Prisma.SortOrder - accountBalance?: Prisma.SortOrder -} - -export type UserMaxOrderByAggregateInput = { - id?: Prisma.SortOrder - email?: Prisma.SortOrder - password?: Prisma.SortOrder - username?: Prisma.SortOrder - firstName?: Prisma.SortOrder - lastName?: Prisma.SortOrder - isPterodactylAdmin?: Prisma.SortOrder - isVirtfusionAdmin?: Prisma.SortOrder - isSystemAdmin?: Prisma.SortOrder - pterodactylId?: Prisma.SortOrder - virtfusionId?: Prisma.SortOrder - isMigrated?: Prisma.SortOrder - emailVerified?: Prisma.SortOrder - isActive?: Prisma.SortOrder - avatarUrl?: Prisma.SortOrder - companyName?: Prisma.SortOrder - phoneNumber?: Prisma.SortOrder - billingEmail?: Prisma.SortOrder - accountBalance?: Prisma.SortOrder - accountStatus?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - lastLoginAt?: Prisma.SortOrder - lastSyncedAt?: Prisma.SortOrder -} - -export type UserMinOrderByAggregateInput = { - id?: Prisma.SortOrder - email?: Prisma.SortOrder - password?: Prisma.SortOrder - username?: Prisma.SortOrder - firstName?: Prisma.SortOrder - lastName?: Prisma.SortOrder - isPterodactylAdmin?: Prisma.SortOrder - isVirtfusionAdmin?: Prisma.SortOrder - isSystemAdmin?: Prisma.SortOrder - pterodactylId?: Prisma.SortOrder - virtfusionId?: Prisma.SortOrder - isMigrated?: Prisma.SortOrder - emailVerified?: Prisma.SortOrder - isActive?: Prisma.SortOrder - avatarUrl?: Prisma.SortOrder - companyName?: Prisma.SortOrder - phoneNumber?: Prisma.SortOrder - billingEmail?: Prisma.SortOrder - accountBalance?: Prisma.SortOrder - accountStatus?: Prisma.SortOrder - createdAt?: Prisma.SortOrder - updatedAt?: Prisma.SortOrder - lastLoginAt?: Prisma.SortOrder - lastSyncedAt?: Prisma.SortOrder -} - -export type UserSumOrderByAggregateInput = { - pterodactylId?: Prisma.SortOrder - virtfusionId?: Prisma.SortOrder - accountBalance?: Prisma.SortOrder -} - -export type UserScalarRelationFilter = { - is?: Prisma.UserWhereInput - isNot?: Prisma.UserWhereInput -} - -export type UserNullableScalarRelationFilter = { - is?: Prisma.UserWhereInput | null - isNot?: Prisma.UserWhereInput | null -} - -export type UserCreaterolesInput = { - set: $Enums.Role[] -} - -export type StringFieldUpdateOperationsInput = { - set?: string -} - -export type NullableStringFieldUpdateOperationsInput = { - set?: string | null -} - -export type UserUpdaterolesInput = { - set?: $Enums.Role[] - push?: $Enums.Role | $Enums.Role[] -} - -export type BoolFieldUpdateOperationsInput = { - set?: boolean -} - -export type NullableIntFieldUpdateOperationsInput = { - set?: number | null - increment?: number - decrement?: number - multiply?: number - divide?: number -} - -export type NullableDateTimeFieldUpdateOperationsInput = { - set?: Date | string | null -} - -export type DecimalFieldUpdateOperationsInput = { - set?: runtime.Decimal | runtime.DecimalJsLike | number | string - increment?: runtime.Decimal | runtime.DecimalJsLike | number | string - decrement?: runtime.Decimal | runtime.DecimalJsLike | number | string - multiply?: runtime.Decimal | runtime.DecimalJsLike | number | string - divide?: runtime.Decimal | runtime.DecimalJsLike | number | string -} - -export type DateTimeFieldUpdateOperationsInput = { - set?: Date | string -} - -export type UserCreateNestedOneWithoutSessionsInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutSessionsInput - connect?: Prisma.UserWhereUniqueInput -} - -export type UserUpdateOneRequiredWithoutSessionsNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutSessionsInput - upsert?: Prisma.UserUpsertWithoutSessionsInput - connect?: Prisma.UserWhereUniqueInput - update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutSessionsInput> -} - -export type UserCreateNestedOneWithoutServersInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutServersInput - connect?: Prisma.UserWhereUniqueInput -} - -export type UserUpdateOneRequiredWithoutServersNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutServersInput - upsert?: Prisma.UserUpsertWithoutServersInput - connect?: Prisma.UserWhereUniqueInput - update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutServersInput> -} - -export type UserCreateNestedOneWithoutProductsInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutProductsInput - connect?: Prisma.UserWhereUniqueInput -} - -export type UserUpdateOneRequiredWithoutProductsNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutProductsInput - upsert?: Prisma.UserUpsertWithoutProductsInput - connect?: Prisma.UserWhereUniqueInput - update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutProductsInput> -} - -export type UserCreateNestedOneWithoutInvoicesInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutInvoicesInput - connect?: Prisma.UserWhereUniqueInput -} - -export type UserUpdateOneRequiredWithoutInvoicesNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutInvoicesInput - upsert?: Prisma.UserUpsertWithoutInvoicesInput - connect?: Prisma.UserWhereUniqueInput - update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutInvoicesInput> -} - -export type UserCreateNestedOneWithoutTicketsInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutTicketsInput - connect?: Prisma.UserWhereUniqueInput -} - -export type UserUpdateOneRequiredWithoutTicketsNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutTicketsInput - upsert?: Prisma.UserUpsertWithoutTicketsInput - connect?: Prisma.UserWhereUniqueInput - update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutTicketsInput> -} - -export type UserCreateNestedOneWithoutTicketRepliesInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutTicketRepliesInput - connect?: Prisma.UserWhereUniqueInput -} - -export type UserUpdateOneRequiredWithoutTicketRepliesNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutTicketRepliesInput - upsert?: Prisma.UserUpsertWithoutTicketRepliesInput - connect?: Prisma.UserWhereUniqueInput - update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutTicketRepliesInput> -} - -export type UserCreateNestedOneWithoutDiscordWebhooksInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutDiscordWebhooksInput - connect?: Prisma.UserWhereUniqueInput -} - -export type UserUpdateOneWithoutDiscordWebhooksNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.UserCreateOrConnectWithoutDiscordWebhooksInput - upsert?: Prisma.UserUpsertWithoutDiscordWebhooksInput - disconnect?: Prisma.UserWhereInput | boolean - delete?: Prisma.UserWhereInput | boolean - connect?: Prisma.UserWhereUniqueInput - update?: Prisma.XOR, Prisma.UserUncheckedUpdateWithoutDiscordWebhooksInput> -} - -export type UserCreateWithoutSessionsInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - servers?: Prisma.ServerCreateNestedManyWithoutOwnerInput - discordWebhooks?: Prisma.DiscordWebhookCreateNestedManyWithoutUserInput - invoices?: Prisma.InvoiceCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyCreateNestedManyWithoutUserInput - products?: Prisma.ProductCreateNestedManyWithoutCreatorInput -} - -export type UserUncheckedCreateWithoutSessionsInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutOwnerInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedCreateNestedManyWithoutUserInput - invoices?: Prisma.InvoiceUncheckedCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedCreateNestedManyWithoutUserInput - products?: Prisma.ProductUncheckedCreateNestedManyWithoutCreatorInput -} - -export type UserCreateOrConnectWithoutSessionsInput = { - where: Prisma.UserWhereUniqueInput - create: Prisma.XOR -} - -export type UserUpsertWithoutSessionsInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.UserWhereInput -} - -export type UserUpdateToOneWithWhereWithoutSessionsInput = { - where?: Prisma.UserWhereInput - data: Prisma.XOR -} - -export type UserUpdateWithoutSessionsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - servers?: Prisma.ServerUpdateManyWithoutOwnerNestedInput - discordWebhooks?: Prisma.DiscordWebhookUpdateManyWithoutUserNestedInput - invoices?: Prisma.InvoiceUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUpdateManyWithoutCreatorNestedInput -} - -export type UserUncheckedUpdateWithoutSessionsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - servers?: Prisma.ServerUncheckedUpdateManyWithoutOwnerNestedInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedUpdateManyWithoutUserNestedInput - invoices?: Prisma.InvoiceUncheckedUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUncheckedUpdateManyWithoutCreatorNestedInput -} - -export type UserCreateWithoutServersInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionCreateNestedManyWithoutUserInput - discordWebhooks?: Prisma.DiscordWebhookCreateNestedManyWithoutUserInput - invoices?: Prisma.InvoiceCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyCreateNestedManyWithoutUserInput - products?: Prisma.ProductCreateNestedManyWithoutCreatorInput -} - -export type UserUncheckedCreateWithoutServersInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedCreateNestedManyWithoutUserInput - invoices?: Prisma.InvoiceUncheckedCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedCreateNestedManyWithoutUserInput - products?: Prisma.ProductUncheckedCreateNestedManyWithoutCreatorInput -} - -export type UserCreateOrConnectWithoutServersInput = { - where: Prisma.UserWhereUniqueInput - create: Prisma.XOR -} - -export type UserUpsertWithoutServersInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.UserWhereInput -} - -export type UserUpdateToOneWithWhereWithoutServersInput = { - where?: Prisma.UserWhereInput - data: Prisma.XOR -} - -export type UserUpdateWithoutServersInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUpdateManyWithoutUserNestedInput - discordWebhooks?: Prisma.DiscordWebhookUpdateManyWithoutUserNestedInput - invoices?: Prisma.InvoiceUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUpdateManyWithoutCreatorNestedInput -} - -export type UserUncheckedUpdateWithoutServersInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedUpdateManyWithoutUserNestedInput - invoices?: Prisma.InvoiceUncheckedUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUncheckedUpdateManyWithoutCreatorNestedInput -} - -export type UserCreateWithoutProductsInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionCreateNestedManyWithoutUserInput - servers?: Prisma.ServerCreateNestedManyWithoutOwnerInput - discordWebhooks?: Prisma.DiscordWebhookCreateNestedManyWithoutUserInput - invoices?: Prisma.InvoiceCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyCreateNestedManyWithoutUserInput -} - -export type UserUncheckedCreateWithoutProductsInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutOwnerInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedCreateNestedManyWithoutUserInput - invoices?: Prisma.InvoiceUncheckedCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedCreateNestedManyWithoutUserInput -} - -export type UserCreateOrConnectWithoutProductsInput = { - where: Prisma.UserWhereUniqueInput - create: Prisma.XOR -} - -export type UserUpsertWithoutProductsInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.UserWhereInput -} - -export type UserUpdateToOneWithWhereWithoutProductsInput = { - where?: Prisma.UserWhereInput - data: Prisma.XOR -} - -export type UserUpdateWithoutProductsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUpdateManyWithoutUserNestedInput - servers?: Prisma.ServerUpdateManyWithoutOwnerNestedInput - discordWebhooks?: Prisma.DiscordWebhookUpdateManyWithoutUserNestedInput - invoices?: Prisma.InvoiceUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUpdateManyWithoutUserNestedInput -} - -export type UserUncheckedUpdateWithoutProductsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput - servers?: Prisma.ServerUncheckedUpdateManyWithoutOwnerNestedInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedUpdateManyWithoutUserNestedInput - invoices?: Prisma.InvoiceUncheckedUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedUpdateManyWithoutUserNestedInput -} - -export type UserCreateWithoutInvoicesInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionCreateNestedManyWithoutUserInput - servers?: Prisma.ServerCreateNestedManyWithoutOwnerInput - discordWebhooks?: Prisma.DiscordWebhookCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyCreateNestedManyWithoutUserInput - products?: Prisma.ProductCreateNestedManyWithoutCreatorInput -} - -export type UserUncheckedCreateWithoutInvoicesInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutOwnerInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedCreateNestedManyWithoutUserInput - products?: Prisma.ProductUncheckedCreateNestedManyWithoutCreatorInput -} - -export type UserCreateOrConnectWithoutInvoicesInput = { - where: Prisma.UserWhereUniqueInput - create: Prisma.XOR -} - -export type UserUpsertWithoutInvoicesInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.UserWhereInput -} - -export type UserUpdateToOneWithWhereWithoutInvoicesInput = { - where?: Prisma.UserWhereInput - data: Prisma.XOR -} - -export type UserUpdateWithoutInvoicesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUpdateManyWithoutUserNestedInput - servers?: Prisma.ServerUpdateManyWithoutOwnerNestedInput - discordWebhooks?: Prisma.DiscordWebhookUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUpdateManyWithoutCreatorNestedInput -} - -export type UserUncheckedUpdateWithoutInvoicesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput - servers?: Prisma.ServerUncheckedUpdateManyWithoutOwnerNestedInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUncheckedUpdateManyWithoutCreatorNestedInput -} - -export type UserCreateWithoutTicketsInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionCreateNestedManyWithoutUserInput - servers?: Prisma.ServerCreateNestedManyWithoutOwnerInput - discordWebhooks?: Prisma.DiscordWebhookCreateNestedManyWithoutUserInput - invoices?: Prisma.InvoiceCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyCreateNestedManyWithoutUserInput - products?: Prisma.ProductCreateNestedManyWithoutCreatorInput -} - -export type UserUncheckedCreateWithoutTicketsInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutOwnerInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedCreateNestedManyWithoutUserInput - invoices?: Prisma.InvoiceUncheckedCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedCreateNestedManyWithoutUserInput - products?: Prisma.ProductUncheckedCreateNestedManyWithoutCreatorInput -} - -export type UserCreateOrConnectWithoutTicketsInput = { - where: Prisma.UserWhereUniqueInput - create: Prisma.XOR -} - -export type UserUpsertWithoutTicketsInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.UserWhereInput -} - -export type UserUpdateToOneWithWhereWithoutTicketsInput = { - where?: Prisma.UserWhereInput - data: Prisma.XOR -} - -export type UserUpdateWithoutTicketsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUpdateManyWithoutUserNestedInput - servers?: Prisma.ServerUpdateManyWithoutOwnerNestedInput - discordWebhooks?: Prisma.DiscordWebhookUpdateManyWithoutUserNestedInput - invoices?: Prisma.InvoiceUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUpdateManyWithoutCreatorNestedInput -} - -export type UserUncheckedUpdateWithoutTicketsInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput - servers?: Prisma.ServerUncheckedUpdateManyWithoutOwnerNestedInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedUpdateManyWithoutUserNestedInput - invoices?: Prisma.InvoiceUncheckedUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUncheckedUpdateManyWithoutCreatorNestedInput -} - -export type UserCreateWithoutTicketRepliesInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionCreateNestedManyWithoutUserInput - servers?: Prisma.ServerCreateNestedManyWithoutOwnerInput - discordWebhooks?: Prisma.DiscordWebhookCreateNestedManyWithoutUserInput - invoices?: Prisma.InvoiceCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutUserInput - products?: Prisma.ProductCreateNestedManyWithoutCreatorInput -} - -export type UserUncheckedCreateWithoutTicketRepliesInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutOwnerInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedCreateNestedManyWithoutUserInput - invoices?: Prisma.InvoiceUncheckedCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutUserInput - products?: Prisma.ProductUncheckedCreateNestedManyWithoutCreatorInput -} - -export type UserCreateOrConnectWithoutTicketRepliesInput = { - where: Prisma.UserWhereUniqueInput - create: Prisma.XOR -} - -export type UserUpsertWithoutTicketRepliesInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.UserWhereInput -} - -export type UserUpdateToOneWithWhereWithoutTicketRepliesInput = { - where?: Prisma.UserWhereInput - data: Prisma.XOR -} - -export type UserUpdateWithoutTicketRepliesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUpdateManyWithoutUserNestedInput - servers?: Prisma.ServerUpdateManyWithoutOwnerNestedInput - discordWebhooks?: Prisma.DiscordWebhookUpdateManyWithoutUserNestedInput - invoices?: Prisma.InvoiceUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUpdateManyWithoutCreatorNestedInput -} - -export type UserUncheckedUpdateWithoutTicketRepliesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput - servers?: Prisma.ServerUncheckedUpdateManyWithoutOwnerNestedInput - discordWebhooks?: Prisma.DiscordWebhookUncheckedUpdateManyWithoutUserNestedInput - invoices?: Prisma.InvoiceUncheckedUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUncheckedUpdateManyWithoutCreatorNestedInput -} - -export type UserCreateWithoutDiscordWebhooksInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionCreateNestedManyWithoutUserInput - servers?: Prisma.ServerCreateNestedManyWithoutOwnerInput - invoices?: Prisma.InvoiceCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyCreateNestedManyWithoutUserInput - products?: Prisma.ProductCreateNestedManyWithoutCreatorInput -} - -export type UserUncheckedCreateWithoutDiscordWebhooksInput = { - id?: string - email: string - password?: string | null - username?: string | null - firstName?: string | null - lastName?: string | null - roles?: Prisma.UserCreaterolesInput | $Enums.Role[] - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: number | null - virtfusionId?: number | null - isMigrated?: boolean - emailVerified?: Date | string | null - isActive?: boolean - avatarUrl?: string | null - companyName?: string | null - phoneNumber?: string | null - billingEmail?: string | null - accountBalance?: runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: string - createdAt?: Date | string - updatedAt?: Date | string - lastLoginAt?: Date | string | null - lastSyncedAt?: Date | string | null - sessions?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput - servers?: Prisma.ServerUncheckedCreateNestedManyWithoutOwnerInput - invoices?: Prisma.InvoiceUncheckedCreateNestedManyWithoutUserInput - tickets?: Prisma.SupportTicketUncheckedCreateNestedManyWithoutUserInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedCreateNestedManyWithoutUserInput - products?: Prisma.ProductUncheckedCreateNestedManyWithoutCreatorInput -} - -export type UserCreateOrConnectWithoutDiscordWebhooksInput = { - where: Prisma.UserWhereUniqueInput - create: Prisma.XOR -} - -export type UserUpsertWithoutDiscordWebhooksInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.UserWhereInput -} - -export type UserUpdateToOneWithWhereWithoutDiscordWebhooksInput = { - where?: Prisma.UserWhereInput - data: Prisma.XOR -} - -export type UserUpdateWithoutDiscordWebhooksInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUpdateManyWithoutUserNestedInput - servers?: Prisma.ServerUpdateManyWithoutOwnerNestedInput - invoices?: Prisma.InvoiceUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUpdateManyWithoutCreatorNestedInput -} - -export type UserUncheckedUpdateWithoutDiscordWebhooksInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - email?: Prisma.StringFieldUpdateOperationsInput | string - password?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - username?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - firstName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - lastName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - roles?: Prisma.UserUpdaterolesInput | $Enums.Role[] - isPterodactylAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isVirtfusionAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - isSystemAdmin?: Prisma.BoolFieldUpdateOperationsInput | boolean - pterodactylId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - virtfusionId?: Prisma.NullableIntFieldUpdateOperationsInput | number | null - isMigrated?: Prisma.BoolFieldUpdateOperationsInput | boolean - emailVerified?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - isActive?: Prisma.BoolFieldUpdateOperationsInput | boolean - avatarUrl?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - companyName?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - phoneNumber?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - billingEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - accountBalance?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string - accountStatus?: Prisma.StringFieldUpdateOperationsInput | string - createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - lastLoginAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - lastSyncedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null - sessions?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput - servers?: Prisma.ServerUncheckedUpdateManyWithoutOwnerNestedInput - invoices?: Prisma.InvoiceUncheckedUpdateManyWithoutUserNestedInput - tickets?: Prisma.SupportTicketUncheckedUpdateManyWithoutUserNestedInput - ticketReplies?: Prisma.SupportTicketReplyUncheckedUpdateManyWithoutUserNestedInput - products?: Prisma.ProductUncheckedUpdateManyWithoutCreatorNestedInput -} - - -/** - * Count Type UserCountOutputType - */ - -export type UserCountOutputType = { - sessions: number - servers: number - discordWebhooks: number - invoices: number - tickets: number - ticketReplies: number - products: number -} - -export type UserCountOutputTypeSelect = { - sessions?: boolean | UserCountOutputTypeCountSessionsArgs - servers?: boolean | UserCountOutputTypeCountServersArgs - discordWebhooks?: boolean | UserCountOutputTypeCountDiscordWebhooksArgs - invoices?: boolean | UserCountOutputTypeCountInvoicesArgs - tickets?: boolean | UserCountOutputTypeCountTicketsArgs - ticketReplies?: boolean | UserCountOutputTypeCountTicketRepliesArgs - products?: boolean | UserCountOutputTypeCountProductsArgs -} - -/** - * UserCountOutputType without action - */ -export type UserCountOutputTypeDefaultArgs = { - /** - * Select specific fields to fetch from the UserCountOutputType - */ - select?: Prisma.UserCountOutputTypeSelect | null -} - -/** - * UserCountOutputType without action - */ -export type UserCountOutputTypeCountSessionsArgs = { - where?: Prisma.SessionWhereInput -} - -/** - * UserCountOutputType without action - */ -export type UserCountOutputTypeCountServersArgs = { - where?: Prisma.ServerWhereInput -} - -/** - * UserCountOutputType without action - */ -export type UserCountOutputTypeCountDiscordWebhooksArgs = { - where?: Prisma.DiscordWebhookWhereInput -} - -/** - * UserCountOutputType without action - */ -export type UserCountOutputTypeCountInvoicesArgs = { - where?: Prisma.InvoiceWhereInput -} - -/** - * UserCountOutputType without action - */ -export type UserCountOutputTypeCountTicketsArgs = { - where?: Prisma.SupportTicketWhereInput -} - -/** - * UserCountOutputType without action - */ -export type UserCountOutputTypeCountTicketRepliesArgs = { - where?: Prisma.SupportTicketReplyWhereInput -} - -/** - * UserCountOutputType without action - */ -export type UserCountOutputTypeCountProductsArgs = { - where?: Prisma.ProductWhereInput -} - - -export type UserSelect = runtime.Types.Extensions.GetSelect<{ - id?: boolean - email?: boolean - password?: boolean - username?: boolean - firstName?: boolean - lastName?: boolean - roles?: boolean - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: boolean - virtfusionId?: boolean - isMigrated?: boolean - emailVerified?: boolean - isActive?: boolean - avatarUrl?: boolean - companyName?: boolean - phoneNumber?: boolean - billingEmail?: boolean - accountBalance?: boolean - accountStatus?: boolean - createdAt?: boolean - updatedAt?: boolean - lastLoginAt?: boolean - lastSyncedAt?: boolean - sessions?: boolean | Prisma.User$sessionsArgs - servers?: boolean | Prisma.User$serversArgs - discordWebhooks?: boolean | Prisma.User$discordWebhooksArgs - invoices?: boolean | Prisma.User$invoicesArgs - tickets?: boolean | Prisma.User$ticketsArgs - ticketReplies?: boolean | Prisma.User$ticketRepliesArgs - products?: boolean | Prisma.User$productsArgs - _count?: boolean | Prisma.UserCountOutputTypeDefaultArgs -}, ExtArgs["result"]["user"]> - -export type UserSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - email?: boolean - password?: boolean - username?: boolean - firstName?: boolean - lastName?: boolean - roles?: boolean - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: boolean - virtfusionId?: boolean - isMigrated?: boolean - emailVerified?: boolean - isActive?: boolean - avatarUrl?: boolean - companyName?: boolean - phoneNumber?: boolean - billingEmail?: boolean - accountBalance?: boolean - accountStatus?: boolean - createdAt?: boolean - updatedAt?: boolean - lastLoginAt?: boolean - lastSyncedAt?: boolean -}, ExtArgs["result"]["user"]> - -export type UserSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - id?: boolean - email?: boolean - password?: boolean - username?: boolean - firstName?: boolean - lastName?: boolean - roles?: boolean - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: boolean - virtfusionId?: boolean - isMigrated?: boolean - emailVerified?: boolean - isActive?: boolean - avatarUrl?: boolean - companyName?: boolean - phoneNumber?: boolean - billingEmail?: boolean - accountBalance?: boolean - accountStatus?: boolean - createdAt?: boolean - updatedAt?: boolean - lastLoginAt?: boolean - lastSyncedAt?: boolean -}, ExtArgs["result"]["user"]> - -export type UserSelectScalar = { - id?: boolean - email?: boolean - password?: boolean - username?: boolean - firstName?: boolean - lastName?: boolean - roles?: boolean - isPterodactylAdmin?: boolean - isVirtfusionAdmin?: boolean - isSystemAdmin?: boolean - pterodactylId?: boolean - virtfusionId?: boolean - isMigrated?: boolean - emailVerified?: boolean - isActive?: boolean - avatarUrl?: boolean - companyName?: boolean - phoneNumber?: boolean - billingEmail?: boolean - accountBalance?: boolean - accountStatus?: boolean - createdAt?: boolean - updatedAt?: boolean - lastLoginAt?: boolean - lastSyncedAt?: boolean -} - -export type UserOmit = runtime.Types.Extensions.GetOmit<"id" | "email" | "password" | "username" | "firstName" | "lastName" | "roles" | "isPterodactylAdmin" | "isVirtfusionAdmin" | "isSystemAdmin" | "pterodactylId" | "virtfusionId" | "isMigrated" | "emailVerified" | "isActive" | "avatarUrl" | "companyName" | "phoneNumber" | "billingEmail" | "accountBalance" | "accountStatus" | "createdAt" | "updatedAt" | "lastLoginAt" | "lastSyncedAt", ExtArgs["result"]["user"]> -export type UserInclude = { - sessions?: boolean | Prisma.User$sessionsArgs - servers?: boolean | Prisma.User$serversArgs - discordWebhooks?: boolean | Prisma.User$discordWebhooksArgs - invoices?: boolean | Prisma.User$invoicesArgs - tickets?: boolean | Prisma.User$ticketsArgs - ticketReplies?: boolean | Prisma.User$ticketRepliesArgs - products?: boolean | Prisma.User$productsArgs - _count?: boolean | Prisma.UserCountOutputTypeDefaultArgs -} -export type UserIncludeCreateManyAndReturn = {} -export type UserIncludeUpdateManyAndReturn = {} - -export type $UserPayload = { - name: "User" - objects: { - sessions: Prisma.$SessionPayload[] - servers: Prisma.$ServerPayload[] - discordWebhooks: Prisma.$DiscordWebhookPayload[] - invoices: Prisma.$InvoicePayload[] - tickets: Prisma.$SupportTicketPayload[] - ticketReplies: Prisma.$SupportTicketReplyPayload[] - products: Prisma.$ProductPayload[] - } - scalars: runtime.Types.Extensions.GetPayloadResult<{ - id: string - email: string - password: string | null - username: string | null - firstName: string | null - lastName: string | null - roles: $Enums.Role[] - isPterodactylAdmin: boolean - isVirtfusionAdmin: boolean - isSystemAdmin: boolean - pterodactylId: number | null - virtfusionId: number | null - isMigrated: boolean - emailVerified: Date | null - isActive: boolean - avatarUrl: string | null - companyName: string | null - phoneNumber: string | null - billingEmail: string | null - accountBalance: runtime.Decimal - accountStatus: string - createdAt: Date - updatedAt: Date - lastLoginAt: Date | null - lastSyncedAt: Date | null - }, ExtArgs["result"]["user"]> - composites: {} -} - -export type UserGetPayload = runtime.Types.Result.GetResult - -export type UserCountArgs = - Omit & { - select?: UserCountAggregateInputType | true - } - -export interface UserDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['User'], meta: { name: 'User' } } - /** - * Find zero or one User that matches the filter. - * @param {UserFindUniqueArgs} args - Arguments to find a User - * @example - * // Get one User - * const user = await prisma.user.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one User that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {UserFindUniqueOrThrowArgs} args - Arguments to find a User - * @example - * // Get one User - * const user = await prisma.user.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first User that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {UserFindFirstArgs} args - Arguments to find a User - * @example - * // Get one User - * const user = await prisma.user.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first User that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {UserFindFirstOrThrowArgs} args - Arguments to find a User - * @example - * // Get one User - * const user = await prisma.user.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more Users that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {UserFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all Users - * const users = await prisma.user.findMany() - * - * // Get first 10 Users - * const users = await prisma.user.findMany({ take: 10 }) - * - * // Only select the `id` - * const userWithIdOnly = await prisma.user.findMany({ select: { id: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a User. - * @param {UserCreateArgs} args - Arguments to create a User. - * @example - * // Create one User - * const User = await prisma.user.create({ - * data: { - * // ... data to create a User - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many Users. - * @param {UserCreateManyArgs} args - Arguments to create many Users. - * @example - * // Create many Users - * const user = await prisma.user.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many Users and returns the data saved in the database. - * @param {UserCreateManyAndReturnArgs} args - Arguments to create many Users. - * @example - * // Create many Users - * const user = await prisma.user.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many Users and only return the `id` - * const userWithIdOnly = await prisma.user.createManyAndReturn({ - * select: { id: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a User. - * @param {UserDeleteArgs} args - Arguments to delete one User. - * @example - * // Delete one User - * const User = await prisma.user.delete({ - * where: { - * // ... filter to delete one User - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one User. - * @param {UserUpdateArgs} args - Arguments to update one User. - * @example - * // Update one User - * const user = await prisma.user.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more Users. - * @param {UserDeleteManyArgs} args - Arguments to filter Users to delete. - * @example - * // Delete a few Users - * const { count } = await prisma.user.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Users. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {UserUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many Users - * const user = await prisma.user.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more Users and returns the data updated in the database. - * @param {UserUpdateManyAndReturnArgs} args - Arguments to update many Users. - * @example - * // Update many Users - * const user = await prisma.user.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more Users and only return the `id` - * const userWithIdOnly = await prisma.user.updateManyAndReturn({ - * select: { id: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one User. - * @param {UserUpsertArgs} args - Arguments to update or create a User. - * @example - * // Update or create a User - * const user = await prisma.user.upsert({ - * create: { - * // ... data to create a User - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the User we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__UserClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of Users. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {UserCountArgs} args - Arguments to filter Users to count. - * @example - * // Count the number of Users - * const count = await prisma.user.count({ - * where: { - * // ... the filter for the Users we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a User. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {UserAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by User. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {UserGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends UserGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: UserGroupByArgs['orderBy'] } - : { orderBy?: UserGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetUserGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the User model - */ -readonly fields: UserFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for User. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__UserClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - sessions = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - servers = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - discordWebhooks = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - invoices = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - tickets = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - ticketReplies = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - products = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the User model - */ -export interface UserFieldRefs { - readonly id: Prisma.FieldRef<"User", 'String'> - readonly email: Prisma.FieldRef<"User", 'String'> - readonly password: Prisma.FieldRef<"User", 'String'> - readonly username: Prisma.FieldRef<"User", 'String'> - readonly firstName: Prisma.FieldRef<"User", 'String'> - readonly lastName: Prisma.FieldRef<"User", 'String'> - readonly roles: Prisma.FieldRef<"User", 'Role[]'> - readonly isPterodactylAdmin: Prisma.FieldRef<"User", 'Boolean'> - readonly isVirtfusionAdmin: Prisma.FieldRef<"User", 'Boolean'> - readonly isSystemAdmin: Prisma.FieldRef<"User", 'Boolean'> - readonly pterodactylId: Prisma.FieldRef<"User", 'Int'> - readonly virtfusionId: Prisma.FieldRef<"User", 'Int'> - readonly isMigrated: Prisma.FieldRef<"User", 'Boolean'> - readonly emailVerified: Prisma.FieldRef<"User", 'DateTime'> - readonly isActive: Prisma.FieldRef<"User", 'Boolean'> - readonly avatarUrl: Prisma.FieldRef<"User", 'String'> - readonly companyName: Prisma.FieldRef<"User", 'String'> - readonly phoneNumber: Prisma.FieldRef<"User", 'String'> - readonly billingEmail: Prisma.FieldRef<"User", 'String'> - readonly accountBalance: Prisma.FieldRef<"User", 'Decimal'> - readonly accountStatus: Prisma.FieldRef<"User", 'String'> - readonly createdAt: Prisma.FieldRef<"User", 'DateTime'> - readonly updatedAt: Prisma.FieldRef<"User", 'DateTime'> - readonly lastLoginAt: Prisma.FieldRef<"User", 'DateTime'> - readonly lastSyncedAt: Prisma.FieldRef<"User", 'DateTime'> -} - - -// Custom InputTypes -/** - * User findUnique - */ -export type UserFindUniqueArgs = { - /** - * Select specific fields to fetch from the User - */ - select?: Prisma.UserSelect | null - /** - * Omit specific fields from the User - */ - omit?: Prisma.UserOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.UserInclude | null - /** - * Filter, which User to fetch. - */ - where: Prisma.UserWhereUniqueInput -} - -/** - * User findUniqueOrThrow - */ -export type UserFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the User - */ - select?: Prisma.UserSelect | null - /** - * Omit specific fields from the User - */ - omit?: Prisma.UserOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.UserInclude | null - /** - * Filter, which User to fetch. - */ - where: Prisma.UserWhereUniqueInput -} - -/** - * User findFirst - */ -export type UserFindFirstArgs = { - /** - * Select specific fields to fetch from the User - */ - select?: Prisma.UserSelect | null - /** - * Omit specific fields from the User - */ - omit?: Prisma.UserOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.UserInclude | null - /** - * Filter, which User to fetch. - */ - where?: Prisma.UserWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Users to fetch. - */ - orderBy?: Prisma.UserOrderByWithRelationInput | Prisma.UserOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Users. - */ - cursor?: Prisma.UserWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Users from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Users. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Users. - */ - distinct?: Prisma.UserScalarFieldEnum | Prisma.UserScalarFieldEnum[] -} - -/** - * User findFirstOrThrow - */ -export type UserFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the User - */ - select?: Prisma.UserSelect | null - /** - * Omit specific fields from the User - */ - omit?: Prisma.UserOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.UserInclude | null - /** - * Filter, which User to fetch. - */ - where?: Prisma.UserWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Users to fetch. - */ - orderBy?: Prisma.UserOrderByWithRelationInput | Prisma.UserOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for Users. - */ - cursor?: Prisma.UserWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Users from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Users. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of Users. - */ - distinct?: Prisma.UserScalarFieldEnum | Prisma.UserScalarFieldEnum[] -} - -/** - * User findMany - */ -export type UserFindManyArgs = { - /** - * Select specific fields to fetch from the User - */ - select?: Prisma.UserSelect | null - /** - * Omit specific fields from the User - */ - omit?: Prisma.UserOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.UserInclude | null - /** - * Filter, which Users to fetch. - */ - where?: Prisma.UserWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of Users to fetch. - */ - orderBy?: Prisma.UserOrderByWithRelationInput | Prisma.UserOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing Users. - */ - cursor?: Prisma.UserWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` Users from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` Users. - */ - skip?: number - distinct?: Prisma.UserScalarFieldEnum | Prisma.UserScalarFieldEnum[] -} - -/** - * User create - */ -export type UserCreateArgs = { - /** - * Select specific fields to fetch from the User - */ - select?: Prisma.UserSelect | null - /** - * Omit specific fields from the User - */ - omit?: Prisma.UserOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.UserInclude | null - /** - * The data needed to create a User. - */ - data: Prisma.XOR -} - -/** - * User createMany - */ -export type UserCreateManyArgs = { - /** - * The data used to create many Users. - */ - data: Prisma.UserCreateManyInput | Prisma.UserCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * User createManyAndReturn - */ -export type UserCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the User - */ - select?: Prisma.UserSelectCreateManyAndReturn | null - /** - * Omit specific fields from the User - */ - omit?: Prisma.UserOmit | null - /** - * The data used to create many Users. - */ - data: Prisma.UserCreateManyInput | Prisma.UserCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * User update - */ -export type UserUpdateArgs = { - /** - * Select specific fields to fetch from the User - */ - select?: Prisma.UserSelect | null - /** - * Omit specific fields from the User - */ - omit?: Prisma.UserOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.UserInclude | null - /** - * The data needed to update a User. - */ - data: Prisma.XOR - /** - * Choose, which User to update. - */ - where: Prisma.UserWhereUniqueInput -} - -/** - * User updateMany - */ -export type UserUpdateManyArgs = { - /** - * The data used to update Users. - */ - data: Prisma.XOR - /** - * Filter which Users to update - */ - where?: Prisma.UserWhereInput - /** - * Limit how many Users to update. - */ - limit?: number -} - -/** - * User updateManyAndReturn - */ -export type UserUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the User - */ - select?: Prisma.UserSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the User - */ - omit?: Prisma.UserOmit | null - /** - * The data used to update Users. - */ - data: Prisma.XOR - /** - * Filter which Users to update - */ - where?: Prisma.UserWhereInput - /** - * Limit how many Users to update. - */ - limit?: number -} - -/** - * User upsert - */ -export type UserUpsertArgs = { - /** - * Select specific fields to fetch from the User - */ - select?: Prisma.UserSelect | null - /** - * Omit specific fields from the User - */ - omit?: Prisma.UserOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.UserInclude | null - /** - * The filter to search for the User to update in case it exists. - */ - where: Prisma.UserWhereUniqueInput - /** - * In case the User found by the `where` argument doesn't exist, create a new User with this data. - */ - create: Prisma.XOR - /** - * In case the User was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * User delete - */ -export type UserDeleteArgs = { - /** - * Select specific fields to fetch from the User - */ - select?: Prisma.UserSelect | null - /** - * Omit specific fields from the User - */ - omit?: Prisma.UserOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.UserInclude | null - /** - * Filter which User to delete. - */ - where: Prisma.UserWhereUniqueInput -} - -/** - * User deleteMany - */ -export type UserDeleteManyArgs = { - /** - * Filter which Users to delete - */ - where?: Prisma.UserWhereInput - /** - * Limit how many Users to delete. - */ - limit?: number -} - -/** - * User.sessions - */ -export type User$sessionsArgs = { - /** - * Select specific fields to fetch from the Session - */ - select?: Prisma.SessionSelect | null - /** - * Omit specific fields from the Session - */ - omit?: Prisma.SessionOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SessionInclude | null - where?: Prisma.SessionWhereInput - orderBy?: Prisma.SessionOrderByWithRelationInput | Prisma.SessionOrderByWithRelationInput[] - cursor?: Prisma.SessionWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.SessionScalarFieldEnum | Prisma.SessionScalarFieldEnum[] -} - -/** - * User.servers - */ -export type User$serversArgs = { - /** - * Select specific fields to fetch from the Server - */ - select?: Prisma.ServerSelect | null - /** - * Omit specific fields from the Server - */ - omit?: Prisma.ServerOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ServerInclude | null - where?: Prisma.ServerWhereInput - orderBy?: Prisma.ServerOrderByWithRelationInput | Prisma.ServerOrderByWithRelationInput[] - cursor?: Prisma.ServerWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.ServerScalarFieldEnum | Prisma.ServerScalarFieldEnum[] -} - -/** - * User.discordWebhooks - */ -export type User$discordWebhooksArgs = { - /** - * Select specific fields to fetch from the DiscordWebhook - */ - select?: Prisma.DiscordWebhookSelect | null - /** - * Omit specific fields from the DiscordWebhook - */ - omit?: Prisma.DiscordWebhookOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.DiscordWebhookInclude | null - where?: Prisma.DiscordWebhookWhereInput - orderBy?: Prisma.DiscordWebhookOrderByWithRelationInput | Prisma.DiscordWebhookOrderByWithRelationInput[] - cursor?: Prisma.DiscordWebhookWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.DiscordWebhookScalarFieldEnum | Prisma.DiscordWebhookScalarFieldEnum[] -} - -/** - * User.invoices - */ -export type User$invoicesArgs = { - /** - * Select specific fields to fetch from the Invoice - */ - select?: Prisma.InvoiceSelect | null - /** - * Omit specific fields from the Invoice - */ - omit?: Prisma.InvoiceOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.InvoiceInclude | null - where?: Prisma.InvoiceWhereInput - orderBy?: Prisma.InvoiceOrderByWithRelationInput | Prisma.InvoiceOrderByWithRelationInput[] - cursor?: Prisma.InvoiceWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.InvoiceScalarFieldEnum | Prisma.InvoiceScalarFieldEnum[] -} - -/** - * User.tickets - */ -export type User$ticketsArgs = { - /** - * Select specific fields to fetch from the SupportTicket - */ - select?: Prisma.SupportTicketSelect | null - /** - * Omit specific fields from the SupportTicket - */ - omit?: Prisma.SupportTicketOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketInclude | null - where?: Prisma.SupportTicketWhereInput - orderBy?: Prisma.SupportTicketOrderByWithRelationInput | Prisma.SupportTicketOrderByWithRelationInput[] - cursor?: Prisma.SupportTicketWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.SupportTicketScalarFieldEnum | Prisma.SupportTicketScalarFieldEnum[] -} - -/** - * User.ticketReplies - */ -export type User$ticketRepliesArgs = { - /** - * Select specific fields to fetch from the SupportTicketReply - */ - select?: Prisma.SupportTicketReplySelect | null - /** - * Omit specific fields from the SupportTicketReply - */ - omit?: Prisma.SupportTicketReplyOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.SupportTicketReplyInclude | null - where?: Prisma.SupportTicketReplyWhereInput - orderBy?: Prisma.SupportTicketReplyOrderByWithRelationInput | Prisma.SupportTicketReplyOrderByWithRelationInput[] - cursor?: Prisma.SupportTicketReplyWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.SupportTicketReplyScalarFieldEnum | Prisma.SupportTicketReplyScalarFieldEnum[] -} - -/** - * User.products - */ -export type User$productsArgs = { - /** - * Select specific fields to fetch from the Product - */ - select?: Prisma.ProductSelect | null - /** - * Omit specific fields from the Product - */ - omit?: Prisma.ProductOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.ProductInclude | null - where?: Prisma.ProductWhereInput - orderBy?: Prisma.ProductOrderByWithRelationInput | Prisma.ProductOrderByWithRelationInput[] - cursor?: Prisma.ProductWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.ProductScalarFieldEnum | Prisma.ProductScalarFieldEnum[] -} - -/** - * User without action - */ -export type UserDefaultArgs = { - /** - * Select specific fields to fetch from the User - */ - select?: Prisma.UserSelect | null - /** - * Omit specific fields from the User - */ - omit?: Prisma.UserOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.UserInclude | null -} diff --git a/prisma/generated/prisma/models/VerificationToken.ts b/prisma/generated/prisma/models/VerificationToken.ts deleted file mode 100644 index cf6afcc..0000000 --- a/prisma/generated/prisma/models/VerificationToken.ts +++ /dev/null @@ -1,1122 +0,0 @@ - -/* !!! This is code generated by Prisma. Do not edit directly. !!! */ -/* eslint-disable */ -// biome-ignore-all lint: generated file -// @ts-nocheck -/* - * This file exports the `VerificationToken` model and its related types. - * - * 🟢 You can import this file directly. - */ -import type * as runtime from "@prisma/client/runtime/client" -import type * as $Enums from "../enums" -import type * as Prisma from "../internal/prismaNamespace" - -/** - * Model VerificationToken - * - */ -export type VerificationTokenModel = runtime.Types.Result.DefaultSelection - -export type AggregateVerificationToken = { - _count: VerificationTokenCountAggregateOutputType | null - _min: VerificationTokenMinAggregateOutputType | null - _max: VerificationTokenMaxAggregateOutputType | null -} - -export type VerificationTokenMinAggregateOutputType = { - identifier: string | null - token: string | null - expires: Date | null - type: string | null -} - -export type VerificationTokenMaxAggregateOutputType = { - identifier: string | null - token: string | null - expires: Date | null - type: string | null -} - -export type VerificationTokenCountAggregateOutputType = { - identifier: number - token: number - expires: number - type: number - _all: number -} - - -export type VerificationTokenMinAggregateInputType = { - identifier?: true - token?: true - expires?: true - type?: true -} - -export type VerificationTokenMaxAggregateInputType = { - identifier?: true - token?: true - expires?: true - type?: true -} - -export type VerificationTokenCountAggregateInputType = { - identifier?: true - token?: true - expires?: true - type?: true - _all?: true -} - -export type VerificationTokenAggregateArgs = { - /** - * Filter which VerificationToken to aggregate. - */ - where?: Prisma.VerificationTokenWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of VerificationTokens to fetch. - */ - orderBy?: Prisma.VerificationTokenOrderByWithRelationInput | Prisma.VerificationTokenOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the start position - */ - cursor?: Prisma.VerificationTokenWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` VerificationTokens from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` VerificationTokens. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Count returned VerificationTokens - **/ - _count?: true | VerificationTokenCountAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the minimum value - **/ - _min?: VerificationTokenMinAggregateInputType - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs} - * - * Select which fields to find the maximum value - **/ - _max?: VerificationTokenMaxAggregateInputType -} - -export type GetVerificationTokenAggregateType = { - [P in keyof T & keyof AggregateVerificationToken]: P extends '_count' | 'count' - ? T[P] extends true - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType -} - - - - -export type VerificationTokenGroupByArgs = { - where?: Prisma.VerificationTokenWhereInput - orderBy?: Prisma.VerificationTokenOrderByWithAggregationInput | Prisma.VerificationTokenOrderByWithAggregationInput[] - by: Prisma.VerificationTokenScalarFieldEnum[] | Prisma.VerificationTokenScalarFieldEnum - having?: Prisma.VerificationTokenScalarWhereWithAggregatesInput - take?: number - skip?: number - _count?: VerificationTokenCountAggregateInputType | true - _min?: VerificationTokenMinAggregateInputType - _max?: VerificationTokenMaxAggregateInputType -} - -export type VerificationTokenGroupByOutputType = { - identifier: string - token: string - expires: Date - type: string - _count: VerificationTokenCountAggregateOutputType | null - _min: VerificationTokenMinAggregateOutputType | null - _max: VerificationTokenMaxAggregateOutputType | null -} - -type GetVerificationTokenGroupByPayload = Prisma.PrismaPromise< - Array< - Prisma.PickEnumerable & - { - [P in ((keyof T) & (keyof VerificationTokenGroupByOutputType))]: P extends '_count' - ? T[P] extends boolean - ? number - : Prisma.GetScalarType - : Prisma.GetScalarType - } - > - > - - - -export type VerificationTokenWhereInput = { - AND?: Prisma.VerificationTokenWhereInput | Prisma.VerificationTokenWhereInput[] - OR?: Prisma.VerificationTokenWhereInput[] - NOT?: Prisma.VerificationTokenWhereInput | Prisma.VerificationTokenWhereInput[] - identifier?: Prisma.StringFilter<"VerificationToken"> | string - token?: Prisma.StringFilter<"VerificationToken"> | string - expires?: Prisma.DateTimeFilter<"VerificationToken"> | Date | string - type?: Prisma.StringFilter<"VerificationToken"> | string -} - -export type VerificationTokenOrderByWithRelationInput = { - identifier?: Prisma.SortOrder - token?: Prisma.SortOrder - expires?: Prisma.SortOrder - type?: Prisma.SortOrder -} - -export type VerificationTokenWhereUniqueInput = Prisma.AtLeast<{ - token?: string - identifier_token?: Prisma.VerificationTokenIdentifierTokenCompoundUniqueInput - AND?: Prisma.VerificationTokenWhereInput | Prisma.VerificationTokenWhereInput[] - OR?: Prisma.VerificationTokenWhereInput[] - NOT?: Prisma.VerificationTokenWhereInput | Prisma.VerificationTokenWhereInput[] - identifier?: Prisma.StringFilter<"VerificationToken"> | string - expires?: Prisma.DateTimeFilter<"VerificationToken"> | Date | string - type?: Prisma.StringFilter<"VerificationToken"> | string -}, "token" | "identifier_token"> - -export type VerificationTokenOrderByWithAggregationInput = { - identifier?: Prisma.SortOrder - token?: Prisma.SortOrder - expires?: Prisma.SortOrder - type?: Prisma.SortOrder - _count?: Prisma.VerificationTokenCountOrderByAggregateInput - _max?: Prisma.VerificationTokenMaxOrderByAggregateInput - _min?: Prisma.VerificationTokenMinOrderByAggregateInput -} - -export type VerificationTokenScalarWhereWithAggregatesInput = { - AND?: Prisma.VerificationTokenScalarWhereWithAggregatesInput | Prisma.VerificationTokenScalarWhereWithAggregatesInput[] - OR?: Prisma.VerificationTokenScalarWhereWithAggregatesInput[] - NOT?: Prisma.VerificationTokenScalarWhereWithAggregatesInput | Prisma.VerificationTokenScalarWhereWithAggregatesInput[] - identifier?: Prisma.StringWithAggregatesFilter<"VerificationToken"> | string - token?: Prisma.StringWithAggregatesFilter<"VerificationToken"> | string - expires?: Prisma.DateTimeWithAggregatesFilter<"VerificationToken"> | Date | string - type?: Prisma.StringWithAggregatesFilter<"VerificationToken"> | string -} - -export type VerificationTokenCreateInput = { - identifier: string - token: string - expires: Date | string - type?: string -} - -export type VerificationTokenUncheckedCreateInput = { - identifier: string - token: string - expires: Date | string - type?: string -} - -export type VerificationTokenUpdateInput = { - identifier?: Prisma.StringFieldUpdateOperationsInput | string - token?: Prisma.StringFieldUpdateOperationsInput | string - expires?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - type?: Prisma.StringFieldUpdateOperationsInput | string -} - -export type VerificationTokenUncheckedUpdateInput = { - identifier?: Prisma.StringFieldUpdateOperationsInput | string - token?: Prisma.StringFieldUpdateOperationsInput | string - expires?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - type?: Prisma.StringFieldUpdateOperationsInput | string -} - -export type VerificationTokenCreateManyInput = { - identifier: string - token: string - expires: Date | string - type?: string -} - -export type VerificationTokenUpdateManyMutationInput = { - identifier?: Prisma.StringFieldUpdateOperationsInput | string - token?: Prisma.StringFieldUpdateOperationsInput | string - expires?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - type?: Prisma.StringFieldUpdateOperationsInput | string -} - -export type VerificationTokenUncheckedUpdateManyInput = { - identifier?: Prisma.StringFieldUpdateOperationsInput | string - token?: Prisma.StringFieldUpdateOperationsInput | string - expires?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - type?: Prisma.StringFieldUpdateOperationsInput | string -} - -export type VerificationTokenIdentifierTokenCompoundUniqueInput = { - identifier: string - token: string -} - -export type VerificationTokenCountOrderByAggregateInput = { - identifier?: Prisma.SortOrder - token?: Prisma.SortOrder - expires?: Prisma.SortOrder - type?: Prisma.SortOrder -} - -export type VerificationTokenMaxOrderByAggregateInput = { - identifier?: Prisma.SortOrder - token?: Prisma.SortOrder - expires?: Prisma.SortOrder - type?: Prisma.SortOrder -} - -export type VerificationTokenMinOrderByAggregateInput = { - identifier?: Prisma.SortOrder - token?: Prisma.SortOrder - expires?: Prisma.SortOrder - type?: Prisma.SortOrder -} - - - -export type VerificationTokenSelect = runtime.Types.Extensions.GetSelect<{ - identifier?: boolean - token?: boolean - expires?: boolean - type?: boolean -}, ExtArgs["result"]["verificationToken"]> - -export type VerificationTokenSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - identifier?: boolean - token?: boolean - expires?: boolean - type?: boolean -}, ExtArgs["result"]["verificationToken"]> - -export type VerificationTokenSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{ - identifier?: boolean - token?: boolean - expires?: boolean - type?: boolean -}, ExtArgs["result"]["verificationToken"]> - -export type VerificationTokenSelectScalar = { - identifier?: boolean - token?: boolean - expires?: boolean - type?: boolean -} - -export type VerificationTokenOmit = runtime.Types.Extensions.GetOmit<"identifier" | "token" | "expires" | "type", ExtArgs["result"]["verificationToken"]> - -export type $VerificationTokenPayload = { - name: "VerificationToken" - objects: {} - scalars: runtime.Types.Extensions.GetPayloadResult<{ - identifier: string - token: string - expires: Date - type: string - }, ExtArgs["result"]["verificationToken"]> - composites: {} -} - -export type VerificationTokenGetPayload = runtime.Types.Result.GetResult - -export type VerificationTokenCountArgs = - Omit & { - select?: VerificationTokenCountAggregateInputType | true - } - -export interface VerificationTokenDelegate { - [K: symbol]: { types: Prisma.TypeMap['model']['VerificationToken'], meta: { name: 'VerificationToken' } } - /** - * Find zero or one VerificationToken that matches the filter. - * @param {VerificationTokenFindUniqueArgs} args - Arguments to find a VerificationToken - * @example - * // Get one VerificationToken - * const verificationToken = await prisma.verificationToken.findUnique({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__VerificationTokenClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find one VerificationToken that matches the filter or throw an error with `error.code='P2025'` - * if no matches were found. - * @param {VerificationTokenFindUniqueOrThrowArgs} args - Arguments to find a VerificationToken - * @example - * // Get one VerificationToken - * const verificationToken = await prisma.verificationToken.findUniqueOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__VerificationTokenClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find the first VerificationToken that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {VerificationTokenFindFirstArgs} args - Arguments to find a VerificationToken - * @example - * // Get one VerificationToken - * const verificationToken = await prisma.verificationToken.findFirst({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__VerificationTokenClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - - /** - * Find the first VerificationToken that matches the filter or - * throw `PrismaKnownClientError` with `P2025` code if no matches were found. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {VerificationTokenFindFirstOrThrowArgs} args - Arguments to find a VerificationToken - * @example - * // Get one VerificationToken - * const verificationToken = await prisma.verificationToken.findFirstOrThrow({ - * where: { - * // ... provide filter here - * } - * }) - */ - findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__VerificationTokenClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Find zero or more VerificationTokens that matches the filter. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {VerificationTokenFindManyArgs} args - Arguments to filter and select certain fields only. - * @example - * // Get all VerificationTokens - * const verificationTokens = await prisma.verificationToken.findMany() - * - * // Get first 10 VerificationTokens - * const verificationTokens = await prisma.verificationToken.findMany({ take: 10 }) - * - * // Only select the `identifier` - * const verificationTokenWithIdentifierOnly = await prisma.verificationToken.findMany({ select: { identifier: true } }) - * - */ - findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>> - - /** - * Create a VerificationToken. - * @param {VerificationTokenCreateArgs} args - Arguments to create a VerificationToken. - * @example - * // Create one VerificationToken - * const VerificationToken = await prisma.verificationToken.create({ - * data: { - * // ... data to create a VerificationToken - * } - * }) - * - */ - create(args: Prisma.SelectSubset>): Prisma.Prisma__VerificationTokenClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Create many VerificationTokens. - * @param {VerificationTokenCreateManyArgs} args - Arguments to create many VerificationTokens. - * @example - * // Create many VerificationTokens - * const verificationToken = await prisma.verificationToken.createMany({ - * data: [ - * // ... provide data here - * ] - * }) - * - */ - createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Create many VerificationTokens and returns the data saved in the database. - * @param {VerificationTokenCreateManyAndReturnArgs} args - Arguments to create many VerificationTokens. - * @example - * // Create many VerificationTokens - * const verificationToken = await prisma.verificationToken.createManyAndReturn({ - * data: [ - * // ... provide data here - * ] - * }) - * - * // Create many VerificationTokens and only return the `identifier` - * const verificationTokenWithIdentifierOnly = await prisma.verificationToken.createManyAndReturn({ - * select: { identifier: true }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>> - - /** - * Delete a VerificationToken. - * @param {VerificationTokenDeleteArgs} args - Arguments to delete one VerificationToken. - * @example - * // Delete one VerificationToken - * const VerificationToken = await prisma.verificationToken.delete({ - * where: { - * // ... filter to delete one VerificationToken - * } - * }) - * - */ - delete(args: Prisma.SelectSubset>): Prisma.Prisma__VerificationTokenClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Update one VerificationToken. - * @param {VerificationTokenUpdateArgs} args - Arguments to update one VerificationToken. - * @example - * // Update one VerificationToken - * const verificationToken = await prisma.verificationToken.update({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - update(args: Prisma.SelectSubset>): Prisma.Prisma__VerificationTokenClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - /** - * Delete zero or more VerificationTokens. - * @param {VerificationTokenDeleteManyArgs} args - Arguments to filter VerificationTokens to delete. - * @example - * // Delete a few VerificationTokens - * const { count } = await prisma.verificationToken.deleteMany({ - * where: { - * // ... provide filter here - * } - * }) - * - */ - deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more VerificationTokens. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {VerificationTokenUpdateManyArgs} args - Arguments to update one or more rows. - * @example - * // Update many VerificationTokens - * const verificationToken = await prisma.verificationToken.updateMany({ - * where: { - * // ... provide filter here - * }, - * data: { - * // ... provide data here - * } - * }) - * - */ - updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise - - /** - * Update zero or more VerificationTokens and returns the data updated in the database. - * @param {VerificationTokenUpdateManyAndReturnArgs} args - Arguments to update many VerificationTokens. - * @example - * // Update many VerificationTokens - * const verificationToken = await prisma.verificationToken.updateManyAndReturn({ - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * - * // Update zero or more VerificationTokens and only return the `identifier` - * const verificationTokenWithIdentifierOnly = await prisma.verificationToken.updateManyAndReturn({ - * select: { identifier: true }, - * where: { - * // ... provide filter here - * }, - * data: [ - * // ... provide data here - * ] - * }) - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * - */ - updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>> - - /** - * Create or update one VerificationToken. - * @param {VerificationTokenUpsertArgs} args - Arguments to update or create a VerificationToken. - * @example - * // Update or create a VerificationToken - * const verificationToken = await prisma.verificationToken.upsert({ - * create: { - * // ... data to create a VerificationToken - * }, - * update: { - * // ... in case it already exists, update - * }, - * where: { - * // ... the filter for the VerificationToken we want to update - * } - * }) - */ - upsert(args: Prisma.SelectSubset>): Prisma.Prisma__VerificationTokenClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions> - - - /** - * Count the number of VerificationTokens. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {VerificationTokenCountArgs} args - Arguments to filter VerificationTokens to count. - * @example - * // Count the number of VerificationTokens - * const count = await prisma.verificationToken.count({ - * where: { - * // ... the filter for the VerificationTokens we want to count - * } - * }) - **/ - count( - args?: Prisma.Subset, - ): Prisma.PrismaPromise< - T extends runtime.Types.Utils.Record<'select', any> - ? T['select'] extends true - ? number - : Prisma.GetScalarType - : number - > - - /** - * Allows you to perform aggregations operations on a VerificationToken. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {VerificationTokenAggregateArgs} args - Select which aggregations you would like to apply and on what fields. - * @example - * // Ordered by age ascending - * // Where email contains prisma.io - * // Limited to the 10 users - * const aggregations = await prisma.user.aggregate({ - * _avg: { - * age: true, - * }, - * where: { - * email: { - * contains: "prisma.io", - * }, - * }, - * orderBy: { - * age: "asc", - * }, - * take: 10, - * }) - **/ - aggregate(args: Prisma.Subset): Prisma.PrismaPromise> - - /** - * Group by VerificationToken. - * Note, that providing `undefined` is treated as the value not being there. - * Read more here: https://pris.ly/d/null-undefined - * @param {VerificationTokenGroupByArgs} args - Group by arguments. - * @example - * // Group by city, order by createdAt, get count - * const result = await prisma.user.groupBy({ - * by: ['city', 'createdAt'], - * orderBy: { - * createdAt: true - * }, - * _count: { - * _all: true - * }, - * }) - * - **/ - groupBy< - T extends VerificationTokenGroupByArgs, - HasSelectOrTake extends Prisma.Or< - Prisma.Extends<'skip', Prisma.Keys>, - Prisma.Extends<'take', Prisma.Keys> - >, - OrderByArg extends Prisma.True extends HasSelectOrTake - ? { orderBy: VerificationTokenGroupByArgs['orderBy'] } - : { orderBy?: VerificationTokenGroupByArgs['orderBy'] }, - OrderFields extends Prisma.ExcludeUnderscoreKeys>>, - ByFields extends Prisma.MaybeTupleToUnion, - ByValid extends Prisma.Has, - HavingFields extends Prisma.GetHavingFields, - HavingValid extends Prisma.Has, - ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False, - InputErrors extends ByEmpty extends Prisma.True - ? `Error: "by" must not be empty.` - : HavingValid extends Prisma.False - ? { - [P in HavingFields]: P extends ByFields - ? never - : P extends string - ? `Error: Field "${P}" used in "having" needs to be provided in "by".` - : [ - Error, - 'Field ', - P, - ` in "having" needs to be provided in "by"`, - ] - }[HavingFields] - : 'take' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "take", you also need to provide "orderBy"' - : 'skip' extends Prisma.Keys - ? 'orderBy' extends Prisma.Keys - ? ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - : 'Error: If you provide "skip", you also need to provide "orderBy"' - : ByValid extends Prisma.True - ? {} - : { - [P in OrderFields]: P extends ByFields - ? never - : `Error: Field "${P}" in "orderBy" needs to be provided in "by"` - }[OrderFields] - >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetVerificationTokenGroupByPayload : Prisma.PrismaPromise -/** - * Fields of the VerificationToken model - */ -readonly fields: VerificationTokenFieldRefs; -} - -/** - * The delegate class that acts as a "Promise-like" for VerificationToken. - * Why is this prefixed with `Prisma__`? - * Because we want to prevent naming conflicts as mentioned in - * https://github.com/prisma/prisma-client-js/issues/707 - */ -export interface Prisma__VerificationTokenClient extends Prisma.PrismaPromise { - readonly [Symbol.toStringTag]: "PrismaPromise" - /** - * Attaches callbacks for the resolution and/or rejection of the Promise. - * @param onfulfilled The callback to execute when the Promise is resolved. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of which ever callback is executed. - */ - then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback for only the rejection of the Promise. - * @param onrejected The callback to execute when the Promise is rejected. - * @returns A Promise for the completion of the callback. - */ - catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise - /** - * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The - * resolved value cannot be modified from the callback. - * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected). - * @returns A Promise for the completion of the callback. - */ - finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise -} - - - - -/** - * Fields of the VerificationToken model - */ -export interface VerificationTokenFieldRefs { - readonly identifier: Prisma.FieldRef<"VerificationToken", 'String'> - readonly token: Prisma.FieldRef<"VerificationToken", 'String'> - readonly expires: Prisma.FieldRef<"VerificationToken", 'DateTime'> - readonly type: Prisma.FieldRef<"VerificationToken", 'String'> -} - - -// Custom InputTypes -/** - * VerificationToken findUnique - */ -export type VerificationTokenFindUniqueArgs = { - /** - * Select specific fields to fetch from the VerificationToken - */ - select?: Prisma.VerificationTokenSelect | null - /** - * Omit specific fields from the VerificationToken - */ - omit?: Prisma.VerificationTokenOmit | null - /** - * Filter, which VerificationToken to fetch. - */ - where: Prisma.VerificationTokenWhereUniqueInput -} - -/** - * VerificationToken findUniqueOrThrow - */ -export type VerificationTokenFindUniqueOrThrowArgs = { - /** - * Select specific fields to fetch from the VerificationToken - */ - select?: Prisma.VerificationTokenSelect | null - /** - * Omit specific fields from the VerificationToken - */ - omit?: Prisma.VerificationTokenOmit | null - /** - * Filter, which VerificationToken to fetch. - */ - where: Prisma.VerificationTokenWhereUniqueInput -} - -/** - * VerificationToken findFirst - */ -export type VerificationTokenFindFirstArgs = { - /** - * Select specific fields to fetch from the VerificationToken - */ - select?: Prisma.VerificationTokenSelect | null - /** - * Omit specific fields from the VerificationToken - */ - omit?: Prisma.VerificationTokenOmit | null - /** - * Filter, which VerificationToken to fetch. - */ - where?: Prisma.VerificationTokenWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of VerificationTokens to fetch. - */ - orderBy?: Prisma.VerificationTokenOrderByWithRelationInput | Prisma.VerificationTokenOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for VerificationTokens. - */ - cursor?: Prisma.VerificationTokenWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` VerificationTokens from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` VerificationTokens. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of VerificationTokens. - */ - distinct?: Prisma.VerificationTokenScalarFieldEnum | Prisma.VerificationTokenScalarFieldEnum[] -} - -/** - * VerificationToken findFirstOrThrow - */ -export type VerificationTokenFindFirstOrThrowArgs = { - /** - * Select specific fields to fetch from the VerificationToken - */ - select?: Prisma.VerificationTokenSelect | null - /** - * Omit specific fields from the VerificationToken - */ - omit?: Prisma.VerificationTokenOmit | null - /** - * Filter, which VerificationToken to fetch. - */ - where?: Prisma.VerificationTokenWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of VerificationTokens to fetch. - */ - orderBy?: Prisma.VerificationTokenOrderByWithRelationInput | Prisma.VerificationTokenOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for searching for VerificationTokens. - */ - cursor?: Prisma.VerificationTokenWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` VerificationTokens from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` VerificationTokens. - */ - skip?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs} - * - * Filter by unique combinations of VerificationTokens. - */ - distinct?: Prisma.VerificationTokenScalarFieldEnum | Prisma.VerificationTokenScalarFieldEnum[] -} - -/** - * VerificationToken findMany - */ -export type VerificationTokenFindManyArgs = { - /** - * Select specific fields to fetch from the VerificationToken - */ - select?: Prisma.VerificationTokenSelect | null - /** - * Omit specific fields from the VerificationToken - */ - omit?: Prisma.VerificationTokenOmit | null - /** - * Filter, which VerificationTokens to fetch. - */ - where?: Prisma.VerificationTokenWhereInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs} - * - * Determine the order of VerificationTokens to fetch. - */ - orderBy?: Prisma.VerificationTokenOrderByWithRelationInput | Prisma.VerificationTokenOrderByWithRelationInput[] - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs} - * - * Sets the position for listing VerificationTokens. - */ - cursor?: Prisma.VerificationTokenWhereUniqueInput - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Take `±n` VerificationTokens from the position of the cursor. - */ - take?: number - /** - * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs} - * - * Skip the first `n` VerificationTokens. - */ - skip?: number - distinct?: Prisma.VerificationTokenScalarFieldEnum | Prisma.VerificationTokenScalarFieldEnum[] -} - -/** - * VerificationToken create - */ -export type VerificationTokenCreateArgs = { - /** - * Select specific fields to fetch from the VerificationToken - */ - select?: Prisma.VerificationTokenSelect | null - /** - * Omit specific fields from the VerificationToken - */ - omit?: Prisma.VerificationTokenOmit | null - /** - * The data needed to create a VerificationToken. - */ - data: Prisma.XOR -} - -/** - * VerificationToken createMany - */ -export type VerificationTokenCreateManyArgs = { - /** - * The data used to create many VerificationTokens. - */ - data: Prisma.VerificationTokenCreateManyInput | Prisma.VerificationTokenCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * VerificationToken createManyAndReturn - */ -export type VerificationTokenCreateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the VerificationToken - */ - select?: Prisma.VerificationTokenSelectCreateManyAndReturn | null - /** - * Omit specific fields from the VerificationToken - */ - omit?: Prisma.VerificationTokenOmit | null - /** - * The data used to create many VerificationTokens. - */ - data: Prisma.VerificationTokenCreateManyInput | Prisma.VerificationTokenCreateManyInput[] - skipDuplicates?: boolean -} - -/** - * VerificationToken update - */ -export type VerificationTokenUpdateArgs = { - /** - * Select specific fields to fetch from the VerificationToken - */ - select?: Prisma.VerificationTokenSelect | null - /** - * Omit specific fields from the VerificationToken - */ - omit?: Prisma.VerificationTokenOmit | null - /** - * The data needed to update a VerificationToken. - */ - data: Prisma.XOR - /** - * Choose, which VerificationToken to update. - */ - where: Prisma.VerificationTokenWhereUniqueInput -} - -/** - * VerificationToken updateMany - */ -export type VerificationTokenUpdateManyArgs = { - /** - * The data used to update VerificationTokens. - */ - data: Prisma.XOR - /** - * Filter which VerificationTokens to update - */ - where?: Prisma.VerificationTokenWhereInput - /** - * Limit how many VerificationTokens to update. - */ - limit?: number -} - -/** - * VerificationToken updateManyAndReturn - */ -export type VerificationTokenUpdateManyAndReturnArgs = { - /** - * Select specific fields to fetch from the VerificationToken - */ - select?: Prisma.VerificationTokenSelectUpdateManyAndReturn | null - /** - * Omit specific fields from the VerificationToken - */ - omit?: Prisma.VerificationTokenOmit | null - /** - * The data used to update VerificationTokens. - */ - data: Prisma.XOR - /** - * Filter which VerificationTokens to update - */ - where?: Prisma.VerificationTokenWhereInput - /** - * Limit how many VerificationTokens to update. - */ - limit?: number -} - -/** - * VerificationToken upsert - */ -export type VerificationTokenUpsertArgs = { - /** - * Select specific fields to fetch from the VerificationToken - */ - select?: Prisma.VerificationTokenSelect | null - /** - * Omit specific fields from the VerificationToken - */ - omit?: Prisma.VerificationTokenOmit | null - /** - * The filter to search for the VerificationToken to update in case it exists. - */ - where: Prisma.VerificationTokenWhereUniqueInput - /** - * In case the VerificationToken found by the `where` argument doesn't exist, create a new VerificationToken with this data. - */ - create: Prisma.XOR - /** - * In case the VerificationToken was found with the provided `where` argument, update it with this data. - */ - update: Prisma.XOR -} - -/** - * VerificationToken delete - */ -export type VerificationTokenDeleteArgs = { - /** - * Select specific fields to fetch from the VerificationToken - */ - select?: Prisma.VerificationTokenSelect | null - /** - * Omit specific fields from the VerificationToken - */ - omit?: Prisma.VerificationTokenOmit | null - /** - * Filter which VerificationToken to delete. - */ - where: Prisma.VerificationTokenWhereUniqueInput -} - -/** - * VerificationToken deleteMany - */ -export type VerificationTokenDeleteManyArgs = { - /** - * Filter which VerificationTokens to delete - */ - where?: Prisma.VerificationTokenWhereInput - /** - * Limit how many VerificationTokens to delete. - */ - limit?: number -} - -/** - * VerificationToken without action - */ -export type VerificationTokenDefaultArgs = { - /** - * Select specific fields to fetch from the VerificationToken - */ - select?: Prisma.VerificationTokenSelect | null - /** - * Omit specific fields from the VerificationToken - */ - omit?: Prisma.VerificationTokenOmit | null -} diff --git a/prisma/migrations/20251222064534_init/migration.sql b/prisma/migrations/20251222064534_init/migration.sql deleted file mode 100644 index fe97245..0000000 --- a/prisma/migrations/20251222064534_init/migration.sql +++ /dev/null @@ -1,55 +0,0 @@ --- CreateTable -CREATE TABLE "users" ( - "id" TEXT NOT NULL, - "email" TEXT NOT NULL, - "password" TEXT NOT NULL, - "username" TEXT NOT NULL, - "firstName" TEXT, - "lastName" TEXT, - "isAdmin" BOOLEAN NOT NULL DEFAULT false, - "pterodactylId" INTEGER, - "emailVerified" TIMESTAMP(3), - "isActive" BOOLEAN NOT NULL DEFAULT true, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - "lastLoginAt" TIMESTAMP(3), - - CONSTRAINT "users_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "sessions" ( - "id" TEXT NOT NULL, - "sessionToken" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "expires" TIMESTAMP(3) NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - - CONSTRAINT "sessions_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "verification_tokens" ( - "identifier" TEXT NOT NULL, - "token" TEXT NOT NULL, - "expires" TIMESTAMP(3) NOT NULL, - "type" TEXT NOT NULL DEFAULT 'email' -); - --- CreateIndex -CREATE UNIQUE INDEX "users_email_key" ON "users"("email"); - --- CreateIndex -CREATE UNIQUE INDEX "users_pterodactylId_key" ON "users"("pterodactylId"); - --- CreateIndex -CREATE UNIQUE INDEX "sessions_sessionToken_key" ON "sessions"("sessionToken"); - --- CreateIndex -CREATE UNIQUE INDEX "verification_tokens_token_key" ON "verification_tokens"("token"); - --- CreateIndex -CREATE UNIQUE INDEX "verification_tokens_identifier_token_key" ON "verification_tokens"("identifier", "token"); - --- AddForeignKey -ALTER TABLE "sessions" ADD CONSTRAINT "sessions_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20251222070550_start_ptero_sync_support/migration.sql b/prisma/migrations/20251222070550_start_ptero_sync_support/migration.sql deleted file mode 100644 index 5a55108..0000000 --- a/prisma/migrations/20251222070550_start_ptero_sync_support/migration.sql +++ /dev/null @@ -1,267 +0,0 @@ --- CreateEnum -CREATE TYPE "ServerStatus" AS ENUM ('INSTALLING', 'INSTALL_FAILED', 'SUSPENDED', 'RESTORING_BACKUP', 'RUNNING', 'OFFLINE', 'STARTING', 'STOPPING'); - --- CreateEnum -CREATE TYPE "SyncStatus" AS ENUM ('PENDING', 'RUNNING', 'COMPLETED', 'FAILED'); - --- AlterTable -ALTER TABLE "users" ADD COLUMN "lastSyncedAt" TIMESTAMP(3); - --- CreateTable -CREATE TABLE "locations" ( - "id" INTEGER NOT NULL, - "shortCode" TEXT NOT NULL, - "description" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "locations_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "nodes" ( - "id" INTEGER NOT NULL, - "uuid" TEXT NOT NULL, - "name" TEXT NOT NULL, - "description" TEXT, - "fqdn" TEXT NOT NULL, - "scheme" TEXT NOT NULL DEFAULT 'https', - "behindProxy" BOOLEAN NOT NULL DEFAULT false, - "memory" BIGINT NOT NULL, - "memoryOverallocate" INTEGER NOT NULL DEFAULT 0, - "disk" BIGINT NOT NULL, - "diskOverallocate" INTEGER NOT NULL DEFAULT 0, - "isPublic" BOOLEAN NOT NULL DEFAULT true, - "isMaintenanceMode" BOOLEAN NOT NULL DEFAULT false, - "daemonListenPort" INTEGER NOT NULL DEFAULT 8080, - "daemonSftpPort" INTEGER NOT NULL DEFAULT 2022, - "daemonBase" TEXT NOT NULL DEFAULT '/var/lib/pterodactyl/volumes', - "locationId" INTEGER NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "nodes_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "allocations" ( - "id" INTEGER NOT NULL, - "ip" TEXT NOT NULL, - "port" INTEGER NOT NULL, - "alias" TEXT, - "notes" TEXT, - "isAssigned" BOOLEAN NOT NULL DEFAULT false, - "nodeId" INTEGER NOT NULL, - "serverId" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "allocations_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "nests" ( - "id" INTEGER NOT NULL, - "uuid" TEXT NOT NULL, - "name" TEXT NOT NULL, - "description" TEXT, - "author" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "nests_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "eggs" ( - "id" INTEGER NOT NULL, - "uuid" TEXT NOT NULL, - "name" TEXT NOT NULL, - "description" TEXT, - "author" TEXT, - "dockerImage" TEXT, - "dockerImages" JSONB, - "startup" TEXT, - "configFrom" INTEGER, - "scriptIsPrivileged" BOOLEAN NOT NULL DEFAULT false, - "copyScriptFrom" INTEGER, - "nestId" INTEGER NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "eggs_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "egg_variables" ( - "id" INTEGER NOT NULL, - "eggId" INTEGER NOT NULL, - "name" TEXT NOT NULL, - "description" TEXT, - "envVariable" TEXT NOT NULL, - "defaultValue" TEXT, - "userViewable" BOOLEAN NOT NULL DEFAULT true, - "userEditable" BOOLEAN NOT NULL DEFAULT true, - "rules" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "egg_variables_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "servers" ( - "id" TEXT NOT NULL, - "pterodactylId" INTEGER NOT NULL, - "uuid" TEXT NOT NULL, - "uuidShort" TEXT, - "externalId" TEXT, - "name" TEXT NOT NULL, - "description" TEXT, - "status" "ServerStatus" NOT NULL DEFAULT 'INSTALLING', - "isSuspended" BOOLEAN NOT NULL DEFAULT false, - "memory" INTEGER NOT NULL, - "swap" INTEGER NOT NULL DEFAULT 0, - "disk" INTEGER NOT NULL, - "io" INTEGER NOT NULL DEFAULT 500, - "cpu" INTEGER NOT NULL, - "oomDisabled" BOOLEAN NOT NULL DEFAULT false, - "databaseLimit" INTEGER NOT NULL DEFAULT 0, - "allocationLimit" INTEGER NOT NULL DEFAULT 0, - "backupLimit" INTEGER NOT NULL DEFAULT 0, - "startup" TEXT, - "image" TEXT, - "featureLimits" JSONB, - "ownerId" TEXT NOT NULL, - "nodeId" INTEGER NOT NULL, - "eggId" INTEGER NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - "installedAt" TIMESTAMP(3), - "lastSyncedAt" TIMESTAMP(3), - - CONSTRAINT "servers_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "server_variables" ( - "id" TEXT NOT NULL, - "serverId" TEXT NOT NULL, - "variableId" INTEGER NOT NULL, - "value" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "server_variables_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "server_databases" ( - "id" INTEGER NOT NULL, - "serverId" TEXT NOT NULL, - "name" TEXT NOT NULL, - "username" TEXT NOT NULL, - "host" TEXT NOT NULL, - "port" INTEGER NOT NULL DEFAULT 3306, - "maxConnections" INTEGER NOT NULL DEFAULT 0, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "server_databases_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "server_backups" ( - "id" TEXT NOT NULL, - "serverId" TEXT NOT NULL, - "name" TEXT NOT NULL, - "ignoredFiles" JSONB, - "sha256Hash" TEXT, - "bytes" BIGINT NOT NULL DEFAULT 0, - "isSuccessful" BOOLEAN NOT NULL DEFAULT false, - "isLocked" BOOLEAN NOT NULL DEFAULT false, - "completedAt" TIMESTAMP(3), - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "server_backups_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "sync_logs" ( - "id" TEXT NOT NULL, - "type" TEXT NOT NULL, - "status" "SyncStatus" NOT NULL DEFAULT 'PENDING', - "itemsTotal" INTEGER NOT NULL DEFAULT 0, - "itemsSynced" INTEGER NOT NULL DEFAULT 0, - "itemsFailed" INTEGER NOT NULL DEFAULT 0, - "error" TEXT, - "metadata" JSONB, - "startedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "completedAt" TIMESTAMP(3), - - CONSTRAINT "sync_logs_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "locations_shortCode_key" ON "locations"("shortCode"); - --- CreateIndex -CREATE UNIQUE INDEX "nodes_uuid_key" ON "nodes"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "allocations_ip_port_key" ON "allocations"("ip", "port"); - --- CreateIndex -CREATE UNIQUE INDEX "nests_uuid_key" ON "nests"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "eggs_uuid_key" ON "eggs"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "servers_pterodactylId_key" ON "servers"("pterodactylId"); - --- CreateIndex -CREATE UNIQUE INDEX "servers_uuid_key" ON "servers"("uuid"); - --- CreateIndex -CREATE UNIQUE INDEX "servers_externalId_key" ON "servers"("externalId"); - --- CreateIndex -CREATE UNIQUE INDEX "server_variables_serverId_variableId_key" ON "server_variables"("serverId", "variableId"); - --- AddForeignKey -ALTER TABLE "nodes" ADD CONSTRAINT "nodes_locationId_fkey" FOREIGN KEY ("locationId") REFERENCES "locations"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "allocations" ADD CONSTRAINT "allocations_nodeId_fkey" FOREIGN KEY ("nodeId") REFERENCES "nodes"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "allocations" ADD CONSTRAINT "allocations_serverId_fkey" FOREIGN KEY ("serverId") REFERENCES "servers"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "eggs" ADD CONSTRAINT "eggs_nestId_fkey" FOREIGN KEY ("nestId") REFERENCES "nests"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "egg_variables" ADD CONSTRAINT "egg_variables_eggId_fkey" FOREIGN KEY ("eggId") REFERENCES "eggs"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "servers" ADD CONSTRAINT "servers_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "users"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "servers" ADD CONSTRAINT "servers_nodeId_fkey" FOREIGN KEY ("nodeId") REFERENCES "nodes"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "servers" ADD CONSTRAINT "servers_eggId_fkey" FOREIGN KEY ("eggId") REFERENCES "eggs"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "server_variables" ADD CONSTRAINT "server_variables_serverId_fkey" FOREIGN KEY ("serverId") REFERENCES "servers"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "server_variables" ADD CONSTRAINT "server_variables_variableId_fkey" FOREIGN KEY ("variableId") REFERENCES "egg_variables"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "server_databases" ADD CONSTRAINT "server_databases_serverId_fkey" FOREIGN KEY ("serverId") REFERENCES "servers"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "server_backups" ADD CONSTRAINT "server_backups_serverId_fkey" FOREIGN KEY ("serverId") REFERENCES "servers"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20251222073602_add_is_migrated_field/migration.sql b/prisma/migrations/20251222073602_add_is_migrated_field/migration.sql deleted file mode 100644 index d11aa50..0000000 --- a/prisma/migrations/20251222073602_add_is_migrated_field/migration.sql +++ /dev/null @@ -1,3 +0,0 @@ --- AlterTable -ALTER TABLE "users" ADD COLUMN "isMigrated" BOOLEAN NOT NULL DEFAULT false, -ALTER COLUMN "password" DROP NOT NULL; diff --git a/prisma/migrations/20251222210058_add_system_settings_table/migration.sql b/prisma/migrations/20251222210058_add_system_settings_table/migration.sql deleted file mode 100644 index c84c789..0000000 --- a/prisma/migrations/20251222210058_add_system_settings_table/migration.sql +++ /dev/null @@ -1,21 +0,0 @@ --- CreateTable -CREATE TABLE "system_settings" ( - "id" TEXT NOT NULL, - "pterodactylUrl" TEXT, - "pterodactylApiKey" TEXT, - "registrationEnabled" BOOLEAN NOT NULL DEFAULT true, - "maintenanceMode" BOOLEAN NOT NULL DEFAULT false, - "autoSyncEnabled" BOOLEAN NOT NULL DEFAULT true, - "emailNotifications" BOOLEAN NOT NULL DEFAULT true, - "discordNotifications" BOOLEAN NOT NULL DEFAULT false, - "discordWebhook" TEXT, - "cacheTimeout" INTEGER NOT NULL DEFAULT 60, - "syncInterval" INTEGER NOT NULL DEFAULT 3600, - "adminEmail" TEXT, - "siteName" TEXT NOT NULL DEFAULT 'NodeByte Hosting', - "siteUrl" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "system_settings_pkey" PRIMARY KEY ("id") -); diff --git a/prisma/migrations/20251222211923_add_crowdin_resend_discord_settings/migration.sql b/prisma/migrations/20251222211923_add_crowdin_resend_discord_settings/migration.sql deleted file mode 100644 index da560b8..0000000 --- a/prisma/migrations/20251222211923_add_crowdin_resend_discord_settings/migration.sql +++ /dev/null @@ -1,13 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `discordWebhook` on the `system_settings` table. All the data in the column will be lost. - -*/ --- AlterTable -ALTER TABLE "system_settings" DROP COLUMN "discordWebhook", -ADD COLUMN "crowdinPersonalToken" TEXT, -ADD COLUMN "crowdinProjectId" TEXT, -ADD COLUMN "discordWebhooks" TEXT, -ADD COLUMN "pterodactylApi" TEXT, -ADD COLUMN "resendApiKey" TEXT; diff --git a/prisma/migrations/20251222213127_add_github_token_to_settings/migration.sql b/prisma/migrations/20251222213127_add_github_token_to_settings/migration.sql deleted file mode 100644 index 207d001..0000000 --- a/prisma/migrations/20251222213127_add_github_token_to_settings/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "system_settings" ADD COLUMN "githubToken" TEXT; diff --git a/prisma/migrations/20251223015040_add_discord_webhook_model_with_types_and_scopes/migration.sql b/prisma/migrations/20251223015040_add_discord_webhook_model_with_types_and_scopes/migration.sql deleted file mode 100644 index 3b20ab1..0000000 --- a/prisma/migrations/20251223015040_add_discord_webhook_model_with_types_and_scopes/migration.sql +++ /dev/null @@ -1,39 +0,0 @@ --- CreateEnum -CREATE TYPE "DiscordWebhookType" AS ENUM ('GAME_SERVER', 'VPS', 'SYSTEM', 'BILLING', 'SECURITY', 'CUSTOM'); - --- CreateEnum -CREATE TYPE "DiscordWebhookScope" AS ENUM ('ADMIN', 'USER', 'PUBLIC'); - --- CreateTable -CREATE TABLE "discord_webhooks" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "webhookUrl" TEXT NOT NULL, - "type" "DiscordWebhookType" NOT NULL, - "scope" "DiscordWebhookScope" NOT NULL DEFAULT 'ADMIN', - "description" TEXT, - "userId" TEXT, - "enabled" BOOLEAN NOT NULL DEFAULT true, - "testSuccessAt" TIMESTAMP(3), - "avatarUrl" TEXT, - "metadata" JSONB, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "discord_webhooks_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE INDEX "discord_webhooks_userId_idx" ON "discord_webhooks"("userId"); - --- CreateIndex -CREATE INDEX "discord_webhooks_type_idx" ON "discord_webhooks"("type"); - --- CreateIndex -CREATE INDEX "discord_webhooks_scope_idx" ON "discord_webhooks"("scope"); - --- CreateIndex -CREATE UNIQUE INDEX "discord_webhooks_webhookUrl_userId_key" ON "discord_webhooks"("webhookUrl", "userId"); - --- AddForeignKey -ALTER TABLE "discord_webhooks" ADD CONSTRAINT "discord_webhooks_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20251223020052_add_support_notification_type/migration.sql b/prisma/migrations/20251223020052_add_support_notification_type/migration.sql deleted file mode 100644 index d306601..0000000 --- a/prisma/migrations/20251223020052_add_support_notification_type/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterEnum -ALTER TYPE "DiscordWebhookType" ADD VALUE 'SUPPORT'; diff --git a/prisma/migrations/20251223023541_add_setup_status/migration.sql b/prisma/migrations/20251223023541_add_setup_status/migration.sql deleted file mode 100644 index 793e6ea..0000000 --- a/prisma/migrations/20251223023541_add_setup_status/migration.sql +++ /dev/null @@ -1,4 +0,0 @@ --- AlterTable -ALTER TABLE "system_settings" ADD COLUMN "databaseUrl" TEXT, -ADD COLUMN "faviconUrl" TEXT, -ADD COLUMN "isSetupComplete" BOOLEAN NOT NULL DEFAULT false; diff --git a/prisma/migrations/20251223031136_add_github_repo_encryption/migration.sql b/prisma/migrations/20251223031136_add_github_repo_encryption/migration.sql deleted file mode 100644 index 874e569..0000000 --- a/prisma/migrations/20251223031136_add_github_repo_encryption/migration.sql +++ /dev/null @@ -1,12 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `adminEmail` on the `system_settings` table. All the data in the column will be lost. - -*/ --- AlterTable -ALTER TABLE "system_settings" DROP COLUMN "adminEmail", -ADD COLUMN "githubRepositories" TEXT, -ADD COLUMN "virtfusionApi" TEXT, -ADD COLUMN "virtfusionApiKey" TEXT, -ADD COLUMN "virtfusionUrl" TEXT; diff --git a/prisma/migrations/20251224054759_add_config_model/migration.sql b/prisma/migrations/20251224054759_add_config_model/migration.sql deleted file mode 100644 index 302e29d..0000000 --- a/prisma/migrations/20251224054759_add_config_model/migration.sql +++ /dev/null @@ -1,15 +0,0 @@ --- CreateTable -CREATE TABLE "config" ( - "id" TEXT NOT NULL, - "key" TEXT NOT NULL, - "value" TEXT NOT NULL, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "config_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "config_key_key" ON "config"("key"); - --- CreateIndex -CREATE INDEX "config_key_idx" ON "config"("key"); diff --git a/prisma/migrations/20251224061617_remove_old_system_settings/migration.sql b/prisma/migrations/20251224061617_remove_old_system_settings/migration.sql deleted file mode 100644 index 4ae33a3..0000000 --- a/prisma/migrations/20251224061617_remove_old_system_settings/migration.sql +++ /dev/null @@ -1,8 +0,0 @@ -/* - Warnings: - - - You are about to drop the `system_settings` table. If the table is not empty, all the data it contains will be lost. - -*/ --- DropTable -DROP TABLE "system_settings"; diff --git a/prisma/migrations/20251224062456_refactor_panel_stuff_to_key_values/migration.sql b/prisma/migrations/20251224062456_refactor_panel_stuff_to_key_values/migration.sql deleted file mode 100644 index 67daa6d..0000000 --- a/prisma/migrations/20251224062456_refactor_panel_stuff_to_key_values/migration.sql +++ /dev/null @@ -1,315 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `configFrom` on the `eggs` table. All the data in the column will be lost. - - You are about to drop the column `copyScriptFrom` on the `eggs` table. All the data in the column will be lost. - - You are about to drop the column `dockerImage` on the `eggs` table. All the data in the column will be lost. - - You are about to drop the column `dockerImages` on the `eggs` table. All the data in the column will be lost. - - You are about to drop the column `scriptIsPrivileged` on the `eggs` table. All the data in the column will be lost. - - You are about to drop the column `startup` on the `eggs` table. All the data in the column will be lost. - - You are about to drop the column `allocationLimit` on the `servers` table. All the data in the column will be lost. - - You are about to drop the column `backupLimit` on the `servers` table. All the data in the column will be lost. - - You are about to drop the column `cpu` on the `servers` table. All the data in the column will be lost. - - You are about to drop the column `databaseLimit` on the `servers` table. All the data in the column will be lost. - - You are about to drop the column `disk` on the `servers` table. All the data in the column will be lost. - - You are about to drop the column `featureLimits` on the `servers` table. All the data in the column will be lost. - - You are about to drop the column `image` on the `servers` table. All the data in the column will be lost. - - You are about to drop the column `io` on the `servers` table. All the data in the column will be lost. - - You are about to drop the column `memory` on the `servers` table. All the data in the column will be lost. - - You are about to drop the column `oomDisabled` on the `servers` table. All the data in the column will be lost. - - You are about to drop the column `startup` on the `servers` table. All the data in the column will be lost. - - You are about to drop the column `swap` on the `servers` table. All the data in the column will be lost. - - A unique constraint covering the columns `[virtfusionId]` on the table `servers` will be added. If there are existing duplicate values, this will fail. - -*/ --- DropForeignKey -ALTER TABLE "servers" DROP CONSTRAINT "servers_eggId_fkey"; - --- DropForeignKey -ALTER TABLE "servers" DROP CONSTRAINT "servers_ownerId_fkey"; - --- DropIndex -DROP INDEX "users_pterodactylId_key"; - --- AlterTable -ALTER TABLE "eggs" DROP COLUMN "configFrom", -DROP COLUMN "copyScriptFrom", -DROP COLUMN "dockerImage", -DROP COLUMN "dockerImages", -DROP COLUMN "scriptIsPrivileged", -DROP COLUMN "startup", -ADD COLUMN "panelType" TEXT NOT NULL DEFAULT 'pterodactyl'; - --- AlterTable -ALTER TABLE "nodes" ADD COLUMN "panelType" TEXT NOT NULL DEFAULT 'pterodactyl'; - --- AlterTable -ALTER TABLE "servers" DROP COLUMN "allocationLimit", -DROP COLUMN "backupLimit", -DROP COLUMN "cpu", -DROP COLUMN "databaseLimit", -DROP COLUMN "disk", -DROP COLUMN "featureLimits", -DROP COLUMN "image", -DROP COLUMN "io", -DROP COLUMN "memory", -DROP COLUMN "oomDisabled", -DROP COLUMN "startup", -DROP COLUMN "swap", -ADD COLUMN "panelType" TEXT NOT NULL DEFAULT 'pterodactyl', -ADD COLUMN "productId" TEXT, -ADD COLUMN "virtfusionId" INTEGER, -ALTER COLUMN "pterodactylId" DROP NOT NULL, -ALTER COLUMN "eggId" DROP NOT NULL; - --- AlterTable -ALTER TABLE "users" ADD COLUMN "accountBalance" DECIMAL(10,2) NOT NULL DEFAULT 0, -ADD COLUMN "accountStatus" TEXT NOT NULL DEFAULT 'active', -ADD COLUMN "avatarUrl" TEXT, -ADD COLUMN "billingEmail" TEXT, -ADD COLUMN "companyName" TEXT, -ADD COLUMN "phoneNumber" TEXT, -ADD COLUMN "virtfusionId" INTEGER; - --- CreateTable -CREATE TABLE "egg_properties" ( - "id" TEXT NOT NULL, - "eggId" INTEGER NOT NULL, - "key" TEXT NOT NULL, - "value" TEXT NOT NULL, - "panelType" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "egg_properties_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "server_properties" ( - "id" TEXT NOT NULL, - "serverId" TEXT NOT NULL, - "key" TEXT NOT NULL, - "value" TEXT NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "server_properties_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "products" ( - "id" TEXT NOT NULL, - "name" TEXT NOT NULL, - "description" TEXT, - "category" TEXT NOT NULL, - "basePrice" DECIMAL(10,2) NOT NULL, - "setupFee" DECIMAL(10,2) NOT NULL DEFAULT 0, - "currency" TEXT NOT NULL DEFAULT 'USD', - "billingCycle" TEXT NOT NULL DEFAULT 'monthly', - "isActive" BOOLEAN NOT NULL DEFAULT true, - "displayOrder" INTEGER NOT NULL DEFAULT 0, - "creatorId" TEXT NOT NULL, - "metadata" JSONB, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "products_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "invoices" ( - "id" TEXT NOT NULL, - "invoiceNumber" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "subtotal" DECIMAL(10,2) NOT NULL, - "tax" DECIMAL(10,2) NOT NULL DEFAULT 0, - "total" DECIMAL(10,2) NOT NULL, - "paid" DECIMAL(10,2) NOT NULL DEFAULT 0, - "status" TEXT NOT NULL DEFAULT 'unpaid', - "dueDate" TIMESTAMP(3), - "paidDate" TIMESTAMP(3), - "notes" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "invoices_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "invoice_items" ( - "id" TEXT NOT NULL, - "invoiceId" TEXT NOT NULL, - "productId" TEXT, - "description" TEXT NOT NULL, - "quantity" INTEGER NOT NULL DEFAULT 1, - "unitPrice" DECIMAL(10,2) NOT NULL, - "total" DECIMAL(10,2) NOT NULL, - - CONSTRAINT "invoice_items_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "payments" ( - "id" TEXT NOT NULL, - "invoiceId" TEXT NOT NULL, - "amount" DECIMAL(10,2) NOT NULL, - "method" TEXT NOT NULL, - "reference" TEXT, - "status" TEXT NOT NULL DEFAULT 'completed', - "notes" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - - CONSTRAINT "payments_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "support_tickets" ( - "id" TEXT NOT NULL, - "ticketNumber" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "serverId" TEXT, - "subject" TEXT NOT NULL, - "category" TEXT NOT NULL, - "priority" TEXT NOT NULL DEFAULT 'normal', - "status" TEXT NOT NULL DEFAULT 'open', - "assignedToId" TEXT, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - "resolvedAt" TIMESTAMP(3), - - CONSTRAINT "support_tickets_pkey" PRIMARY KEY ("id") -); - --- CreateTable -CREATE TABLE "support_ticket_replies" ( - "id" TEXT NOT NULL, - "ticketId" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "message" TEXT NOT NULL, - "isInternal" BOOLEAN NOT NULL DEFAULT false, - "attachments" JSONB, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - "updatedAt" TIMESTAMP(3) NOT NULL, - - CONSTRAINT "support_ticket_replies_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE INDEX "egg_properties_eggId_idx" ON "egg_properties"("eggId"); - --- CreateIndex -CREATE UNIQUE INDEX "egg_properties_eggId_key_panelType_key" ON "egg_properties"("eggId", "key", "panelType"); - --- CreateIndex -CREATE INDEX "server_properties_serverId_idx" ON "server_properties"("serverId"); - --- CreateIndex -CREATE UNIQUE INDEX "server_properties_serverId_key_key" ON "server_properties"("serverId", "key"); - --- CreateIndex -CREATE INDEX "products_category_idx" ON "products"("category"); - --- CreateIndex -CREATE INDEX "products_isActive_idx" ON "products"("isActive"); - --- CreateIndex -CREATE UNIQUE INDEX "invoices_invoiceNumber_key" ON "invoices"("invoiceNumber"); - --- CreateIndex -CREATE INDEX "invoices_userId_idx" ON "invoices"("userId"); - --- CreateIndex -CREATE INDEX "invoices_status_idx" ON "invoices"("status"); - --- CreateIndex -CREATE INDEX "invoices_dueDate_idx" ON "invoices"("dueDate"); - --- CreateIndex -CREATE INDEX "payments_invoiceId_idx" ON "payments"("invoiceId"); - --- CreateIndex -CREATE INDEX "payments_status_idx" ON "payments"("status"); - --- CreateIndex -CREATE UNIQUE INDEX "support_tickets_ticketNumber_key" ON "support_tickets"("ticketNumber"); - --- CreateIndex -CREATE INDEX "support_tickets_userId_idx" ON "support_tickets"("userId"); - --- CreateIndex -CREATE INDEX "support_tickets_status_idx" ON "support_tickets"("status"); - --- CreateIndex -CREATE INDEX "support_tickets_priority_idx" ON "support_tickets"("priority"); - --- CreateIndex -CREATE INDEX "support_tickets_category_idx" ON "support_tickets"("category"); - --- CreateIndex -CREATE INDEX "support_tickets_assignedToId_idx" ON "support_tickets"("assignedToId"); - --- CreateIndex -CREATE INDEX "support_ticket_replies_ticketId_idx" ON "support_ticket_replies"("ticketId"); - --- CreateIndex -CREATE INDEX "support_ticket_replies_userId_idx" ON "support_ticket_replies"("userId"); - --- CreateIndex -CREATE INDEX "eggs_panelType_idx" ON "eggs"("panelType"); - --- CreateIndex -CREATE INDEX "nodes_panelType_idx" ON "nodes"("panelType"); - --- CreateIndex -CREATE UNIQUE INDEX "servers_virtfusionId_key" ON "servers"("virtfusionId"); - --- CreateIndex -CREATE INDEX "servers_panelType_idx" ON "servers"("panelType"); - --- CreateIndex -CREATE INDEX "servers_ownerId_idx" ON "servers"("ownerId"); - --- CreateIndex -CREATE INDEX "servers_productId_idx" ON "servers"("productId"); - --- AddForeignKey -ALTER TABLE "egg_properties" ADD CONSTRAINT "egg_properties_eggId_fkey" FOREIGN KEY ("eggId") REFERENCES "eggs"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "servers" ADD CONSTRAINT "servers_productId_fkey" FOREIGN KEY ("productId") REFERENCES "products"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "servers" ADD CONSTRAINT "servers_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "servers" ADD CONSTRAINT "servers_eggId_fkey" FOREIGN KEY ("eggId") REFERENCES "eggs"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "server_properties" ADD CONSTRAINT "server_properties_serverId_fkey" FOREIGN KEY ("serverId") REFERENCES "servers"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "products" ADD CONSTRAINT "products_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "invoices" ADD CONSTRAINT "invoices_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "invoice_items" ADD CONSTRAINT "invoice_items_invoiceId_fkey" FOREIGN KEY ("invoiceId") REFERENCES "invoices"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "invoice_items" ADD CONSTRAINT "invoice_items_productId_fkey" FOREIGN KEY ("productId") REFERENCES "products"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "payments" ADD CONSTRAINT "payments_invoiceId_fkey" FOREIGN KEY ("invoiceId") REFERENCES "invoices"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "support_tickets" ADD CONSTRAINT "support_tickets_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "support_tickets" ADD CONSTRAINT "support_tickets_serverId_fkey" FOREIGN KEY ("serverId") REFERENCES "servers"("id") ON DELETE SET NULL ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "support_ticket_replies" ADD CONSTRAINT "support_ticket_replies_ticketId_fkey" FOREIGN KEY ("ticketId") REFERENCES "support_tickets"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "support_ticket_replies" ADD CONSTRAINT "support_ticket_replies_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/20251224064636_add_panel_specific_admin_roles/migration.sql b/prisma/migrations/20251224064636_add_panel_specific_admin_roles/migration.sql deleted file mode 100644 index 2a251e3..0000000 --- a/prisma/migrations/20251224064636_add_panel_specific_admin_roles/migration.sql +++ /dev/null @@ -1,14 +0,0 @@ -/* - Warnings: - - - You are about to drop the column `isAdmin` on the `users` table. All the data in the column will be lost. - -*/ --- CreateEnum -CREATE TYPE "Role" AS ENUM ('MEMBER', 'SUPPORT_TEAM', 'ADMINISTRATOR', 'SUPER_ADMIN'); - --- AlterTable -ALTER TABLE "users" DROP COLUMN "isAdmin", -ADD COLUMN "isPterodactylAdmin" BOOLEAN NOT NULL DEFAULT false, -ADD COLUMN "isSystemAdmin" BOOLEAN NOT NULL DEFAULT false, -ADD COLUMN "isVirtfusionAdmin" BOOLEAN NOT NULL DEFAULT false; diff --git a/prisma/migrations/20251224065241_add_user_roles_array/migration.sql b/prisma/migrations/20251224065241_add_user_roles_array/migration.sql deleted file mode 100644 index c3c15d2..0000000 --- a/prisma/migrations/20251224065241_add_user_roles_array/migration.sql +++ /dev/null @@ -1,14 +0,0 @@ --- AlterEnum --- This migration adds more than one value to an enum. --- With PostgreSQL versions 11 and earlier, this is not possible --- in a single migration. This can be worked around by creating --- multiple migrations, each migration adding only one value to --- the enum. - - -ALTER TYPE "Role" ADD VALUE 'PARTNER'; -ALTER TYPE "Role" ADD VALUE 'SPONSOR'; -ALTER TYPE "Role" ADD VALUE 'TECH_TEAM'; - --- AlterTable -ALTER TABLE "users" ADD COLUMN "roles" "Role"[] DEFAULT ARRAY['MEMBER']::"Role"[]; diff --git a/prisma/migrations/20251224065842_make_username_optional/migration.sql b/prisma/migrations/20251224065842_make_username_optional/migration.sql deleted file mode 100644 index f1d1950..0000000 --- a/prisma/migrations/20251224065842_make_username_optional/migration.sql +++ /dev/null @@ -1,2 +0,0 @@ --- AlterTable -ALTER TABLE "users" ALTER COLUMN "username" DROP NOT NULL; diff --git a/prisma/migrations/20251224071655_add/migration.sql b/prisma/migrations/20251224071655_add/migration.sql deleted file mode 100644 index 0a63541..0000000 --- a/prisma/migrations/20251224071655_add/migration.sql +++ /dev/null @@ -1,19 +0,0 @@ --- CreateTable -CREATE TABLE "password_reset_tokens" ( - "id" TEXT NOT NULL, - "userId" TEXT NOT NULL, - "token" TEXT NOT NULL, - "expiresAt" TIMESTAMP(3) NOT NULL, - "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, - - CONSTRAINT "password_reset_tokens_pkey" PRIMARY KEY ("id") -); - --- CreateIndex -CREATE UNIQUE INDEX "password_reset_tokens_userId_key" ON "password_reset_tokens"("userId"); - --- CreateIndex -CREATE UNIQUE INDEX "password_reset_tokens_token_key" ON "password_reset_tokens"("token"); - --- AddForeignKey -ALTER TABLE "password_reset_tokens" ADD CONSTRAINT "password_reset_tokens_userId_fkey" FOREIGN KEY ("userId") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/migrations/migration_lock.toml b/prisma/migrations/migration_lock.toml deleted file mode 100644 index 044d57c..0000000 --- a/prisma/migrations/migration_lock.toml +++ /dev/null @@ -1,3 +0,0 @@ -# Please do not edit this file manually -# It should be added in your version-control system (e.g., Git) -provider = "postgresql" diff --git a/prisma/schema.prisma b/prisma/schema.prisma deleted file mode 100644 index 2fa714a..0000000 --- a/prisma/schema.prisma +++ /dev/null @@ -1,699 +0,0 @@ -// This is your Prisma schema file for NodeByte authentication -// Docs: https://pris.ly/d/prisma-schema - -generator client { - provider = "prisma-client" - output = "./generated/prisma" -} - -datasource db { - provider = "postgresql" -} - -// ============================================================================ -// USER & AUTH MODELS -// ============================================================================ - -// User model for authentication -model User { - id String @id @default(cuid()) - email String @unique - password String? - username String? - firstName String? - lastName String? - - roles Role[] @default([MEMBER]) - isPterodactylAdmin Boolean @default(false) // Can manage Pterodactyl panel - isVirtfusionAdmin Boolean @default(false) // Can manage Virtfusion panel - isSystemAdmin Boolean @default(false) // Full system access (billing, users, settings) - - // Panel IDs - support multiple panels - pterodactylId Int? // Link to Pterodactyl panel user ID - virtfusionId Int? // Link to Virtfusion panel user ID - - // Migration status - isMigrated Boolean @default(false) // True once user registers/sets password on our site - - // Email verification - emailVerified DateTime? - - // Account status - isActive Boolean @default(true) - - // Profile & billing - avatarUrl String? - companyName String? - phoneNumber String? - billingEmail String? // May differ from primary email - - // Billing & account - accountBalance Decimal @default(0) @db.Decimal(10, 2) // Account credit balance - accountStatus String @default("active") // active, suspended, cancelled - - // Timestamps - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - lastLoginAt DateTime? - lastSyncedAt DateTime? // Last time data was synced from panels - - // Relations - sessions Session[] - passwordResetToken PasswordResetToken? // Password reset token - servers Server[] // Servers owned by this user - discordWebhooks DiscordWebhook[] // Webhooks created by this user - invoices Invoice[] - tickets SupportTicket[] // Support tickets created by this user - ticketReplies SupportTicketReply[] // Replies to tickets - products Product[] // Products this user has created/selling - - @@map("users") -} - -// Session model for auth tokens -model Session { - id String @id @default(cuid()) - sessionToken String @unique - userId String - expires DateTime - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - - createdAt DateTime @default(now()) - - @@map("sessions") -} - -// Password reset tokens for secure password recovery -model PasswordResetToken { - id String @id @default(cuid()) - userId String @unique - token String @unique - expiresAt DateTime - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - - createdAt DateTime @default(now()) - - @@map("password_reset_tokens") -} - -// Verification tokens for email verification, password reset, etc. -model VerificationToken { - identifier String - token String @unique - expires DateTime - type String @default("email") // email, password_reset, etc. - - @@unique([identifier, token]) - @@map("verification_tokens") -} - -// ============================================================================ -// PTERODACTYL SYNC MODELS - These mirror Pterodactyl data for local access -// ============================================================================ - -// Location (data center region) -model Location { - id Int @id // Pterodactyl location ID - shortCode String @unique - description String? - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - nodes Node[] - - @@map("locations") -} - -// Node (physical/virtual server hosting game servers) -model Node { - id Int @id // Pterodactyl node ID - uuid String @unique - name String - description String? - fqdn String // Fully qualified domain name - scheme String @default("https") // http or https - behindProxy Boolean @default(false) - - // Panel type - panelType String @default("pterodactyl") // pterodactyl or virtfusion - - // Resources - memory BigInt // Total memory in MB - memoryOverallocate Int @default(0) // Percentage - disk BigInt // Total disk in MB - diskOverallocate Int @default(0) // Percentage - - // Status - isPublic Boolean @default(true) - isMaintenanceMode Boolean @default(false) - - // Connection info (for internal use) - daemonListenPort Int @default(8080) - daemonSftpPort Int @default(2022) - daemonBase String @default("/var/lib/pterodactyl/volumes") - - // Location relation - locationId Int - location Location @relation(fields: [locationId], references: [id]) - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - allocations Allocation[] - servers Server[] - - @@index([panelType]) - @@map("nodes") -} - -// Allocation (IP:Port combination on a node) -model Allocation { - id Int @id // Pterodactyl allocation ID - ip String - port Int - alias String? // Optional friendly name/hostname - notes String? - isAssigned Boolean @default(false) - - nodeId Int - node Node @relation(fields: [nodeId], references: [id], onDelete: Cascade) - - // Server relation (null if unassigned) - serverId String? - server Server? @relation(fields: [serverId], references: [id], onDelete: SetNull) - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([ip, port]) - @@map("allocations") -} - -// Nest (category of eggs, e.g., "Minecraft", "Rust") -model Nest { - id Int @id // Pterodactyl nest ID - uuid String @unique - name String - description String? - author String? - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - eggs Egg[] - - @@map("nests") -} - -// Egg (server type template, e.g., "Paper", "Vanilla", "Forge") -model Egg { - id Int @id // Pterodactyl egg ID - uuid String @unique - name String - description String? - author String? - - // Panel type support - panelType String @default("pterodactyl") // pterodactyl, virtfusion, etc. - - nestId Int - nest Nest @relation(fields: [nestId], references: [id], onDelete: Cascade) - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - servers Server[] - variables EggVariable[] - properties EggProperty[] // Flexible key-value for panel-specific config - - @@index([panelType]) - @@map("eggs") -} - -// Egg Property - Key-value store for egg-specific configurations -model EggProperty { - id String @id @default(cuid()) - eggId Int - egg Egg @relation(fields: [eggId], references: [id], onDelete: Cascade) - - key String // e.g., "docker_image", "startup_command", "docker_images_json" - value String // Stored as JSON if needed - panelType String? // null = applies to all panels, "pterodactyl" or "virtfusion" for specific panels - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([eggId, key, panelType]) - @@index([eggId]) - @@map("egg_properties") -} - -// Egg Variable (configuration options for an egg) -model EggVariable { - id Int @id // Pterodactyl variable ID - eggId Int - egg Egg @relation(fields: [eggId], references: [id], onDelete: Cascade) - - name String - description String? - envVariable String // Environment variable name - defaultValue String? - userViewable Boolean @default(true) - userEditable Boolean @default(true) - rules String? // Validation rules - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - serverVariables ServerVariable[] - - @@map("egg_variables") -} - -// ============================================================================ -// SERVER MODEL - Core game server data -// ============================================================================ - -model Server { - id String @id @default(cuid()) // Our internal ID - pterodactylId Int? @unique // Pterodactyl server ID (null if virtfusion) - virtfusionId Int? @unique // Virtfusion server ID (null if pterodactyl) - uuid String @unique // Pterodactyl UUID - uuidShort String? // Short UUID for panel URLs - externalId String? @unique // External ID (e.g., billing system ID) - - // Panel identification - panelType String @default("pterodactyl") // pterodactyl or virtfusion - - name String - description String? - - // Status - status ServerStatus @default(INSTALLING) - isSuspended Boolean @default(false) - - // Billing - productId String? // Link to billing product - product Product? @relation("ServerProduct", fields: [productId], references: [id], onDelete: SetNull) - - // Relations - ownerId String - owner User @relation(fields: [ownerId], references: [id], onDelete: Cascade) - - nodeId Int - node Node @relation(fields: [nodeId], references: [id], onDelete: Restrict) - - eggId Int? // Optional for virtfusion - egg Egg? @relation(fields: [eggId], references: [id], onDelete: SetNull) - - // Timestamps - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - installedAt DateTime? - lastSyncedAt DateTime? - - // Related data - allocations Allocation[] - variables ServerVariable[] - databases ServerDatabase[] - backups ServerBackup[] - properties ServerProperty[] // Flexible key-value for specs and config - tickets SupportTicket[] - - @@index([panelType]) - @@index([ownerId]) - @@index([productId]) - @@map("servers") -} - -// Server Property - Key-value store for server specs and configuration -model ServerProperty { - id String @id @default(cuid()) - serverId String - server Server @relation(fields: [serverId], references: [id], onDelete: Cascade) - - key String // e.g., "memory", "disk", "cpu", "swap", "io", "oom_disabled", "backup_limit" - value String // Stored as string - parse as int/bool as needed - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([serverId, key]) - @@index([serverId]) - @@map("server_properties") -} - -enum ServerStatus { - INSTALLING - INSTALL_FAILED - SUSPENDED - RESTORING_BACKUP - RUNNING - OFFLINE - STARTING - STOPPING -} - -// Server Variable (runtime configuration) -model ServerVariable { - id String @id @default(cuid()) - serverId String - server Server @relation(fields: [serverId], references: [id], onDelete: Cascade) - - variableId Int - variable EggVariable @relation(fields: [variableId], references: [id]) - - value String - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([serverId, variableId]) - @@map("server_variables") -} - -// Server Database -model ServerDatabase { - id Int @id // Pterodactyl database ID - serverId String - server Server @relation(fields: [serverId], references: [id], onDelete: Cascade) - - name String - username String - host String - port Int @default(3306) - maxConnections Int @default(0) // 0 = unlimited - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@map("server_databases") -} - -// Server Backup -model ServerBackup { - id String @id // Pterodactyl backup UUID - serverId String - server Server @relation(fields: [serverId], references: [id], onDelete: Cascade) - - name String - ignoredFiles Json? // Files/folders ignored in backup - sha256Hash String? - bytes BigInt @default(0) - - isSuccessful Boolean @default(false) - isLocked Boolean @default(false) - - completedAt DateTime? - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@map("server_backups") -} - -// ============================================================================ -// SYNC LOG - Track synchronization history -// ============================================================================ - -model SyncLog { - id String @id @default(cuid()) - type String // users, servers, nodes, etc. - status SyncStatus @default(PENDING) - - itemsTotal Int @default(0) - itemsSynced Int @default(0) - itemsFailed Int @default(0) - - error String? - metadata Json? - - startedAt DateTime @default(now()) - completedAt DateTime? - - @@map("sync_logs") -} - -// ============================================================================ -// BILLING & PRODUCTS - Lightweight WHMCS alternative -// ============================================================================ - -model Product { - id String @id @default(cuid()) - name String - description String? - category String // game-server, vps, addon, etc. - - // Pricing - basePrice Decimal @db.Decimal(10, 2) // Monthly price - setupFee Decimal @default(0) @db.Decimal(10, 2) - currency String @default("USD") - - // Billing - billingCycle String @default("monthly") // monthly, quarterly, semiannual, annual, oneoff - - // Availability - isActive Boolean @default(true) - displayOrder Int @default(0) - - // Creator - creatorId String - creator User @relation(fields: [creatorId], references: [id], onDelete: Cascade) - - // Customization - metadata Json? // Additional product metadata - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - // Relations - servers Server[] @relation("ServerProduct") - invoices InvoiceItem[] - - @@index([category]) - @@index([isActive]) - @@map("products") -} - -model Invoice { - id String @id @default(cuid()) - invoiceNumber String @unique - - userId String - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - - // Amounts - subtotal Decimal @db.Decimal(10, 2) - tax Decimal @default(0) @db.Decimal(10, 2) - total Decimal @db.Decimal(10, 2) - paid Decimal @default(0) @db.Decimal(10, 2) - - // Status - status String @default("unpaid") // unpaid, partially_paid, paid, overdue, cancelled - - // Dates - dueDate DateTime? - paidDate DateTime? - - // Notes - notes String? - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - // Relations - items InvoiceItem[] - payments Payment[] - - @@index([userId]) - @@index([status]) - @@index([dueDate]) - @@map("invoices") -} - -model InvoiceItem { - id String @id @default(cuid()) - invoiceId String - invoice Invoice @relation(fields: [invoiceId], references: [id], onDelete: Cascade) - - productId String? - product Product? @relation(fields: [productId], references: [id], onDelete: SetNull) - - description String - quantity Int @default(1) - unitPrice Decimal @db.Decimal(10, 2) - total Decimal @db.Decimal(10, 2) - - @@map("invoice_items") -} - -model Payment { - id String @id @default(cuid()) - invoiceId String - invoice Invoice @relation(fields: [invoiceId], references: [id], onDelete: Cascade) - - amount Decimal @db.Decimal(10, 2) - method String // stripe, paypal, manual, credit, etc. - reference String? // Transaction/Reference ID - - status String @default("completed") // pending, completed, failed, refunded - notes String? - - createdAt DateTime @default(now()) - - @@index([invoiceId]) - @@index([status]) - @@map("payments") -} - -// ============================================================================ -// SUPPORT TICKETS - Integrated ticket system -// ============================================================================ - -model SupportTicket { - id String @id @default(cuid()) - ticketNumber String @unique - - userId String - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - - serverId String? - server Server? @relation(fields: [serverId], references: [id], onDelete: SetNull) - - // Ticket info - subject String - category String // billing, technical, abuse, general, feature_request, etc. - priority String @default("normal") // low, normal, high, urgent - - // Status - status String @default("open") // open, pending, in_progress, resolved, closed - - // Assignment - assignedToId String? // Admin user ID if assigned - - // Timestamps - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - resolvedAt DateTime? - - // Relations - replies SupportTicketReply[] - - @@index([userId]) - @@index([status]) - @@index([priority]) - @@index([category]) - @@index([assignedToId]) - @@map("support_tickets") -} - -model SupportTicketReply { - id String @id @default(cuid()) - ticketId String - ticket SupportTicket @relation(fields: [ticketId], references: [id], onDelete: Cascade) - - userId String - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - - message String - isInternal Boolean @default(false) // Internal note not visible to user - - attachments Json? // File attachment metadata - - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@index([ticketId]) - @@index([userId]) - @@map("support_ticket_replies") -} - -// ============================================================================ -// DISCORD WEBHOOKS - Notification webhook management -// ============================================================================ - -model DiscordWebhook { - id String @id @default(cuid()) - - // Webhook identification - name String - webhookUrl String - - // Webhook categorization - type DiscordWebhookType - scope DiscordWebhookScope @default(ADMIN) - description String? - - // Owner information - userId String? - user User? @relation(fields: [userId], references: [id], onDelete: Cascade) - - // Settings - enabled Boolean @default(true) - testSuccessAt DateTime? - - // Metadata - avatarUrl String? - metadata Json? - - // Timestamps - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt - - @@unique([webhookUrl, userId]) - @@index([userId]) - @@index([type]) - @@index([scope]) - @@map("discord_webhooks") -} - -// ============================================================================ -// CONFIG - Simple key value store for all system settings -// ============================================================================ - -model Config { - id String @id @default(cuid()) - key String @unique - value String // Stored as JSON string - updatedAt DateTime @updatedAt - - @@index([key]) - @@map("config") -} - -// ============================================================================ -// ENUMS -// ============================================================================ - -enum DiscordWebhookType { - GAME_SERVER // Game server notifications (start, stop, crash, etc.) - VPS // VPS/Node notifications (resource, status, etc.) - SYSTEM // System notifications (maintenance, updates, etc.) - BILLING // Billing/Account notifications - SECURITY // Security notifications (login attempts, etc.) - SUPPORT // Support/Ticket notifications - CUSTOM // User-defined/custom notifications -} - -enum DiscordWebhookScope { - ADMIN // Admin-only webhook (global system notifications) - USER // User-specific webhook (their own server/account notifications) - PUBLIC // Public webhook (shared/testing) -} - -enum SyncStatus { - PENDING - RUNNING - COMPLETED - FAILED -} - -enum Role { - MEMBER - PARTNER - SPONSOR - TECH_TEAM - SUPPORT_TEAM - ADMINISTRATOR - SUPER_ADMIN -} \ No newline at end of file diff --git a/proxy.ts b/proxy.ts index fce39c9..d081b2b 100644 --- a/proxy.ts +++ b/proxy.ts @@ -1,9 +1,80 @@ -import { auth } from "@/packages/auth" -import { getSystemState } from "@/packages/core/lib/config" -import { isSetupComplete } from "@/packages/core/lib/setup" import { NextResponse } from "next/server" +import type { NextRequest } from "next/server" -export default auth(async (req) => { +const API_BASE = process.env.NEXT_PUBLIC_GO_API_URL || "http://localhost:8080" + +// Helper to get user from JWT token +async function getUserFromToken(token: string) { + try { + const response = await fetch(`${API_BASE}/api/v1/auth/me`, { + headers: { + Authorization: `Bearer ${token}`, + }, + }) + + if (!response.ok) { + return null + } + + const data = await response.json() + return data.user + } catch (error) { + return null + } +} + +// Helper to get token from request +function getTokenFromRequest(req: NextRequest): string | null { + // Try to get from Authorization header + const authHeader = req.headers.get("Authorization") + if (authHeader?.startsWith("Bearer ")) { + return authHeader.substring(7) + } + + // Try to get from cookie (if we set it there) + const cookie = req.cookies.get("auth_token") + return cookie?.value || null +} + +// Check if setup is complete by calling Go backend +async function isSetupComplete(): Promise { + try { + const response = await fetch(`${API_BASE}/health`, { + method: "GET", + headers: { "Content-Type": "application/json" }, + }) + + // If backend is healthy, assume setup is complete + // The backend should be running if setup is done + return response.ok + } catch (error) { + // If we can't reach the backend, allow access to setup + return false + } +} + +// Get system state from Go backend +async function getSystemState() { + try { + const response = await fetch(`${API_BASE}/health`, { + method: "GET", + headers: { "Content-Type": "application/json" }, + }) + + // Default to safe values if we can't reach backend + return { + maintenanceMode: false, + registrationEnabled: true, + } + } catch (error) { + return { + maintenanceMode: false, + registrationEnabled: true, + } + } +} + +export default async function middleware(req: NextRequest) { const { pathname } = req.nextUrl // Setup Check - redirect to setup if not complete (bypass for setup routes and static assets) @@ -36,9 +107,29 @@ export default auth(async (req) => { // Get system state for maintenance mode and registration settings const systemState = await getSystemState() + // Get user from token if present (only for server-side auth checks) + // Note: Client-side tokens in localStorage are not accessible here + // Dashboard/Admin protection is enforced client-side via useAuth() hooks + const token = getTokenFromRequest(req) + let user = null + if (token) { + try { + user = await getUserFromToken(token) + } catch (error) { + // Token validation failed, let client-side handle auth + user = null + } + } + // Maintenance Mode - redirect all non-admin users (except login, auth pages, and auth API) - if (systemState.maintenanceMode && pathname !== "/maintenance" && !pathname.startsWith("/auth") && !pathname.startsWith("/api/auth")) { - const isAdmin = (req.auth?.user?.isPterodactylAdmin || req.auth?.user?.isVirtfusionAdmin || req.auth?.user?.isSystemAdmin) ?? false + if ( + systemState.maintenanceMode && + pathname !== "/maintenance" && + !pathname.startsWith("/auth") && + !pathname.startsWith("/api/auth") + ) { + const isAdmin = + user?.isPterodactylAdmin || user?.isVirtfusionAdmin || user?.isSystemAdmin || false if (!isAdmin) { return NextResponse.redirect(new URL("/maintenance", req.url)) } @@ -51,62 +142,29 @@ export default auth(async (req) => { } } - // Protect dashboard routes - require authentication - if (pathname.startsWith("/dashboard") || pathname.startsWith("/api/dashboard")) { - // API dashboard routes: check auth - if (pathname.startsWith("/api/dashboard")) { - if (!req.auth?.user?.id) { - return NextResponse.json( - { success: false, error: "Unauthorized" }, - { status: 401 } - ) - } - return response - } - - // Frontend dashboard: require active session - if (!req.auth?.user?.id) { - const loginUrl = new URL("/auth/login", req.url) - loginUrl.searchParams.set("callbackUrl", pathname) - return NextResponse.redirect(loginUrl) - } - + // Dashboard & Admin routes: Let client-side useAuth() handle protection + // Middleware allows access, client-side React will redirect if not authenticated + if (pathname.startsWith("/dashboard") || pathname.startsWith("/admin")) { return response } - // Protect admin panel and API routes - requireAdmin() in each route handles DB checks - if (pathname.startsWith("/admin") || pathname.startsWith("/api/admin")) { - // API admin routes: let API endpoints perform DB-backed authorization - if (pathname.startsWith("/api/admin")) { - if (!req.auth?.user?.id) { - return NextResponse.json( - { success: false, error: "Unauthorized" }, - { status: 401 } - ) - } + // API routes still require server-side auth + // Exception: SSE stream endpoint uses ?token= query param auth (EventSource can't send headers) + if (pathname.startsWith("/api/dashboard") || pathname.startsWith("/api/admin")) { + if (pathname.startsWith("/api/admin/sync/stream")) { return response } - - // Frontend admin panel: require active session AND admin role - if (!req.auth?.user?.id) { - const loginUrl = new URL("/auth/login", req.url) - loginUrl.searchParams.set("callbackUrl", pathname) - return NextResponse.redirect(loginUrl) + // Allow through if the Authorization header is present (client-side Bearer token) + // The Go backend will enforce auth; we only block if neither cookie nor header is present + const hasAuthHeader = req.headers.get("Authorization")?.startsWith("Bearer ") + if (!hasAuthHeader && !user?.id) { + return NextResponse.json({ success: false, error: "Unauthorized" }, { status: 401 }) } - - const roles = (req.auth?.user?.roles as string[]) || [] - const isAdmin = (req.auth?.user?.isPterodactylAdmin || req.auth?.user?.isVirtfusionAdmin || req.auth?.user?.isSystemAdmin) ?? false - const hasAdminRole = roles.includes("SUPER_ADMIN") || roles.includes("ADMINISTRATOR") - - if (!isAdmin && !hasAdminRole) { - return NextResponse.redirect(new URL("/", req.url)) - } - return response } return response -}) +} export const config = { matcher: [ diff --git a/translations b/translations index 4774f5b..76fd603 160000 --- a/translations +++ b/translations @@ -1 +1 @@ -Subproject commit 4774f5b1dec3b816e88dc08cc455a7e9178362b1 +Subproject commit 76fd603fb283082c6f4a22b3000cb7bd6a957aa8 diff --git a/tsconfig.json b/tsconfig.json index bf23a0f..6edb7c1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -48,7 +48,7 @@ ".next\\dev/types/**/*.ts", ".next\\dev/types/**/*.ts", ".next/dev/types/**/*.ts" - ], +, "../int_docs/WEBHOOK_QUICK_REFERENCE.ts" ], "exclude": [ "node_modules" ] From b221fa21999d26d465873ba349534f91a5589804 Mon Sep 17 00:00:00 2001 From: TheRealToxicDev Date: Sun, 1 Mar 2026 01:54:48 -0700 Subject: [PATCH 2/2] feat(add): github stuff --- .github/CODEOWNERS | 1 + .github/FUNDING.yml | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..0682084 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @CodeMeAPixel \ No newline at end of file diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 64c82f5..17d1afd 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,3 @@ -github: [NodeByteHosting, CodeMeAPixel] -custom: [https://nodebyte.host] +patreon: codemeapixel +github: CodeMeAPixel +ko_fi: codemeapixel \ No newline at end of file