Merge branch 'dev-0.2.1' into dev-0.2

# Conflicts:
#	generated/prisma/internal/class.ts
#	generated/prisma/internal/prismaNamespace.ts
#	generated/prisma/internal/prismaNamespaceBrowser.ts
#	generated/prisma/models/BoardColumn.ts
#	generated/prisma/models/Project.ts
#	generated/prisma/models/ProjectMember.ts
#	generated/prisma/models/Task.ts
#	generated/prisma/models/TaskMember.ts
#	generated/prisma/models/TaskTag.ts
#	generated/prisma/models/User.ts
#	server/routes/projects.js
#	server/routes/tasks.js
#	src/api/task.js
This commit is contained in:
jif2.zhang
2026-10-26 20:46:25 +08:00
95 changed files with 8694 additions and 1609 deletions
+1
View File
@@ -9,3 +9,4 @@ src-tauri
docs docs
*.log *.log
readme readme
deploy
+4
View File
@@ -50,3 +50,7 @@ server/mihome/.cache/
# 本地 pnpm 安装产物 (项目使用 package-lock.json) # 本地 pnpm 安装产物 (项目使用 package-lock.json)
/.pnpm-store /.pnpm-store
# 0.2.1 验证部署: 服务器本地数据卷与密钥 (绝不入库)
deploy/0.2.1/data/
deploy/0.2.1/.env
+4 -4
View File
@@ -50,9 +50,9 @@ WORKDIR /app
# 阿里源加速 # 阿里源加速
RUN npm config set registry https://registry.npmmirror.com RUN npm config set registry https://registry.npmmirror.com
# 只装运行时依赖 # 只装运行时依赖 (better-sqlite3 是 @powersync/node 的 devOptional peer, 需同时 omit optional 才能跳过)
COPY package*.json ./ COPY package*.json ./
RUN --mount=type=cache,target=/root/.npm npm ci --omit=dev RUN --mount=type=cache,target=/root/.npm npm ci --omit=dev --omit=optional
# 拷贝构建产物 # 拷贝构建产物
COPY --from=builder /app/dist ./dist COPY --from=builder /app/dist ./dist
@@ -72,9 +72,9 @@ ENV OTA_PACKAGE_DIR=/app/ota-package
# 生产为 http 明文 (无 https), 客户端 tauri.conf.json 的 hotswap.require_https 已设为 false 放行 http # 生产为 http 明文 (无 https), 客户端 tauri.conf.json 的 hotswap.require_https 已设为 false 放行 http
ENV OTA_PUBLIC_BASE=http://bh.vps.honor3.com:3001 ENV OTA_PUBLIC_BASE=http://bh.vps.honor3.com:3001
# 健康检查 # 健康检查 (端口跟随 PORT 环境变量, 0.2.1 部署为 13001)
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD wget -qO- http://127.0.0.1:3001/api/health || exit 1 CMD wget -qO- http://127.0.0.1:${PORT:-3001}/api/health || exit 1
EXPOSE 3001 EXPOSE 3001
+11
View File
@@ -0,0 +1,11 @@
# 复制为 .env (服务器上 chmod 600, 已 gitignore)。
# POWERSYNC_JWT_KEY_B64 = base64url(POWERSYNC_JWT_SECRET 的 UTF-8 字节)
# 生成: printf %s "$POWERSYNC_JWT_SECRET" | openssl base64 -A | tr '+/' '-_' | tr -d '='
PG_PASSWORD=change-me
PS_STORAGE_PASSWORD=change-me
JWT_SECRET_021=change-me
POWERSYNC_JWT_SECRET=change-me
POWERSYNC_JWT_KEY_B64=change-me
POWERSYNC_URL=https://bh.vps.honor3.com:13443
OTA_PUBLIC_BASE=http://bh.vps.honor3.com:13001
+61
View File
@@ -0,0 +1,61 @@
# 0.2.1 独立验证部署 (baihu /app/iboard-0.2.1)
与现网 `/app/iboard`(3001/宿主 MySQL) 完全隔离:本栈使用独立 PG 容器、端口 13443/13001/13002,不写原库。
**浏览器入口: `https://bh.vps.honor3.com:13443`**(自签证书,首次访问需在浏览器"高级→继续访问"接受一次;PowerSync 网页端必须运行在安全上下文,http://13001 入口仅供接口调试,任务模块会报 Navigator locks 错误)。
正式启用需替换受信证书:把 `bh.pem/bh.key` 换成受信证书后 `docker compose restart tls-front`(例如 Let's Encrypt DNS-01,80/443 已被 gateway 占用无法 HTTP-01)。
## 栈
| 服务 | 说明 |
| --- | --- |
| `pg` | postgres:16-alpine,`wal_level=logical`(供 PowerSync 逻辑复制),数据在 `./data/pg`,**不对外暴露端口** |
| `app` | 本仓库 Dockerfile 构建,13001 对外;启动时先 `prisma migrate deploy`;`DISABLE_CRON=1` 关闭定时任务 |
| `powersync` | journeyapps/powersync-service,13002 对外;源库=pg,bucket storage=同实例 PG 的 powersync schema |
## 首次部署
```bash
# 服务器上 (源码已上传到 /app/iboard-0.2.1)
cd /app/iboard-0.2.1/deploy/0.2.1
# 1. 生成 .env (参照 .env.example; POWERSYNC_JWT_KEY_B64 由 secret 派生)
umask 077
PG_PASSWORD=$(openssl rand -hex 16)
PS_STORAGE_PASSWORD=$(openssl rand -hex 16)
JWT_SECRET_021=$(openssl rand -hex 32)
POWERSYNC_JWT_SECRET=$(openssl rand -hex 32)
POWERSYNC_JWT_KEY_B64=$(printf %s "$POWERSYNC_JWT_SECRET" | openssl base64 -A | tr '+/' '-_' | tr -d '=')
cat > .env <<EOF
PG_PASSWORD=$PG_PASSWORD
PS_STORAGE_PASSWORD=$PS_STORAGE_PASSWORD
JWT_SECRET_021=$JWT_SECRET_021
POWERSYNC_JWT_SECRET=$POWERSYNC_JWT_SECRET
POWERSYNC_JWT_KEY_B64=$POWERSYNC_JWT_KEY_B64
POWERSYNC_URL=http://bh.vps.honor3.com:13002
OTA_PUBLIC_BASE=http://bh.vps.honor3.com:13001
EOF
# 2. 构建并启动
docker compose build app
docker compose up -d
# 3. 验证
docker compose ps
curl -s http://127.0.0.1:13001/api/health
docker compose logs powersync --tail 50 # 应看到连接源库/建 publication/sync config 部署成功
```
## 日常更新
```bash
cd /app/iboard-0.2.1
git archive 方式重新上传源码 tar 后解包覆盖 (data/.env 不受影响)
cd deploy/0.2.1 && docker compose build app && docker compose up -d app
```
## 注意
- `./data/pg` 为 0.2.1 独立数据卷;`./.env` 为密钥,两者均已 gitignore,更新源码时不会覆盖 `.env`(tar 解包不产生它)。
- PowerSync 的 publication / replication slot 由 service 自动管理(账号 iboard021 为容器内 superuser)。
- 同步规则改动:编辑 `powersync/sync-config.yaml` 后 `docker compose restart powersync`。
+84
View File
@@ -0,0 +1,84 @@
name: iboard-021
# 0.2.1 独立验证栈: PG (逻辑复制) + PowerSync + App, 与现网 /app/iboard 完全隔离
# 见 docs/V0.2/离线编辑模块/0.2.1实施方案.md; 端口 13001 (app) / 13002 (powersync), PG 不对外
services:
pg:
image: postgres:16-alpine
restart: unless-stopped
command: ["postgres", "-c", "wal_level=logical"]
environment:
POSTGRES_USER: iboard021
POSTGRES_PASSWORD: ${PG_PASSWORD:?PG_PASSWORD missing}
POSTGRES_DB: iboard021
# initdb 脚本用: 创建 powersync bucket storage 用户
PS_STORAGE_PASSWORD: ${PS_STORAGE_PASSWORD:?PS_STORAGE_PASSWORD missing}
volumes:
- ./data/pg:/var/lib/postgresql/data
- ./initdb:/docker-entrypoint-initdb.d:ro
healthcheck:
test: ["CMD-SHELL", "pg_isready -U iboard021 -d iboard021"]
interval: 5s
timeout: 5s
retries: 12
app:
build:
context: ../..
dockerfile: Dockerfile
restart: unless-stopped
depends_on:
pg:
condition: service_healthy
environment:
DATABASE_URL: postgresql://iboard021:${PG_PASSWORD}@pg:5432/iboard021
PORT: "13001"
JWT_SECRET: ${JWT_SECRET_021:?JWT_SECRET_021 missing}
POWERSYNC_JWT_SECRET: ${POWERSYNC_JWT_SECRET:?POWERSYNC_JWT_SECRET missing}
POWERSYNC_URL: ${POWERSYNC_URL:-http://bh.vps.honor3.com:13002}
OTA_PUBLIC_BASE: ${OTA_PUBLIC_BASE:-http://bh.vps.honor3.com:13001}
# 0.2.1 验证部署关闭定时任务 (新闻/油价/米家等), 避免重复外呼
DISABLE_CRON: "1"
command: ["sh", "-c", "npx prisma migrate deploy && node --experimental-strip-types --no-warnings server/index.js"]
ports:
- "13001:13001"
healthcheck:
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:13001/api/health || exit 1"]
interval: 30s
timeout: 5s
retries: 5
start_period: 20s
# TLS 前置 (自签证书): PowerSync 网页端必须在安全上下文运行 (navigator.locks),
# 因此浏览器入口统一走 https://bh.vps.honor3.com:13443 (证书接受一次即可, app+sync 同源同证书)
tls-front:
image: nginx:alpine
restart: unless-stopped
depends_on:
- app
- powersync
volumes:
- ./tls/nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ./data/tls:/etc/nginx/certs:ro
ports:
- "13443:443"
powersync:
image: journeyapps/powersync-service:latest
restart: unless-stopped
depends_on:
pg:
condition: service_healthy
command: ["start", "-r", "unified"]
volumes:
- ./powersync/service.yaml:/config/service.yaml:ro
- ./powersync/sync-config.yaml:/config/sync-config.yaml:ro
environment:
POWERSYNC_CONFIG_PATH: /config/service.yaml
# service.yaml 内 !env PS_* 引用 (整值替换; URI 在此组装)
PS_SOURCE_URI: postgresql://iboard021:${PG_PASSWORD}@pg:5432/iboard021?sslmode=disable
PS_STORAGE_URI: postgresql://powersync_storage:${PS_STORAGE_PASSWORD}@pg:5432/iboard021?sslmode=disable
PS_JWT_KEY_B64: ${POWERSYNC_JWT_KEY_B64:?POWERSYNC_JWT_KEY_B64 missing}
ports:
- "13002:8080"
+13
View File
@@ -0,0 +1,13 @@
#!/bin/bash
# 一次性 ETL: 清空 0.2.1 库 -> 从现网 MariaDB 只读快照导入
# 现网连接串从 iboard 容器环境变量读取 (不回显), 源库仅 SELECT
set -e
cd /app/iboard-0.2.1/deploy/0.2.1
SRC=$(docker inspect iboard --format '{{range .Config.Env}}{{println .}}{{end}}' | grep '^DATABASE_URL=' | cut -d= -f2-)
[ -n "$SRC" ] || { echo '未取到现网 DATABASE_URL'; exit 1; }
echo '--- truncate 0.2.1 库 ---'
docker compose exec -T pg psql -U iboard021 -d iboard021 -c "TRUNCATE TABLE \"User\",\"Project\",\"ProjectMember\",\"BoardColumn\",\"Task\",\"TaskMember\",\"TaskTag\",\"Habit\",\"CheckIn\",\"CheckList\",\"CheckListItem\",\"CheckListTemplate\",\"Article\",\"Strategy\",\"Indicator\",\"IndicatorPoint\",\"News\",\"Alert\",\"ServerNode\",\"ServerNodeHistory\",\"ServiceCheck\",\"Econ_SowInventory\",\"ScraperCache\",\"OilPriceHistory\",\"MihomeAccount\",\"MihomeHome\",\"MihomeDevice\",\"MihomeEnvSample\",\"MihomeEnvHour\" RESTART IDENTITY CASCADE;"
echo '--- etl run ---'
docker compose exec -T -e SRC_DATABASE_URL="$SRC" app node scripts/etl-mariadb-to-pg.mjs
@@ -0,0 +1,18 @@
#!/bin/bash
# 一次性初始化 (仅首次建库时执行): 创建 powersync bucket storage 专用用户
# PG >= 14 允许源库与 bucket storage 同实例 (powersync schema 由 service 自建)
set -e
: "${PS_STORAGE_PASSWORD:?PS_STORAGE_PASSWORD missing}"
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
DO \$\$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'powersync_storage') THEN
CREATE USER powersync_storage WITH PASSWORD '$PS_STORAGE_PASSWORD';
END IF;
END
\$\$;
GRANT CREATE ON DATABASE $POSTGRES_DB TO powersync_storage;
EOSQL
echo "[initdb] powersync_storage user ready."
+10
View File
@@ -0,0 +1,10 @@
-- 一次性初始化: PowerSync 逻辑复制所需 publication (服务不自建, 见 PSYNC_S1141)
-- 仅发布任务域 + User; 新增同步表时需 ALTER PUBLICATION powersync ADD TABLE ...
CREATE PUBLICATION powersync FOR TABLE
"Project",
"ProjectMember",
"BoardColumn",
"Task",
"TaskMember",
"TaskTag",
"User";
+41
View File
@@ -0,0 +1,41 @@
# PowerSync Service 主配置 (0.2.1 验证部署)
# 参考: https://docs.powersync.com/configuration/powersync-service/self-hosted-instances
# 注意: !env 是 YAML 整值标签, 只能整个值替换变量, 不能内嵌在 URI 字符串中;
# 完整连接串由 docker-compose 以 PS_* 环境变量注入。
replication:
connections:
- type: postgresql
# 源库: 本栈 pg 容器 (0.2.1 独立实例), 复制走 iboard021 账号
uri: !env PS_SOURCE_URI
sslmode: disable
# bucket storage: 同实例 PG (16 >= 14 允许同库不同 schema, service 自建 powersync schema)
storage:
type: postgresql
uri: !env PS_STORAGE_URI
sslmode: disable
port: 8080
sync_config:
path: /config/sync-config.yaml
# 客户端鉴权: app 后端 /api/powersync/token 签发 HS256 JWT (aud=powersync)
# oct 密钥 k = base64url(POWERSYNC_JWT_SECRET)
client_auth:
jwks:
keys:
- kty: oct
k: !env PS_JWT_KEY_B64
alg: HS256
audience:
- powersync
telemetry:
disable_telemetry_sharing: true
system:
logging:
level: info
format: text
+25
View File
@@ -0,0 +1,25 @@
# Sync Streams (edition 3): 任务模块 6 表 + User (展示用)
# Sequential ID Mapping (见 docs/V0.2/离线编辑模块/0.2.1实施方案.md §3):
# - 客户端主键 = uuid 列 (离线新建行同步回填后 id 稳定); int 自增 id 不下发
# - 外键输出 uuid 镜像列, 别名回 projectId/columnId/parentId/taskId (客户端字段名不变)
# - 引号保留 PG PascalCase 标识; 可见性按 ProjectMember 过滤
config:
edition: 3
streams:
iboard_users:
auto_subscribe: true
query: SELECT CAST("id" AS TEXT) AS "id", "name", "email" FROM "User"
iboard_task_data:
auto_subscribe: true
with:
my_projects: SELECT "projectId" FROM "ProjectMember" WHERE CAST("userId" AS TEXT) = auth.user_id()
queries:
- SELECT "uuid" AS "id", "uuid", "code", "name", CAST("ownerId" AS TEXT) AS "ownerId", "isPersonal", "archived", "notes", "taskKinds", "icon", "autoArchive", "createdAt", "updatedAt" FROM "Project" WHERE "id" IN my_projects
- SELECT "uuid" AS "id", "uuid", "projectUuid" AS "projectId", CAST("userId" AS TEXT) AS "userId", "permission", "createdAt" FROM "ProjectMember" WHERE "projectId" IN my_projects
- SELECT "uuid" AS "id", "uuid", "projectUuid" AS "projectId", "name", "sortOrder", "boundStatus", "retention", "createdAt", "updatedAt" FROM "BoardColumn" WHERE "projectId" IN my_projects
- SELECT "uuid" AS "id", "uuid", "projectUuid" AS "projectId", "columnUuid" AS "columnId", "parentUuid" AS "parentId", "title", "description", "kind", "markDate", "status", "doneAt", CAST("assigneeId" AS TEXT) AS "assigneeId", CAST("creatorId" AS TEXT) AS "creatorId", "extras", "sortOrder", "number", "archived", "archivedAt", "archiveSource", "createdAt", "updatedAt" FROM "Task" WHERE "projectId" IN my_projects
- SELECT "uuid" AS "id", "uuid", "taskUuid" AS "taskId", CAST("userId" AS TEXT) AS "userId" FROM "TaskMember" WHERE "taskId" IN (SELECT "id" FROM "Task" WHERE "projectId" IN my_projects)
- SELECT "uuid" AS "id", "uuid", "taskUuid" AS "taskId", "name" FROM "TaskTag" WHERE "taskId" IN (SELECT "id" FROM "Task" WHERE "projectId" IN my_projects)
+37
View File
@@ -0,0 +1,37 @@
# 0.2.1 TLS 前置: 单端口 13443, 按路径分流 (自签证书, 见 README)
# PowerSync 页面必须在安全上下文运行 (navigator.locks 仅 HTTPS/localhost), 故 app 与 sync 统一走 TLS
server {
listen 443 ssl;
server_name bh.vps.honor3.com;
ssl_certificate /etc/nginx/certs/bh.pem;
ssl_certificate_key /etc/nginx/certs/bh.key;
# PowerSync (HTTP 流式 + WebSocket 兜底)
location /sync/ {
proxy_pass http://powersync:8080;
proxy_http_version 1.1;
proxy_set_header Connection '';
proxy_buffering off;
proxy_read_timeout 3600s;
}
location /socket/ {
proxy_pass http://powersync:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
}
location /health {
proxy_pass http://powersync:8080;
}
# 应用 (静态前端 + API)
location / {
proxy_pass http://app:13001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
}
@@ -0,0 +1,103 @@
# 0.2.1 实施方案:PostgreSQL 迁移 + 任务模块离线编辑 (PowerSync)
| 项 | 内容 |
| --- | --- |
| 分支 | `dev-0.2.1`(worktree `iboard-dev-0.2.1`,独立临时分支,与 master / dev-0.2 隔离) |
| 日期 | 2026-10-25 |
| 依据 | [PowerSync可行性研究报告](./PowerSync可行性研究报告.md),按其 5.2.2 路线执行 |
| 目标 | 在现网应用与数据不受影响的前提下,验证任务模块离线编辑 + 联网后自动双向同步;数据库由 MariaDB 迁移至 PostgreSQL |
## 1. 已确认决策(2026-10-25 与需求方对齐)
| 决策点 | 结论 |
| --- | --- |
| 技术路线 | PowerSync 全链路(自部署 powersync-service) |
| 离线范围 | 仅任务模块(Project / ProjectMember / BoardColumn / Task / TaskMember / TaskTag);打卡、清单本阶段不纳入;新闻/指标/监控等时序域仅做普通缓存 |
| 客户端 | 先 Web / Windows 外壳(WebView2)跑通全链路;Android 真机后续验证 |
| 编号 | 项目短前缀由用户自拟(2~8 位,全局唯一);任务号 = 项目内自增整数,展示 `前缀-序号`;编号由服务端统一分配,离线创建的任务在同步定号前显示临时标识 |
| 初始数据 | 从现网 MariaDB 只读快照导出并转换导入新 PG;0.2.1 期间产生的新数据不回写现网 |
| 端口 | Web/API 13001、PowerSync WebSocket 13002、PG 仅容器内网(调试绑 127.0.0.1:15432) |
| 部署 | 源码上传 baihu `/app/iboard-0.2.1`,服务器上 `docker compose build`;不使用原 CI/CD |
| 现网保护 | `/app/iboard`、宿主 3306 MySQL、3001 端口、原 CI/CD 一律不使用(快照导出仅 SELECT) |
| 磁盘 | 允许在 baihu 执行 docker 悬空镜像/构建缓存的安全清理(磁盘仅剩 9.9G) |
## 2. 目标架构
```
[Web / Tauri WebView2]
React + @powersync/react
本地 WASM SQLite (OPFS 持久化)
│ 离线: 直接读写本地库; 写操作进入 upload queue
│ 联网: 批量 POST 上行到 Express API (按 uuid 幂等 upsert)
▼
[iboard-0.2.1 Express :13001] ── Prisma (adapter-pg) ──┐
+ /api/powersync/token (为登录用户签发同步 JWT) ▼
[PostgreSQL 容器] (wal_level=logical)
▲ 逻辑复制 (publication + replication slot)
[powersync-service :13002] ── Sync Rules: 任务域 6 表 + User 只读引用, 按 ProjectMember 过滤
```
- 写路径:客户端本地写 → upload queue → 上行 API → Prisma 写 PG → 逻辑复制捕获 → 广播各端;
- 读路径:任务模块页面全部改读本地 SQLite(@powersync/react 响应式查询),其余页面维持 axios REST;
- 认证:复用现有 jsonwebtoken 体系,新增 `/api/powersync/token` 签发 PowerSync 校验的 JWT。
## 3. 数据模型改造(原则:只增不改)
采用报告 3.2 中的「新增 uuid 列 + 应用层幂等 upsert」选项,不做全表主键 UUID 化:外键关系全部保留,存量数据迁移风险最小。
- 任务域 6 表各加 `uuid varchar(36) unique`(客户端创建时生成;存量行导入时回填);
- `Project` 加 `code varchar(8) unique`(用户自拟短前缀;存量项目导入时回填自动码,后续可改);
- `Task` 加 `number int`,`@@unique([projectId, number])`(服务端按项目 max+1 分配;离线创建的任务上行时定号,本地未定号行显示临时标识);
- 主键仍为自增 Int,业务外键不动;客户端上行一律以 uuid 引用父子行,服务端解析为内部 id;
- Prisma datasource: `mysql` → `postgresql`;本分支重建基线迁移(旧 MySQL 迁移文件移除,历史保留在 git)。
### 3.1 Sequential ID Mapping(落地时按官方模式补充)
按 PowerSync 官方 [Sequential ID Mapping](https://docs.powersync.com/client-sdks/advanced/sequential-id-mapping) 模式实施,解决"离线新建行同步回填后本地 id 变化"问题:
- 任务域 6 表再加**外键 uuid 镜像列**(`Task.projectUuid/columnUuid/parentUuid`、`BoardColumn.projectUuid`、`ProjectMember.projectUuid`、`TaskMember/TaskTag.taskUuid`),由 **PG 触发器**在写入时按 int 外键自动回填(迁移 `20261026010000_uuid_fk_mapping`),库级 NOT NULL;
- Sync Streams 以 **`uuid` 作为客户端主键**(`SELECT "uuid" AS "id"`),镜像列别名输出回 `projectId/columnId/parentId/taskId` —— 客户端 schema 与页面代码**零改动**;
- 服务端 upload 处理器按 uuid 解析父行(`findUnique({ where: { uuid } })`),解析后再写 int 外键 → 触发器回填镜像,两侧闭环一致;
- 镜像列在 Prisma 模型中声明为可空(触发器保证库级非空),避免 create 校验拦截。
## 4. 同步与冲突
- Sync Rules 仅下发任务域 6 表 + `User`(展示名称/头像用),按 `ProjectMember.userId = auth.parameters.userId` 过滤项目可见性;时序/监控/米家等表不纳入;
- 上行:`POST /api/powersync/upload` 批处理客户端 CRUD 操作,按 uuid 幂等 upsert,更新时以服务端时间戳做 LWW 仲裁;
- 冲突:字段级 LWW 为主;`BoardColumn.sortOrder` / `Task.sortOrder` 由服务端重排仲裁;并发唯一冲突(项目前缀、看板列名)返回明确错误,客户端提示重试;
- `Task.number` / `Project.code` 由服务端唯一分配,多端并发下天然无冲突。
## 5. 部署拓扑(baihu `/app/iboard-0.2.1`)
docker compose 三服务:
| 服务 | 镜像 | 端口 | 说明 |
| --- | --- | --- | --- |
| `pg-021` | postgres:16-alpine | 仅容器内网 | `wal_level=logical`;数据卷 `./data/pg` |
| `powersync-021` | powersync 官方镜像 | 13002 对外 | 连接 PG 逻辑复制 + WebSocket 下发 |
| `app-021` | 本仓库 Dockerfile 构建 | 13001 对外 | `OTA_PUBLIC_BASE=http://bh.vps.honor3:13001` |
- 环境变量由 compose 注入:`DATABASE_URL`(指向 pg-021)、`JWT_SECRET`(0.2.1 独立新设)、`PORT=13001`;
- 0.2.1 容器内 cron/米家调度预计无凭证或产生重复外呼,部署时以环境开关关闭(实现于 M4)。
## 6. 数据迁移(一次性)
1. 在 baihu 上用仓库自带 `mariadb` 驱动以只读 SQL 从宿主 MySQL(3306) 导出全表 JSON(仅 SELECT);
2. 转换:回填 uuid / `Project.code`(按名称自动生成,可后改)/ `Task.number`(按项目内 createdAt 顺序);时间字段转 PG 时间戳;
3. PG 侧先 `prisma migrate deploy` 建基线表,再执行 ETL 写入;
4. 校验:逐表行数比对 + 抽样字段比对,输出核对报告。
## 7. 里程碑
1. **M1** schema/适配层切 PG(本提交):schema 字段、db.js 适配器、基线迁移重建、本地 `prisma generate` 通过;
2. **M2** 服务端:powersync token 端点、upload 幂等上行端点、任务域路由幂等化与编号分配逻辑;
3. **M3** 前端:任务模块数据层切 PowerSync(本地库 + useQuery + 上传队列),桌面端联调;
4. **M4** compose 编排 + ETL 导数 + baihu 部署,端口/现网隔离验证;
5. **M5** 离线-联网闭环验证(断网编辑 → 恢复自动同步 → 多端一致),Android 真机评估。
## 8. 开放问题 / 风险
- powersync-service 的元数据存储(bucket storage)对 MongoDB 的依赖需在部署阶段核实;若当前版本不支持用 PG 存元数据,则加一个 mongo 容器;
- Android System WebView 的 OPFS/WASM SQLite 兼容性(M5 评估,先桌面);
- 项目前缀全局唯一在多端并发下的冲突提示体验(上行返回结构化错误码);
- 0.2.1 验证期数据与现网彻底隔离,不回迁;若验证后需并回主线,另行决策迁移口径。
+106 -110
View File
@@ -16,8 +16,8 @@ import type * as Prisma from "./internal/prismaNamespace.ts"
export type IntFilter<$PrismaModel = never> = { export type IntFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> equals?: number | Prisma.IntFieldRefInput<$PrismaModel>
in?: number[] in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
notIn?: number[] notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
lt?: number | Prisma.IntFieldRefInput<$PrismaModel> lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel> lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel> gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
@@ -27,8 +27,8 @@ export type IntFilter<$PrismaModel = never> = {
export type StringFilter<$PrismaModel = never> = { export type StringFilter<$PrismaModel = never> = {
equals?: string | Prisma.StringFieldRefInput<$PrismaModel> equals?: string | Prisma.StringFieldRefInput<$PrismaModel>
in?: string[] in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel>
notIn?: string[] notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel>
lt?: string | Prisma.StringFieldRefInput<$PrismaModel> lt?: string | Prisma.StringFieldRefInput<$PrismaModel>
lte?: string | Prisma.StringFieldRefInput<$PrismaModel> lte?: string | Prisma.StringFieldRefInput<$PrismaModel>
gt?: string | Prisma.StringFieldRefInput<$PrismaModel> gt?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -36,14 +36,14 @@ export type StringFilter<$PrismaModel = never> = {
contains?: string | Prisma.StringFieldRefInput<$PrismaModel> contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
search?: string mode?: Prisma.QueryMode
not?: Prisma.NestedStringFilter<$PrismaModel> | string not?: Prisma.NestedStringFilter<$PrismaModel> | string
} }
export type DateTimeFilter<$PrismaModel = never> = { export type DateTimeFilter<$PrismaModel = never> = {
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
in?: Date[] | string[] in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
notIn?: Date[] | string[] notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
@@ -53,8 +53,8 @@ export type DateTimeFilter<$PrismaModel = never> = {
export type IntWithAggregatesFilter<$PrismaModel = never> = { export type IntWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> equals?: number | Prisma.IntFieldRefInput<$PrismaModel>
in?: number[] in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
notIn?: number[] notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
lt?: number | Prisma.IntFieldRefInput<$PrismaModel> lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel> lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel> gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
@@ -69,8 +69,8 @@ export type IntWithAggregatesFilter<$PrismaModel = never> = {
export type StringWithAggregatesFilter<$PrismaModel = never> = { export type StringWithAggregatesFilter<$PrismaModel = never> = {
equals?: string | Prisma.StringFieldRefInput<$PrismaModel> equals?: string | Prisma.StringFieldRefInput<$PrismaModel>
in?: string[] in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel>
notIn?: string[] notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel>
lt?: string | Prisma.StringFieldRefInput<$PrismaModel> lt?: string | Prisma.StringFieldRefInput<$PrismaModel>
lte?: string | Prisma.StringFieldRefInput<$PrismaModel> lte?: string | Prisma.StringFieldRefInput<$PrismaModel>
gt?: string | Prisma.StringFieldRefInput<$PrismaModel> gt?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -78,7 +78,7 @@ export type StringWithAggregatesFilter<$PrismaModel = never> = {
contains?: string | Prisma.StringFieldRefInput<$PrismaModel> contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
search?: string mode?: Prisma.QueryMode
not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string
_count?: Prisma.NestedIntFilter<$PrismaModel> _count?: Prisma.NestedIntFilter<$PrismaModel>
_min?: Prisma.NestedStringFilter<$PrismaModel> _min?: Prisma.NestedStringFilter<$PrismaModel>
@@ -87,8 +87,8 @@ export type StringWithAggregatesFilter<$PrismaModel = never> = {
export type DateTimeWithAggregatesFilter<$PrismaModel = never> = { export type DateTimeWithAggregatesFilter<$PrismaModel = never> = {
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
in?: Date[] | string[] in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
notIn?: Date[] | string[] notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
@@ -108,7 +108,7 @@ export type JsonFilter<$PrismaModel = never> =
export type JsonFilterBase<$PrismaModel = never> = { export type JsonFilterBase<$PrismaModel = never> = {
equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter
path?: string path?: string[]
mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel>
string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -116,10 +116,10 @@ export type JsonFilterBase<$PrismaModel = never> = {
array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
lt?: runtime.InputJsonValue lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
lte?: runtime.InputJsonValue lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
gt?: runtime.InputJsonValue gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
gte?: runtime.InputJsonValue gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter
} }
@@ -132,7 +132,7 @@ export type JsonWithAggregatesFilter<$PrismaModel = never> =
export type JsonWithAggregatesFilterBase<$PrismaModel = never> = { export type JsonWithAggregatesFilterBase<$PrismaModel = never> = {
equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter
path?: string path?: string[]
mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel>
string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -140,10 +140,10 @@ export type JsonWithAggregatesFilterBase<$PrismaModel = never> = {
array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
lt?: runtime.InputJsonValue lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
lte?: runtime.InputJsonValue lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
gt?: runtime.InputJsonValue gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
gte?: runtime.InputJsonValue gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter
_count?: Prisma.NestedIntFilter<$PrismaModel> _count?: Prisma.NestedIntFilter<$PrismaModel>
_min?: Prisma.NestedJsonFilter<$PrismaModel> _min?: Prisma.NestedJsonFilter<$PrismaModel>
@@ -165,8 +165,8 @@ export type BoolWithAggregatesFilter<$PrismaModel = never> = {
export type FloatFilter<$PrismaModel = never> = { export type FloatFilter<$PrismaModel = never> = {
equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> equals?: number | Prisma.FloatFieldRefInput<$PrismaModel>
in?: number[] in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel>
notIn?: number[] notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel>
lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> lt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> lte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> gt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
@@ -176,8 +176,8 @@ export type FloatFilter<$PrismaModel = never> = {
export type FloatWithAggregatesFilter<$PrismaModel = never> = { export type FloatWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> equals?: number | Prisma.FloatFieldRefInput<$PrismaModel>
in?: number[] in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel>
notIn?: number[] notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel>
lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> lt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> lte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> gt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
@@ -192,8 +192,8 @@ export type FloatWithAggregatesFilter<$PrismaModel = never> = {
export type StringNullableFilter<$PrismaModel = never> = { export type StringNullableFilter<$PrismaModel = never> = {
equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null
in?: string[] | null in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null
notIn?: string[] | null notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null
lt?: string | Prisma.StringFieldRefInput<$PrismaModel> lt?: string | Prisma.StringFieldRefInput<$PrismaModel>
lte?: string | Prisma.StringFieldRefInput<$PrismaModel> lte?: string | Prisma.StringFieldRefInput<$PrismaModel>
gt?: string | Prisma.StringFieldRefInput<$PrismaModel> gt?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -201,7 +201,7 @@ export type StringNullableFilter<$PrismaModel = never> = {
contains?: string | Prisma.StringFieldRefInput<$PrismaModel> contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
search?: string mode?: Prisma.QueryMode
not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null
} }
@@ -212,8 +212,8 @@ export type SortOrderInput = {
export type StringNullableWithAggregatesFilter<$PrismaModel = never> = { export type StringNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null
in?: string[] | null in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null
notIn?: string[] | null notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null
lt?: string | Prisma.StringFieldRefInput<$PrismaModel> lt?: string | Prisma.StringFieldRefInput<$PrismaModel>
lte?: string | Prisma.StringFieldRefInput<$PrismaModel> lte?: string | Prisma.StringFieldRefInput<$PrismaModel>
gt?: string | Prisma.StringFieldRefInput<$PrismaModel> gt?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -221,7 +221,7 @@ export type StringNullableWithAggregatesFilter<$PrismaModel = never> = {
contains?: string | Prisma.StringFieldRefInput<$PrismaModel> contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
search?: string mode?: Prisma.QueryMode
not?: Prisma.NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null not?: Prisma.NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null
_count?: Prisma.NestedIntNullableFilter<$PrismaModel> _count?: Prisma.NestedIntNullableFilter<$PrismaModel>
_min?: Prisma.NestedStringNullableFilter<$PrismaModel> _min?: Prisma.NestedStringNullableFilter<$PrismaModel>
@@ -230,8 +230,8 @@ export type StringNullableWithAggregatesFilter<$PrismaModel = never> = {
export type BigIntFilter<$PrismaModel = never> = { export type BigIntFilter<$PrismaModel = never> = {
equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
in?: bigint[] | number[] in?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel>
notIn?: bigint[] | number[] notIn?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel>
lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
@@ -241,8 +241,8 @@ export type BigIntFilter<$PrismaModel = never> = {
export type BigIntWithAggregatesFilter<$PrismaModel = never> = { export type BigIntWithAggregatesFilter<$PrismaModel = never> = {
equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
in?: bigint[] | number[] in?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel>
notIn?: bigint[] | number[] notIn?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel>
lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
@@ -264,7 +264,7 @@ export type JsonNullableFilter<$PrismaModel = never> =
export type JsonNullableFilterBase<$PrismaModel = never> = { export type JsonNullableFilterBase<$PrismaModel = never> = {
equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter
path?: string path?: string[]
mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel>
string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -272,10 +272,10 @@ export type JsonNullableFilterBase<$PrismaModel = never> = {
array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
lt?: runtime.InputJsonValue lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
lte?: runtime.InputJsonValue lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
gt?: runtime.InputJsonValue gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
gte?: runtime.InputJsonValue gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter
} }
@@ -288,7 +288,7 @@ export type JsonNullableWithAggregatesFilter<$PrismaModel = never> =
export type JsonNullableWithAggregatesFilterBase<$PrismaModel = never> = { export type JsonNullableWithAggregatesFilterBase<$PrismaModel = never> = {
equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter
path?: string path?: string[]
mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel>
string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -296,10 +296,10 @@ export type JsonNullableWithAggregatesFilterBase<$PrismaModel = never> = {
array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
lt?: runtime.InputJsonValue lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
lte?: runtime.InputJsonValue lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
gt?: runtime.InputJsonValue gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
gte?: runtime.InputJsonValue gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter
_count?: Prisma.NestedIntNullableFilter<$PrismaModel> _count?: Prisma.NestedIntNullableFilter<$PrismaModel>
_min?: Prisma.NestedJsonNullableFilter<$PrismaModel> _min?: Prisma.NestedJsonNullableFilter<$PrismaModel>
@@ -308,8 +308,8 @@ export type JsonNullableWithAggregatesFilterBase<$PrismaModel = never> = {
export type IntNullableFilter<$PrismaModel = never> = { export type IntNullableFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null
in?: number[] | null in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
notIn?: number[] | null notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
lt?: number | Prisma.IntFieldRefInput<$PrismaModel> lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel> lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel> gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
@@ -319,8 +319,8 @@ export type IntNullableFilter<$PrismaModel = never> = {
export type DateTimeNullableFilter<$PrismaModel = never> = { export type DateTimeNullableFilter<$PrismaModel = never> = {
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null
in?: Date[] | string[] | null in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
notIn?: Date[] | string[] | null notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
@@ -330,8 +330,8 @@ export type DateTimeNullableFilter<$PrismaModel = never> = {
export type IntNullableWithAggregatesFilter<$PrismaModel = never> = { export type IntNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null
in?: number[] | null in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
notIn?: number[] | null notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
lt?: number | Prisma.IntFieldRefInput<$PrismaModel> lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel> lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel> gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
@@ -346,8 +346,8 @@ export type IntNullableWithAggregatesFilter<$PrismaModel = never> = {
export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null
in?: Date[] | string[] | null in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
notIn?: Date[] | string[] | null notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
@@ -360,8 +360,8 @@ export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
export type FloatNullableFilter<$PrismaModel = never> = { export type FloatNullableFilter<$PrismaModel = never> = {
equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null
in?: number[] | null in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null
notIn?: number[] | null notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null
lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> lt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> lte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> gt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
@@ -371,8 +371,8 @@ export type FloatNullableFilter<$PrismaModel = never> = {
export type FloatNullableWithAggregatesFilter<$PrismaModel = never> = { export type FloatNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null
in?: number[] | null in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null
notIn?: number[] | null notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null
lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> lt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> lte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> gt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
@@ -387,8 +387,8 @@ export type FloatNullableWithAggregatesFilter<$PrismaModel = never> = {
export type NestedIntFilter<$PrismaModel = never> = { export type NestedIntFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> equals?: number | Prisma.IntFieldRefInput<$PrismaModel>
in?: number[] in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
notIn?: number[] notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
lt?: number | Prisma.IntFieldRefInput<$PrismaModel> lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel> lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel> gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
@@ -398,8 +398,8 @@ export type NestedIntFilter<$PrismaModel = never> = {
export type NestedStringFilter<$PrismaModel = never> = { export type NestedStringFilter<$PrismaModel = never> = {
equals?: string | Prisma.StringFieldRefInput<$PrismaModel> equals?: string | Prisma.StringFieldRefInput<$PrismaModel>
in?: string[] in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel>
notIn?: string[] notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel>
lt?: string | Prisma.StringFieldRefInput<$PrismaModel> lt?: string | Prisma.StringFieldRefInput<$PrismaModel>
lte?: string | Prisma.StringFieldRefInput<$PrismaModel> lte?: string | Prisma.StringFieldRefInput<$PrismaModel>
gt?: string | Prisma.StringFieldRefInput<$PrismaModel> gt?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -407,14 +407,13 @@ export type NestedStringFilter<$PrismaModel = never> = {
contains?: string | Prisma.StringFieldRefInput<$PrismaModel> contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
search?: string
not?: Prisma.NestedStringFilter<$PrismaModel> | string not?: Prisma.NestedStringFilter<$PrismaModel> | string
} }
export type NestedDateTimeFilter<$PrismaModel = never> = { export type NestedDateTimeFilter<$PrismaModel = never> = {
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
in?: Date[] | string[] in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
notIn?: Date[] | string[] notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
@@ -424,8 +423,8 @@ export type NestedDateTimeFilter<$PrismaModel = never> = {
export type NestedIntWithAggregatesFilter<$PrismaModel = never> = { export type NestedIntWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> equals?: number | Prisma.IntFieldRefInput<$PrismaModel>
in?: number[] in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
notIn?: number[] notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
lt?: number | Prisma.IntFieldRefInput<$PrismaModel> lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel> lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel> gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
@@ -440,8 +439,8 @@ export type NestedIntWithAggregatesFilter<$PrismaModel = never> = {
export type NestedFloatFilter<$PrismaModel = never> = { export type NestedFloatFilter<$PrismaModel = never> = {
equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> equals?: number | Prisma.FloatFieldRefInput<$PrismaModel>
in?: number[] in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel>
notIn?: number[] notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel>
lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> lt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> lte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> gt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
@@ -451,8 +450,8 @@ export type NestedFloatFilter<$PrismaModel = never> = {
export type NestedStringWithAggregatesFilter<$PrismaModel = never> = { export type NestedStringWithAggregatesFilter<$PrismaModel = never> = {
equals?: string | Prisma.StringFieldRefInput<$PrismaModel> equals?: string | Prisma.StringFieldRefInput<$PrismaModel>
in?: string[] in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel>
notIn?: string[] notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel>
lt?: string | Prisma.StringFieldRefInput<$PrismaModel> lt?: string | Prisma.StringFieldRefInput<$PrismaModel>
lte?: string | Prisma.StringFieldRefInput<$PrismaModel> lte?: string | Prisma.StringFieldRefInput<$PrismaModel>
gt?: string | Prisma.StringFieldRefInput<$PrismaModel> gt?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -460,7 +459,6 @@ export type NestedStringWithAggregatesFilter<$PrismaModel = never> = {
contains?: string | Prisma.StringFieldRefInput<$PrismaModel> contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
search?: string
not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string not?: Prisma.NestedStringWithAggregatesFilter<$PrismaModel> | string
_count?: Prisma.NestedIntFilter<$PrismaModel> _count?: Prisma.NestedIntFilter<$PrismaModel>
_min?: Prisma.NestedStringFilter<$PrismaModel> _min?: Prisma.NestedStringFilter<$PrismaModel>
@@ -469,8 +467,8 @@ export type NestedStringWithAggregatesFilter<$PrismaModel = never> = {
export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = { export type NestedDateTimeWithAggregatesFilter<$PrismaModel = never> = {
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
in?: Date[] | string[] in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
notIn?: Date[] | string[] notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel>
lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
@@ -490,7 +488,7 @@ export type NestedJsonFilter<$PrismaModel = never> =
export type NestedJsonFilterBase<$PrismaModel = never> = { export type NestedJsonFilterBase<$PrismaModel = never> = {
equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter
path?: string path?: string[]
mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel>
string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -498,10 +496,10 @@ export type NestedJsonFilterBase<$PrismaModel = never> = {
array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
lt?: runtime.InputJsonValue lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
lte?: runtime.InputJsonValue lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
gt?: runtime.InputJsonValue gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
gte?: runtime.InputJsonValue gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter
} }
@@ -520,8 +518,8 @@ export type NestedBoolWithAggregatesFilter<$PrismaModel = never> = {
export type NestedFloatWithAggregatesFilter<$PrismaModel = never> = { export type NestedFloatWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> equals?: number | Prisma.FloatFieldRefInput<$PrismaModel>
in?: number[] in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel>
notIn?: number[] notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel>
lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> lt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> lte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> gt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
@@ -536,8 +534,8 @@ export type NestedFloatWithAggregatesFilter<$PrismaModel = never> = {
export type NestedStringNullableFilter<$PrismaModel = never> = { export type NestedStringNullableFilter<$PrismaModel = never> = {
equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null
in?: string[] | null in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null
notIn?: string[] | null notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null
lt?: string | Prisma.StringFieldRefInput<$PrismaModel> lt?: string | Prisma.StringFieldRefInput<$PrismaModel>
lte?: string | Prisma.StringFieldRefInput<$PrismaModel> lte?: string | Prisma.StringFieldRefInput<$PrismaModel>
gt?: string | Prisma.StringFieldRefInput<$PrismaModel> gt?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -545,14 +543,13 @@ export type NestedStringNullableFilter<$PrismaModel = never> = {
contains?: string | Prisma.StringFieldRefInput<$PrismaModel> contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
search?: string
not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null not?: Prisma.NestedStringNullableFilter<$PrismaModel> | string | null
} }
export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = { export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null equals?: string | Prisma.StringFieldRefInput<$PrismaModel> | null
in?: string[] | null in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null
notIn?: string[] | null notIn?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel> | null
lt?: string | Prisma.StringFieldRefInput<$PrismaModel> lt?: string | Prisma.StringFieldRefInput<$PrismaModel>
lte?: string | Prisma.StringFieldRefInput<$PrismaModel> lte?: string | Prisma.StringFieldRefInput<$PrismaModel>
gt?: string | Prisma.StringFieldRefInput<$PrismaModel> gt?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -560,7 +557,6 @@ export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = {
contains?: string | Prisma.StringFieldRefInput<$PrismaModel> contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> startsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel> endsWith?: string | Prisma.StringFieldRefInput<$PrismaModel>
search?: string
not?: Prisma.NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null not?: Prisma.NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null
_count?: Prisma.NestedIntNullableFilter<$PrismaModel> _count?: Prisma.NestedIntNullableFilter<$PrismaModel>
_min?: Prisma.NestedStringNullableFilter<$PrismaModel> _min?: Prisma.NestedStringNullableFilter<$PrismaModel>
@@ -569,8 +565,8 @@ export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = {
export type NestedIntNullableFilter<$PrismaModel = never> = { export type NestedIntNullableFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null
in?: number[] | null in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
notIn?: number[] | null notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
lt?: number | Prisma.IntFieldRefInput<$PrismaModel> lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel> lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel> gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
@@ -580,8 +576,8 @@ export type NestedIntNullableFilter<$PrismaModel = never> = {
export type NestedBigIntFilter<$PrismaModel = never> = { export type NestedBigIntFilter<$PrismaModel = never> = {
equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
in?: bigint[] | number[] in?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel>
notIn?: bigint[] | number[] notIn?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel>
lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
@@ -591,8 +587,8 @@ export type NestedBigIntFilter<$PrismaModel = never> = {
export type NestedBigIntWithAggregatesFilter<$PrismaModel = never> = { export type NestedBigIntWithAggregatesFilter<$PrismaModel = never> = {
equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> equals?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
in?: bigint[] | number[] in?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel>
notIn?: bigint[] | number[] notIn?: bigint[] | number[] | Prisma.ListBigIntFieldRefInput<$PrismaModel>
lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> lt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> lte?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel> gt?: bigint | number | Prisma.BigIntFieldRefInput<$PrismaModel>
@@ -614,7 +610,7 @@ export type NestedJsonNullableFilter<$PrismaModel = never> =
export type NestedJsonNullableFilterBase<$PrismaModel = never> = { export type NestedJsonNullableFilterBase<$PrismaModel = never> = {
equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter
path?: string path?: string[]
mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel>
string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel>
string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel>
@@ -622,17 +618,17 @@ export type NestedJsonNullableFilterBase<$PrismaModel = never> = {
array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null
lt?: runtime.InputJsonValue lt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
lte?: runtime.InputJsonValue lte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
gt?: runtime.InputJsonValue gt?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
gte?: runtime.InputJsonValue gte?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel>
not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter
} }
export type NestedDateTimeNullableFilter<$PrismaModel = never> = { export type NestedDateTimeNullableFilter<$PrismaModel = never> = {
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null
in?: Date[] | string[] | null in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
notIn?: Date[] | string[] | null notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
@@ -642,8 +638,8 @@ export type NestedDateTimeNullableFilter<$PrismaModel = never> = {
export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = { export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null equals?: number | Prisma.IntFieldRefInput<$PrismaModel> | null
in?: number[] | null in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
notIn?: number[] | null notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel> | null
lt?: number | Prisma.IntFieldRefInput<$PrismaModel> lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel> lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel> gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
@@ -658,8 +654,8 @@ export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = {
export type NestedFloatNullableFilter<$PrismaModel = never> = { export type NestedFloatNullableFilter<$PrismaModel = never> = {
equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null
in?: number[] | null in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null
notIn?: number[] | null notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null
lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> lt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> lte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> gt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
@@ -669,8 +665,8 @@ export type NestedFloatNullableFilter<$PrismaModel = never> = {
export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = { export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null
in?: Date[] | string[] | null in?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
notIn?: Date[] | string[] | null notIn?: Date[] | string[] | Prisma.ListDateTimeFieldRefInput<$PrismaModel> | null
lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>
@@ -683,8 +679,8 @@ export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
export type NestedFloatNullableWithAggregatesFilter<$PrismaModel = never> = { export type NestedFloatNullableWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null equals?: number | Prisma.FloatFieldRefInput<$PrismaModel> | null
in?: number[] | null in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null
notIn?: number[] | null notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel> | null
lt?: number | Prisma.FloatFieldRefInput<$PrismaModel> lt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
lte?: number | Prisma.FloatFieldRefInput<$PrismaModel> lte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gt?: number | Prisma.FloatFieldRefInput<$PrismaModel> gt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
File diff suppressed because one or more lines are too long
+287 -249
View File
@@ -464,6 +464,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.UserCreateManyArgs<ExtArgs> args: Prisma.UserCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.UserCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>[]
}
delete: { delete: {
args: Prisma.UserDeleteArgs<ExtArgs> args: Prisma.UserDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
@@ -480,6 +484,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.UserUpdateManyArgs<ExtArgs> args: Prisma.UserUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.UserUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>[]
}
upsert: { upsert: {
args: Prisma.UserUpsertArgs<ExtArgs> args: Prisma.UserUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$UserPayload>
@@ -530,6 +538,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ArticleCreateManyArgs<ExtArgs> args: Prisma.ArticleCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.ArticleCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ArticlePayload>[]
}
delete: { delete: {
args: Prisma.ArticleDeleteArgs<ExtArgs> args: Prisma.ArticleDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ArticlePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ArticlePayload>
@@ -546,6 +558,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ArticleUpdateManyArgs<ExtArgs> args: Prisma.ArticleUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.ArticleUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ArticlePayload>[]
}
upsert: { upsert: {
args: Prisma.ArticleUpsertArgs<ExtArgs> args: Prisma.ArticleUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ArticlePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ArticlePayload>
@@ -596,6 +612,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.StrategyCreateManyArgs<ExtArgs> args: Prisma.StrategyCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.StrategyCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload>[]
}
delete: { delete: {
args: Prisma.StrategyDeleteArgs<ExtArgs> args: Prisma.StrategyDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload>
@@ -612,6 +632,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.StrategyUpdateManyArgs<ExtArgs> args: Prisma.StrategyUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.StrategyUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload>[]
}
upsert: { upsert: {
args: Prisma.StrategyUpsertArgs<ExtArgs> args: Prisma.StrategyUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload>
@@ -662,6 +686,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.IndicatorCreateManyArgs<ExtArgs> args: Prisma.IndicatorCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.IndicatorCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$IndicatorPayload>[]
}
delete: { delete: {
args: Prisma.IndicatorDeleteArgs<ExtArgs> args: Prisma.IndicatorDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$IndicatorPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$IndicatorPayload>
@@ -678,6 +706,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.IndicatorUpdateManyArgs<ExtArgs> args: Prisma.IndicatorUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.IndicatorUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$IndicatorPayload>[]
}
upsert: { upsert: {
args: Prisma.IndicatorUpsertArgs<ExtArgs> args: Prisma.IndicatorUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$IndicatorPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$IndicatorPayload>
@@ -728,6 +760,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.IndicatorPointCreateManyArgs<ExtArgs> args: Prisma.IndicatorPointCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.IndicatorPointCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$IndicatorPointPayload>[]
}
delete: { delete: {
args: Prisma.IndicatorPointDeleteArgs<ExtArgs> args: Prisma.IndicatorPointDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$IndicatorPointPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$IndicatorPointPayload>
@@ -744,6 +780,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.IndicatorPointUpdateManyArgs<ExtArgs> args: Prisma.IndicatorPointUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.IndicatorPointUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$IndicatorPointPayload>[]
}
upsert: { upsert: {
args: Prisma.IndicatorPointUpsertArgs<ExtArgs> args: Prisma.IndicatorPointUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$IndicatorPointPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$IndicatorPointPayload>
@@ -794,6 +834,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.NewsCreateManyArgs<ExtArgs> args: Prisma.NewsCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.NewsCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$NewsPayload>[]
}
delete: { delete: {
args: Prisma.NewsDeleteArgs<ExtArgs> args: Prisma.NewsDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$NewsPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$NewsPayload>
@@ -810,6 +854,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.NewsUpdateManyArgs<ExtArgs> args: Prisma.NewsUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.NewsUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$NewsPayload>[]
}
upsert: { upsert: {
args: Prisma.NewsUpsertArgs<ExtArgs> args: Prisma.NewsUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$NewsPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$NewsPayload>
@@ -860,6 +908,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.AlertCreateManyArgs<ExtArgs> args: Prisma.AlertCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.AlertCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AlertPayload>[]
}
delete: { delete: {
args: Prisma.AlertDeleteArgs<ExtArgs> args: Prisma.AlertDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AlertPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$AlertPayload>
@@ -876,6 +928,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.AlertUpdateManyArgs<ExtArgs> args: Prisma.AlertUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.AlertUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AlertPayload>[]
}
upsert: { upsert: {
args: Prisma.AlertUpsertArgs<ExtArgs> args: Prisma.AlertUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$AlertPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$AlertPayload>
@@ -926,6 +982,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ServerNodeCreateManyArgs<ExtArgs> args: Prisma.ServerNodeCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.ServerNodeCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ServerNodePayload>[]
}
delete: { delete: {
args: Prisma.ServerNodeDeleteArgs<ExtArgs> args: Prisma.ServerNodeDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ServerNodePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ServerNodePayload>
@@ -942,6 +1002,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ServerNodeUpdateManyArgs<ExtArgs> args: Prisma.ServerNodeUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.ServerNodeUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ServerNodePayload>[]
}
upsert: { upsert: {
args: Prisma.ServerNodeUpsertArgs<ExtArgs> args: Prisma.ServerNodeUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ServerNodePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ServerNodePayload>
@@ -992,6 +1056,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ServerNodeHistoryCreateManyArgs<ExtArgs> args: Prisma.ServerNodeHistoryCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.ServerNodeHistoryCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ServerNodeHistoryPayload>[]
}
delete: { delete: {
args: Prisma.ServerNodeHistoryDeleteArgs<ExtArgs> args: Prisma.ServerNodeHistoryDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ServerNodeHistoryPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ServerNodeHistoryPayload>
@@ -1008,6 +1076,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ServerNodeHistoryUpdateManyArgs<ExtArgs> args: Prisma.ServerNodeHistoryUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.ServerNodeHistoryUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ServerNodeHistoryPayload>[]
}
upsert: { upsert: {
args: Prisma.ServerNodeHistoryUpsertArgs<ExtArgs> args: Prisma.ServerNodeHistoryUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ServerNodeHistoryPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ServerNodeHistoryPayload>
@@ -1058,6 +1130,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ServiceCheckCreateManyArgs<ExtArgs> args: Prisma.ServiceCheckCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.ServiceCheckCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ServiceCheckPayload>[]
}
delete: { delete: {
args: Prisma.ServiceCheckDeleteArgs<ExtArgs> args: Prisma.ServiceCheckDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ServiceCheckPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ServiceCheckPayload>
@@ -1074,6 +1150,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ServiceCheckUpdateManyArgs<ExtArgs> args: Prisma.ServiceCheckUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.ServiceCheckUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ServiceCheckPayload>[]
}
upsert: { upsert: {
args: Prisma.ServiceCheckUpsertArgs<ExtArgs> args: Prisma.ServiceCheckUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ServiceCheckPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ServiceCheckPayload>
@@ -1124,6 +1204,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.Econ_SowInventoryCreateManyArgs<ExtArgs> args: Prisma.Econ_SowInventoryCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.Econ_SowInventoryCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$Econ_SowInventoryPayload>[]
}
delete: { delete: {
args: Prisma.Econ_SowInventoryDeleteArgs<ExtArgs> args: Prisma.Econ_SowInventoryDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$Econ_SowInventoryPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$Econ_SowInventoryPayload>
@@ -1140,6 +1224,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.Econ_SowInventoryUpdateManyArgs<ExtArgs> args: Prisma.Econ_SowInventoryUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.Econ_SowInventoryUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$Econ_SowInventoryPayload>[]
}
upsert: { upsert: {
args: Prisma.Econ_SowInventoryUpsertArgs<ExtArgs> args: Prisma.Econ_SowInventoryUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$Econ_SowInventoryPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$Econ_SowInventoryPayload>
@@ -1190,6 +1278,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ScraperCacheCreateManyArgs<ExtArgs> args: Prisma.ScraperCacheCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.ScraperCacheCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ScraperCachePayload>[]
}
delete: { delete: {
args: Prisma.ScraperCacheDeleteArgs<ExtArgs> args: Prisma.ScraperCacheDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ScraperCachePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ScraperCachePayload>
@@ -1206,6 +1298,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ScraperCacheUpdateManyArgs<ExtArgs> args: Prisma.ScraperCacheUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.ScraperCacheUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ScraperCachePayload>[]
}
upsert: { upsert: {
args: Prisma.ScraperCacheUpsertArgs<ExtArgs> args: Prisma.ScraperCacheUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ScraperCachePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ScraperCachePayload>
@@ -1256,6 +1352,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.OilPriceHistoryCreateManyArgs<ExtArgs> args: Prisma.OilPriceHistoryCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.OilPriceHistoryCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$OilPriceHistoryPayload>[]
}
delete: { delete: {
args: Prisma.OilPriceHistoryDeleteArgs<ExtArgs> args: Prisma.OilPriceHistoryDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$OilPriceHistoryPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$OilPriceHistoryPayload>
@@ -1272,6 +1372,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.OilPriceHistoryUpdateManyArgs<ExtArgs> args: Prisma.OilPriceHistoryUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.OilPriceHistoryUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$OilPriceHistoryPayload>[]
}
upsert: { upsert: {
args: Prisma.OilPriceHistoryUpsertArgs<ExtArgs> args: Prisma.OilPriceHistoryUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$OilPriceHistoryPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$OilPriceHistoryPayload>
@@ -1322,6 +1426,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.MihomeAccountCreateManyArgs<ExtArgs> args: Prisma.MihomeAccountCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.MihomeAccountCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeAccountPayload>[]
}
delete: { delete: {
args: Prisma.MihomeAccountDeleteArgs<ExtArgs> args: Prisma.MihomeAccountDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeAccountPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeAccountPayload>
@@ -1338,6 +1446,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.MihomeAccountUpdateManyArgs<ExtArgs> args: Prisma.MihomeAccountUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.MihomeAccountUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeAccountPayload>[]
}
upsert: { upsert: {
args: Prisma.MihomeAccountUpsertArgs<ExtArgs> args: Prisma.MihomeAccountUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeAccountPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeAccountPayload>
@@ -1388,6 +1500,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.MihomeHomeCreateManyArgs<ExtArgs> args: Prisma.MihomeHomeCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.MihomeHomeCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeHomePayload>[]
}
delete: { delete: {
args: Prisma.MihomeHomeDeleteArgs<ExtArgs> args: Prisma.MihomeHomeDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeHomePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeHomePayload>
@@ -1404,6 +1520,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.MihomeHomeUpdateManyArgs<ExtArgs> args: Prisma.MihomeHomeUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.MihomeHomeUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeHomePayload>[]
}
upsert: { upsert: {
args: Prisma.MihomeHomeUpsertArgs<ExtArgs> args: Prisma.MihomeHomeUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeHomePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeHomePayload>
@@ -1454,6 +1574,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.MihomeDeviceCreateManyArgs<ExtArgs> args: Prisma.MihomeDeviceCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.MihomeDeviceCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeDevicePayload>[]
}
delete: { delete: {
args: Prisma.MihomeDeviceDeleteArgs<ExtArgs> args: Prisma.MihomeDeviceDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeDevicePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeDevicePayload>
@@ -1470,6 +1594,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.MihomeDeviceUpdateManyArgs<ExtArgs> args: Prisma.MihomeDeviceUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.MihomeDeviceUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeDevicePayload>[]
}
upsert: { upsert: {
args: Prisma.MihomeDeviceUpsertArgs<ExtArgs> args: Prisma.MihomeDeviceUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeDevicePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeDevicePayload>
@@ -1520,6 +1648,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.MihomeEnvSampleCreateManyArgs<ExtArgs> args: Prisma.MihomeEnvSampleCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.MihomeEnvSampleCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeEnvSamplePayload>[]
}
delete: { delete: {
args: Prisma.MihomeEnvSampleDeleteArgs<ExtArgs> args: Prisma.MihomeEnvSampleDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeEnvSamplePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeEnvSamplePayload>
@@ -1536,6 +1668,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.MihomeEnvSampleUpdateManyArgs<ExtArgs> args: Prisma.MihomeEnvSampleUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.MihomeEnvSampleUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeEnvSamplePayload>[]
}
upsert: { upsert: {
args: Prisma.MihomeEnvSampleUpsertArgs<ExtArgs> args: Prisma.MihomeEnvSampleUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeEnvSamplePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeEnvSamplePayload>
@@ -1586,6 +1722,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.MihomeEnvHourCreateManyArgs<ExtArgs> args: Prisma.MihomeEnvHourCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.MihomeEnvHourCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeEnvHourPayload>[]
}
delete: { delete: {
args: Prisma.MihomeEnvHourDeleteArgs<ExtArgs> args: Prisma.MihomeEnvHourDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeEnvHourPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeEnvHourPayload>
@@ -1602,6 +1742,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.MihomeEnvHourUpdateManyArgs<ExtArgs> args: Prisma.MihomeEnvHourUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.MihomeEnvHourUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeEnvHourPayload>[]
}
upsert: { upsert: {
args: Prisma.MihomeEnvHourUpsertArgs<ExtArgs> args: Prisma.MihomeEnvHourUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeEnvHourPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$MihomeEnvHourPayload>
@@ -1652,6 +1796,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.HabitCreateManyArgs<ExtArgs> args: Prisma.HabitCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.HabitCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$HabitPayload>[]
}
delete: { delete: {
args: Prisma.HabitDeleteArgs<ExtArgs> args: Prisma.HabitDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$HabitPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$HabitPayload>
@@ -1668,6 +1816,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.HabitUpdateManyArgs<ExtArgs> args: Prisma.HabitUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.HabitUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$HabitPayload>[]
}
upsert: { upsert: {
args: Prisma.HabitUpsertArgs<ExtArgs> args: Prisma.HabitUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$HabitPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$HabitPayload>
@@ -1718,6 +1870,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.CheckInCreateManyArgs<ExtArgs> args: Prisma.CheckInCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.CheckInCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckInPayload>[]
}
delete: { delete: {
args: Prisma.CheckInDeleteArgs<ExtArgs> args: Prisma.CheckInDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckInPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckInPayload>
@@ -1734,6 +1890,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.CheckInUpdateManyArgs<ExtArgs> args: Prisma.CheckInUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.CheckInUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckInPayload>[]
}
upsert: { upsert: {
args: Prisma.CheckInUpsertArgs<ExtArgs> args: Prisma.CheckInUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckInPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckInPayload>
@@ -1784,6 +1944,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.CheckListCreateManyArgs<ExtArgs> args: Prisma.CheckListCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.CheckListCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListPayload>[]
}
delete: { delete: {
args: Prisma.CheckListDeleteArgs<ExtArgs> args: Prisma.CheckListDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListPayload>
@@ -1800,6 +1964,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.CheckListUpdateManyArgs<ExtArgs> args: Prisma.CheckListUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.CheckListUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListPayload>[]
}
upsert: { upsert: {
args: Prisma.CheckListUpsertArgs<ExtArgs> args: Prisma.CheckListUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListPayload>
@@ -1850,6 +2018,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.CheckListItemCreateManyArgs<ExtArgs> args: Prisma.CheckListItemCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.CheckListItemCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListItemPayload>[]
}
delete: { delete: {
args: Prisma.CheckListItemDeleteArgs<ExtArgs> args: Prisma.CheckListItemDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListItemPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListItemPayload>
@@ -1866,6 +2038,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.CheckListItemUpdateManyArgs<ExtArgs> args: Prisma.CheckListItemUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.CheckListItemUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListItemPayload>[]
}
upsert: { upsert: {
args: Prisma.CheckListItemUpsertArgs<ExtArgs> args: Prisma.CheckListItemUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListItemPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListItemPayload>
@@ -1916,6 +2092,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.CheckListTemplateCreateManyArgs<ExtArgs> args: Prisma.CheckListTemplateCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.CheckListTemplateCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListTemplatePayload>[]
}
delete: { delete: {
args: Prisma.CheckListTemplateDeleteArgs<ExtArgs> args: Prisma.CheckListTemplateDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListTemplatePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListTemplatePayload>
@@ -1932,6 +2112,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.CheckListTemplateUpdateManyArgs<ExtArgs> args: Prisma.CheckListTemplateUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.CheckListTemplateUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListTemplatePayload>[]
}
upsert: { upsert: {
args: Prisma.CheckListTemplateUpsertArgs<ExtArgs> args: Prisma.CheckListTemplateUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListTemplatePayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$CheckListTemplatePayload>
@@ -1982,6 +2166,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ProjectCreateManyArgs<ExtArgs> args: Prisma.ProjectCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.ProjectCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ProjectPayload>[]
}
delete: { delete: {
args: Prisma.ProjectDeleteArgs<ExtArgs> args: Prisma.ProjectDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ProjectPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ProjectPayload>
@@ -1998,6 +2186,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ProjectUpdateManyArgs<ExtArgs> args: Prisma.ProjectUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.ProjectUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ProjectPayload>[]
}
upsert: { upsert: {
args: Prisma.ProjectUpsertArgs<ExtArgs> args: Prisma.ProjectUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ProjectPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ProjectPayload>
@@ -2048,6 +2240,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ProjectMemberCreateManyArgs<ExtArgs> args: Prisma.ProjectMemberCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.ProjectMemberCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ProjectMemberPayload>[]
}
delete: { delete: {
args: Prisma.ProjectMemberDeleteArgs<ExtArgs> args: Prisma.ProjectMemberDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ProjectMemberPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ProjectMemberPayload>
@@ -2064,6 +2260,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.ProjectMemberUpdateManyArgs<ExtArgs> args: Prisma.ProjectMemberUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.ProjectMemberUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ProjectMemberPayload>[]
}
upsert: { upsert: {
args: Prisma.ProjectMemberUpsertArgs<ExtArgs> args: Prisma.ProjectMemberUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ProjectMemberPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$ProjectMemberPayload>
@@ -2114,6 +2314,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.BoardColumnCreateManyArgs<ExtArgs> args: Prisma.BoardColumnCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.BoardColumnCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoardColumnPayload>[]
}
delete: { delete: {
args: Prisma.BoardColumnDeleteArgs<ExtArgs> args: Prisma.BoardColumnDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoardColumnPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$BoardColumnPayload>
@@ -2130,6 +2334,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.BoardColumnUpdateManyArgs<ExtArgs> args: Prisma.BoardColumnUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.BoardColumnUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoardColumnPayload>[]
}
upsert: { upsert: {
args: Prisma.BoardColumnUpsertArgs<ExtArgs> args: Prisma.BoardColumnUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoardColumnPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$BoardColumnPayload>
@@ -2180,6 +2388,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.TaskCreateManyArgs<ExtArgs> args: Prisma.TaskCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.TaskCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload>[]
}
delete: { delete: {
args: Prisma.TaskDeleteArgs<ExtArgs> args: Prisma.TaskDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload>
@@ -2196,6 +2408,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.TaskUpdateManyArgs<ExtArgs> args: Prisma.TaskUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.TaskUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload>[]
}
upsert: { upsert: {
args: Prisma.TaskUpsertArgs<ExtArgs> args: Prisma.TaskUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskPayload>
@@ -2246,6 +2462,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.TaskMemberCreateManyArgs<ExtArgs> args: Prisma.TaskMemberCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.TaskMemberCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload>[]
}
delete: { delete: {
args: Prisma.TaskMemberDeleteArgs<ExtArgs> args: Prisma.TaskMemberDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload>
@@ -2262,6 +2482,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.TaskMemberUpdateManyArgs<ExtArgs> args: Prisma.TaskMemberUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.TaskMemberUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload>[]
}
upsert: { upsert: {
args: Prisma.TaskMemberUpsertArgs<ExtArgs> args: Prisma.TaskMemberUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskMemberPayload>
@@ -2312,6 +2536,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.TaskTagCreateManyArgs<ExtArgs> args: Prisma.TaskTagCreateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
createManyAndReturn: {
args: Prisma.TaskTagCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskTagPayload>[]
}
delete: { delete: {
args: Prisma.TaskTagDeleteArgs<ExtArgs> args: Prisma.TaskTagDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskTagPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskTagPayload>
@@ -2328,6 +2556,10 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
args: Prisma.TaskTagUpdateManyArgs<ExtArgs> args: Prisma.TaskTagUpdateManyArgs<ExtArgs>
result: BatchPayload result: BatchPayload
} }
updateManyAndReturn: {
args: Prisma.TaskTagUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskTagPayload>[]
}
upsert: { upsert: {
args: Prisma.TaskTagUpsertArgs<ExtArgs> args: Prisma.TaskTagUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskTagPayload> result: runtime.Types.Utils.PayloadToResult<Prisma.$TaskTagPayload>
@@ -2738,6 +2970,8 @@ export type CheckListTemplateScalarFieldEnum = (typeof CheckListTemplateScalarFi
export const ProjectScalarFieldEnum = { export const ProjectScalarFieldEnum = {
id: 'id', id: 'id',
uuid: 'uuid',
code: 'code',
name: 'name', name: 'name',
ownerId: 'ownerId', ownerId: 'ownerId',
isPersonal: 'isPersonal', isPersonal: 'isPersonal',
@@ -2755,6 +2989,8 @@ export type ProjectScalarFieldEnum = (typeof ProjectScalarFieldEnum)[keyof typeo
export const ProjectMemberScalarFieldEnum = { export const ProjectMemberScalarFieldEnum = {
id: 'id', id: 'id',
uuid: 'uuid',
projectUuid: 'projectUuid',
projectId: 'projectId', projectId: 'projectId',
userId: 'userId', userId: 'userId',
permission: 'permission', permission: 'permission',
@@ -2766,6 +3002,8 @@ export type ProjectMemberScalarFieldEnum = (typeof ProjectMemberScalarFieldEnum)
export const BoardColumnScalarFieldEnum = { export const BoardColumnScalarFieldEnum = {
id: 'id', id: 'id',
uuid: 'uuid',
projectUuid: 'projectUuid',
projectId: 'projectId', projectId: 'projectId',
name: 'name', name: 'name',
sortOrder: 'sortOrder', sortOrder: 'sortOrder',
@@ -2780,6 +3018,10 @@ export type BoardColumnScalarFieldEnum = (typeof BoardColumnScalarFieldEnum)[key
export const TaskScalarFieldEnum = { export const TaskScalarFieldEnum = {
id: 'id', id: 'id',
uuid: 'uuid',
projectUuid: 'projectUuid',
columnUuid: 'columnUuid',
parentUuid: 'parentUuid',
projectId: 'projectId', projectId: 'projectId',
columnId: 'columnId', columnId: 'columnId',
parentId: 'parentId', parentId: 'parentId',
@@ -2797,7 +3039,8 @@ export const TaskScalarFieldEnum = {
archivedAt: 'archivedAt', archivedAt: 'archivedAt',
archiveSource: 'archiveSource', archiveSource: 'archiveSource',
createdAt: 'createdAt', createdAt: 'createdAt',
updatedAt: 'updatedAt' updatedAt: 'updatedAt',
number: 'number'
} as const } as const
export type TaskScalarFieldEnum = (typeof TaskScalarFieldEnum)[keyof typeof TaskScalarFieldEnum] export type TaskScalarFieldEnum = (typeof TaskScalarFieldEnum)[keyof typeof TaskScalarFieldEnum]
@@ -2805,6 +3048,8 @@ export type TaskScalarFieldEnum = (typeof TaskScalarFieldEnum)[keyof typeof Task
export const TaskMemberScalarFieldEnum = { export const TaskMemberScalarFieldEnum = {
id: 'id', id: 'id',
uuid: 'uuid',
taskUuid: 'taskUuid',
taskId: 'taskId', taskId: 'taskId',
userId: 'userId' userId: 'userId'
} as const } as const
@@ -2814,6 +3059,8 @@ export type TaskMemberScalarFieldEnum = (typeof TaskMemberScalarFieldEnum)[keyof
export const TaskTagScalarFieldEnum = { export const TaskTagScalarFieldEnum = {
id: 'id', id: 'id',
uuid: 'uuid',
taskUuid: 'taskUuid',
taskId: 'taskId', taskId: 'taskId',
name: 'name' name: 'name'
} as const } as const
@@ -2844,23 +3091,12 @@ export const NullableJsonNullValueInput = {
export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput] export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput]
export const UserOrderByRelevanceFieldEnum = { export const QueryMode = {
name: 'name', default: 'default',
email: 'email', insensitive: 'insensitive'
password: 'password'
} as const } as const
export type UserOrderByRelevanceFieldEnum = (typeof UserOrderByRelevanceFieldEnum)[keyof typeof UserOrderByRelevanceFieldEnum] export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode]
export const ArticleOrderByRelevanceFieldEnum = {
title: 'title',
slug: 'slug',
content: 'content',
date: 'date'
} as const
export type ArticleOrderByRelevanceFieldEnum = (typeof ArticleOrderByRelevanceFieldEnum)[keyof typeof ArticleOrderByRelevanceFieldEnum]
export const JsonNullValueFilter = { export const JsonNullValueFilter = {
@@ -2872,41 +3108,6 @@ export const JsonNullValueFilter = {
export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter] export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter]
export const QueryMode = {
default: 'default',
insensitive: 'insensitive'
} as const
export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode]
export const StrategyOrderByRelevanceFieldEnum = {
name: 'name',
description: 'description'
} as const
export type StrategyOrderByRelevanceFieldEnum = (typeof StrategyOrderByRelevanceFieldEnum)[keyof typeof StrategyOrderByRelevanceFieldEnum]
export const IndicatorOrderByRelevanceFieldEnum = {
name: 'name',
groupName: 'groupName',
title: 'title',
unit: 'unit',
source: 'source',
frequency: 'frequency'
} as const
export type IndicatorOrderByRelevanceFieldEnum = (typeof IndicatorOrderByRelevanceFieldEnum)[keyof typeof IndicatorOrderByRelevanceFieldEnum]
export const IndicatorPointOrderByRelevanceFieldEnum = {
period: 'period'
} as const
export type IndicatorPointOrderByRelevanceFieldEnum = (typeof IndicatorPointOrderByRelevanceFieldEnum)[keyof typeof IndicatorPointOrderByRelevanceFieldEnum]
export const NullsOrder = { export const NullsOrder = {
first: 'first', first: 'first',
last: 'last' last: 'last'
@@ -2915,204 +3116,6 @@ export const NullsOrder = {
export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder]
export const NewsOrderByRelevanceFieldEnum = {
title: 'title',
summary: 'summary',
content: 'content',
source: 'source',
url: 'url'
} as const
export type NewsOrderByRelevanceFieldEnum = (typeof NewsOrderByRelevanceFieldEnum)[keyof typeof NewsOrderByRelevanceFieldEnum]
export const AlertOrderByRelevanceFieldEnum = {
indicatorName: 'indicatorName',
period: 'period',
sourceA: 'sourceA',
sourceB: 'sourceB'
} as const
export type AlertOrderByRelevanceFieldEnum = (typeof AlertOrderByRelevanceFieldEnum)[keyof typeof AlertOrderByRelevanceFieldEnum]
export const ServerNodeOrderByRelevanceFieldEnum = {
uuid: 'uuid',
name: 'name',
cpuName: 'cpuName',
os: 'os',
region: 'region',
status: 'status'
} as const
export type ServerNodeOrderByRelevanceFieldEnum = (typeof ServerNodeOrderByRelevanceFieldEnum)[keyof typeof ServerNodeOrderByRelevanceFieldEnum]
export const ServerNodeHistoryOrderByRelevanceFieldEnum = {
uuid: 'uuid'
} as const
export type ServerNodeHistoryOrderByRelevanceFieldEnum = (typeof ServerNodeHistoryOrderByRelevanceFieldEnum)[keyof typeof ServerNodeHistoryOrderByRelevanceFieldEnum]
export const ServiceCheckOrderByRelevanceFieldEnum = {
name: 'name',
url: 'url',
status: 'status',
message: 'message'
} as const
export type ServiceCheckOrderByRelevanceFieldEnum = (typeof ServiceCheckOrderByRelevanceFieldEnum)[keyof typeof ServiceCheckOrderByRelevanceFieldEnum]
export const Econ_SowInventoryOrderByRelevanceFieldEnum = {
month: 'month'
} as const
export type Econ_SowInventoryOrderByRelevanceFieldEnum = (typeof Econ_SowInventoryOrderByRelevanceFieldEnum)[keyof typeof Econ_SowInventoryOrderByRelevanceFieldEnum]
export const ScraperCacheOrderByRelevanceFieldEnum = {
scraperName: 'scraperName',
lastDataHash: 'lastDataHash'
} as const
export type ScraperCacheOrderByRelevanceFieldEnum = (typeof ScraperCacheOrderByRelevanceFieldEnum)[keyof typeof ScraperCacheOrderByRelevanceFieldEnum]
export const OilPriceHistoryOrderByRelevanceFieldEnum = {
province: 'province',
fuel: 'fuel',
source: 'source'
} as const
export type OilPriceHistoryOrderByRelevanceFieldEnum = (typeof OilPriceHistoryOrderByRelevanceFieldEnum)[keyof typeof OilPriceHistoryOrderByRelevanceFieldEnum]
export const MihomeAccountOrderByRelevanceFieldEnum = {
key: 'key',
userId: 'userId',
status: 'status',
lastError: 'lastError'
} as const
export type MihomeAccountOrderByRelevanceFieldEnum = (typeof MihomeAccountOrderByRelevanceFieldEnum)[keyof typeof MihomeAccountOrderByRelevanceFieldEnum]
export const MihomeHomeOrderByRelevanceFieldEnum = {
homeId: 'homeId',
name: 'name'
} as const
export type MihomeHomeOrderByRelevanceFieldEnum = (typeof MihomeHomeOrderByRelevanceFieldEnum)[keyof typeof MihomeHomeOrderByRelevanceFieldEnum]
export const MihomeDeviceOrderByRelevanceFieldEnum = {
did: 'did',
homeId: 'homeId',
model: 'model',
name: 'name',
alias: 'alias'
} as const
export type MihomeDeviceOrderByRelevanceFieldEnum = (typeof MihomeDeviceOrderByRelevanceFieldEnum)[keyof typeof MihomeDeviceOrderByRelevanceFieldEnum]
export const MihomeEnvSampleOrderByRelevanceFieldEnum = {
origin: 'origin'
} as const
export type MihomeEnvSampleOrderByRelevanceFieldEnum = (typeof MihomeEnvSampleOrderByRelevanceFieldEnum)[keyof typeof MihomeEnvSampleOrderByRelevanceFieldEnum]
export const HabitOrderByRelevanceFieldEnum = {
name: 'name',
period: 'period',
color: 'color',
icon: 'icon',
note: 'note'
} as const
export type HabitOrderByRelevanceFieldEnum = (typeof HabitOrderByRelevanceFieldEnum)[keyof typeof HabitOrderByRelevanceFieldEnum]
export const CheckInOrderByRelevanceFieldEnum = {
date: 'date',
note: 'note',
source: 'source'
} as const
export type CheckInOrderByRelevanceFieldEnum = (typeof CheckInOrderByRelevanceFieldEnum)[keyof typeof CheckInOrderByRelevanceFieldEnum]
export const CheckListOrderByRelevanceFieldEnum = {
title: 'title',
scene: 'scene',
note: 'note'
} as const
export type CheckListOrderByRelevanceFieldEnum = (typeof CheckListOrderByRelevanceFieldEnum)[keyof typeof CheckListOrderByRelevanceFieldEnum]
export const CheckListItemOrderByRelevanceFieldEnum = {
title: 'title',
note: 'note'
} as const
export type CheckListItemOrderByRelevanceFieldEnum = (typeof CheckListItemOrderByRelevanceFieldEnum)[keyof typeof CheckListItemOrderByRelevanceFieldEnum]
export const CheckListTemplateOrderByRelevanceFieldEnum = {
name: 'name',
scene: 'scene'
} as const
export type CheckListTemplateOrderByRelevanceFieldEnum = (typeof CheckListTemplateOrderByRelevanceFieldEnum)[keyof typeof CheckListTemplateOrderByRelevanceFieldEnum]
export const ProjectOrderByRelevanceFieldEnum = {
name: 'name',
icon: 'icon',
autoArchive: 'autoArchive'
} as const
export type ProjectOrderByRelevanceFieldEnum = (typeof ProjectOrderByRelevanceFieldEnum)[keyof typeof ProjectOrderByRelevanceFieldEnum]
export const ProjectMemberOrderByRelevanceFieldEnum = {
permission: 'permission'
} as const
export type ProjectMemberOrderByRelevanceFieldEnum = (typeof ProjectMemberOrderByRelevanceFieldEnum)[keyof typeof ProjectMemberOrderByRelevanceFieldEnum]
export const BoardColumnOrderByRelevanceFieldEnum = {
name: 'name',
boundStatus: 'boundStatus',
retention: 'retention'
} as const
export type BoardColumnOrderByRelevanceFieldEnum = (typeof BoardColumnOrderByRelevanceFieldEnum)[keyof typeof BoardColumnOrderByRelevanceFieldEnum]
export const TaskOrderByRelevanceFieldEnum = {
title: 'title',
description: 'description',
kind: 'kind',
status: 'status',
archiveSource: 'archiveSource'
} as const
export type TaskOrderByRelevanceFieldEnum = (typeof TaskOrderByRelevanceFieldEnum)[keyof typeof TaskOrderByRelevanceFieldEnum]
export const TaskTagOrderByRelevanceFieldEnum = {
name: 'name'
} as const
export type TaskTagOrderByRelevanceFieldEnum = (typeof TaskTagOrderByRelevanceFieldEnum)[keyof typeof TaskTagOrderByRelevanceFieldEnum]
/** /**
* Field references * Field references
@@ -3126,6 +3129,13 @@ export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'In
/**
* Reference to a field of type 'Int[]'
*/
export type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int[]'>
/** /**
* Reference to a field of type 'String' * Reference to a field of type 'String'
*/ */
@@ -3133,6 +3143,13 @@ export type StringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel,
/**
* Reference to a field of type 'String[]'
*/
export type ListStringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String[]'>
/** /**
* Reference to a field of type 'DateTime' * Reference to a field of type 'DateTime'
*/ */
@@ -3140,6 +3157,13 @@ export type DateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel
/**
* Reference to a field of type 'DateTime[]'
*/
export type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime[]'>
/** /**
* Reference to a field of type 'Json' * Reference to a field of type 'Json'
*/ */
@@ -3168,12 +3192,26 @@ export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, '
/**
* Reference to a field of type 'Float[]'
*/
export type ListFloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float[]'>
/** /**
* Reference to a field of type 'BigInt' * Reference to a field of type 'BigInt'
*/ */
export type BigIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'BigInt'> export type BigIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'BigInt'>
/**
* Reference to a field of type 'BigInt[]'
*/
export type ListBigIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'BigInt[]'>
/** /**
* Batch Payload for updateMany & deleteMany & createMany * Batch Payload for updateMany & deleteMany & createMany
*/ */
@@ -451,6 +451,8 @@ export type CheckListTemplateScalarFieldEnum = (typeof CheckListTemplateScalarFi
export const ProjectScalarFieldEnum = { export const ProjectScalarFieldEnum = {
id: 'id', id: 'id',
uuid: 'uuid',
code: 'code',
name: 'name', name: 'name',
ownerId: 'ownerId', ownerId: 'ownerId',
isPersonal: 'isPersonal', isPersonal: 'isPersonal',
@@ -468,6 +470,8 @@ export type ProjectScalarFieldEnum = (typeof ProjectScalarFieldEnum)[keyof typeo
export const ProjectMemberScalarFieldEnum = { export const ProjectMemberScalarFieldEnum = {
id: 'id', id: 'id',
uuid: 'uuid',
projectUuid: 'projectUuid',
projectId: 'projectId', projectId: 'projectId',
userId: 'userId', userId: 'userId',
permission: 'permission', permission: 'permission',
@@ -479,6 +483,8 @@ export type ProjectMemberScalarFieldEnum = (typeof ProjectMemberScalarFieldEnum)
export const BoardColumnScalarFieldEnum = { export const BoardColumnScalarFieldEnum = {
id: 'id', id: 'id',
uuid: 'uuid',
projectUuid: 'projectUuid',
projectId: 'projectId', projectId: 'projectId',
name: 'name', name: 'name',
sortOrder: 'sortOrder', sortOrder: 'sortOrder',
@@ -493,6 +499,10 @@ export type BoardColumnScalarFieldEnum = (typeof BoardColumnScalarFieldEnum)[key
export const TaskScalarFieldEnum = { export const TaskScalarFieldEnum = {
id: 'id', id: 'id',
uuid: 'uuid',
projectUuid: 'projectUuid',
columnUuid: 'columnUuid',
parentUuid: 'parentUuid',
projectId: 'projectId', projectId: 'projectId',
columnId: 'columnId', columnId: 'columnId',
parentId: 'parentId', parentId: 'parentId',
@@ -510,7 +520,8 @@ export const TaskScalarFieldEnum = {
archivedAt: 'archivedAt', archivedAt: 'archivedAt',
archiveSource: 'archiveSource', archiveSource: 'archiveSource',
createdAt: 'createdAt', createdAt: 'createdAt',
updatedAt: 'updatedAt' updatedAt: 'updatedAt',
number: 'number'
} as const } as const
export type TaskScalarFieldEnum = (typeof TaskScalarFieldEnum)[keyof typeof TaskScalarFieldEnum] export type TaskScalarFieldEnum = (typeof TaskScalarFieldEnum)[keyof typeof TaskScalarFieldEnum]
@@ -518,6 +529,8 @@ export type TaskScalarFieldEnum = (typeof TaskScalarFieldEnum)[keyof typeof Task
export const TaskMemberScalarFieldEnum = { export const TaskMemberScalarFieldEnum = {
id: 'id', id: 'id',
uuid: 'uuid',
taskUuid: 'taskUuid',
taskId: 'taskId', taskId: 'taskId',
userId: 'userId' userId: 'userId'
} as const } as const
@@ -527,6 +540,8 @@ export type TaskMemberScalarFieldEnum = (typeof TaskMemberScalarFieldEnum)[keyof
export const TaskTagScalarFieldEnum = { export const TaskTagScalarFieldEnum = {
id: 'id', id: 'id',
uuid: 'uuid',
taskUuid: 'taskUuid',
taskId: 'taskId', taskId: 'taskId',
name: 'name' name: 'name'
} as const } as const
@@ -557,23 +572,12 @@ export const NullableJsonNullValueInput = {
export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput] export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput]
export const UserOrderByRelevanceFieldEnum = { export const QueryMode = {
name: 'name', default: 'default',
email: 'email', insensitive: 'insensitive'
password: 'password'
} as const } as const
export type UserOrderByRelevanceFieldEnum = (typeof UserOrderByRelevanceFieldEnum)[keyof typeof UserOrderByRelevanceFieldEnum] export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode]
export const ArticleOrderByRelevanceFieldEnum = {
title: 'title',
slug: 'slug',
content: 'content',
date: 'date'
} as const
export type ArticleOrderByRelevanceFieldEnum = (typeof ArticleOrderByRelevanceFieldEnum)[keyof typeof ArticleOrderByRelevanceFieldEnum]
export const JsonNullValueFilter = { export const JsonNullValueFilter = {
@@ -585,41 +589,6 @@ export const JsonNullValueFilter = {
export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter] export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter]
export const QueryMode = {
default: 'default',
insensitive: 'insensitive'
} as const
export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode]
export const StrategyOrderByRelevanceFieldEnum = {
name: 'name',
description: 'description'
} as const
export type StrategyOrderByRelevanceFieldEnum = (typeof StrategyOrderByRelevanceFieldEnum)[keyof typeof StrategyOrderByRelevanceFieldEnum]
export const IndicatorOrderByRelevanceFieldEnum = {
name: 'name',
groupName: 'groupName',
title: 'title',
unit: 'unit',
source: 'source',
frequency: 'frequency'
} as const
export type IndicatorOrderByRelevanceFieldEnum = (typeof IndicatorOrderByRelevanceFieldEnum)[keyof typeof IndicatorOrderByRelevanceFieldEnum]
export const IndicatorPointOrderByRelevanceFieldEnum = {
period: 'period'
} as const
export type IndicatorPointOrderByRelevanceFieldEnum = (typeof IndicatorPointOrderByRelevanceFieldEnum)[keyof typeof IndicatorPointOrderByRelevanceFieldEnum]
export const NullsOrder = { export const NullsOrder = {
first: 'first', first: 'first',
last: 'last' last: 'last'
@@ -627,201 +596,3 @@ export const NullsOrder = {
export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder] export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder]
export const NewsOrderByRelevanceFieldEnum = {
title: 'title',
summary: 'summary',
content: 'content',
source: 'source',
url: 'url'
} as const
export type NewsOrderByRelevanceFieldEnum = (typeof NewsOrderByRelevanceFieldEnum)[keyof typeof NewsOrderByRelevanceFieldEnum]
export const AlertOrderByRelevanceFieldEnum = {
indicatorName: 'indicatorName',
period: 'period',
sourceA: 'sourceA',
sourceB: 'sourceB'
} as const
export type AlertOrderByRelevanceFieldEnum = (typeof AlertOrderByRelevanceFieldEnum)[keyof typeof AlertOrderByRelevanceFieldEnum]
export const ServerNodeOrderByRelevanceFieldEnum = {
uuid: 'uuid',
name: 'name',
cpuName: 'cpuName',
os: 'os',
region: 'region',
status: 'status'
} as const
export type ServerNodeOrderByRelevanceFieldEnum = (typeof ServerNodeOrderByRelevanceFieldEnum)[keyof typeof ServerNodeOrderByRelevanceFieldEnum]
export const ServerNodeHistoryOrderByRelevanceFieldEnum = {
uuid: 'uuid'
} as const
export type ServerNodeHistoryOrderByRelevanceFieldEnum = (typeof ServerNodeHistoryOrderByRelevanceFieldEnum)[keyof typeof ServerNodeHistoryOrderByRelevanceFieldEnum]
export const ServiceCheckOrderByRelevanceFieldEnum = {
name: 'name',
url: 'url',
status: 'status',
message: 'message'
} as const
export type ServiceCheckOrderByRelevanceFieldEnum = (typeof ServiceCheckOrderByRelevanceFieldEnum)[keyof typeof ServiceCheckOrderByRelevanceFieldEnum]
export const Econ_SowInventoryOrderByRelevanceFieldEnum = {
month: 'month'
} as const
export type Econ_SowInventoryOrderByRelevanceFieldEnum = (typeof Econ_SowInventoryOrderByRelevanceFieldEnum)[keyof typeof Econ_SowInventoryOrderByRelevanceFieldEnum]
export const ScraperCacheOrderByRelevanceFieldEnum = {
scraperName: 'scraperName',
lastDataHash: 'lastDataHash'
} as const
export type ScraperCacheOrderByRelevanceFieldEnum = (typeof ScraperCacheOrderByRelevanceFieldEnum)[keyof typeof ScraperCacheOrderByRelevanceFieldEnum]
export const OilPriceHistoryOrderByRelevanceFieldEnum = {
province: 'province',
fuel: 'fuel',
source: 'source'
} as const
export type OilPriceHistoryOrderByRelevanceFieldEnum = (typeof OilPriceHistoryOrderByRelevanceFieldEnum)[keyof typeof OilPriceHistoryOrderByRelevanceFieldEnum]
export const MihomeAccountOrderByRelevanceFieldEnum = {
key: 'key',
userId: 'userId',
status: 'status',
lastError: 'lastError'
} as const
export type MihomeAccountOrderByRelevanceFieldEnum = (typeof MihomeAccountOrderByRelevanceFieldEnum)[keyof typeof MihomeAccountOrderByRelevanceFieldEnum]
export const MihomeHomeOrderByRelevanceFieldEnum = {
homeId: 'homeId',
name: 'name'
} as const
export type MihomeHomeOrderByRelevanceFieldEnum = (typeof MihomeHomeOrderByRelevanceFieldEnum)[keyof typeof MihomeHomeOrderByRelevanceFieldEnum]
export const MihomeDeviceOrderByRelevanceFieldEnum = {
did: 'did',
homeId: 'homeId',
model: 'model',
name: 'name',
alias: 'alias'
} as const
export type MihomeDeviceOrderByRelevanceFieldEnum = (typeof MihomeDeviceOrderByRelevanceFieldEnum)[keyof typeof MihomeDeviceOrderByRelevanceFieldEnum]
export const MihomeEnvSampleOrderByRelevanceFieldEnum = {
origin: 'origin'
} as const
export type MihomeEnvSampleOrderByRelevanceFieldEnum = (typeof MihomeEnvSampleOrderByRelevanceFieldEnum)[keyof typeof MihomeEnvSampleOrderByRelevanceFieldEnum]
export const HabitOrderByRelevanceFieldEnum = {
name: 'name',
period: 'period',
color: 'color',
icon: 'icon',
note: 'note'
} as const
export type HabitOrderByRelevanceFieldEnum = (typeof HabitOrderByRelevanceFieldEnum)[keyof typeof HabitOrderByRelevanceFieldEnum]
export const CheckInOrderByRelevanceFieldEnum = {
date: 'date',
note: 'note',
source: 'source'
} as const
export type CheckInOrderByRelevanceFieldEnum = (typeof CheckInOrderByRelevanceFieldEnum)[keyof typeof CheckInOrderByRelevanceFieldEnum]
export const CheckListOrderByRelevanceFieldEnum = {
title: 'title',
scene: 'scene',
note: 'note'
} as const
export type CheckListOrderByRelevanceFieldEnum = (typeof CheckListOrderByRelevanceFieldEnum)[keyof typeof CheckListOrderByRelevanceFieldEnum]
export const CheckListItemOrderByRelevanceFieldEnum = {
title: 'title',
note: 'note'
} as const
export type CheckListItemOrderByRelevanceFieldEnum = (typeof CheckListItemOrderByRelevanceFieldEnum)[keyof typeof CheckListItemOrderByRelevanceFieldEnum]
export const CheckListTemplateOrderByRelevanceFieldEnum = {
name: 'name',
scene: 'scene'
} as const
export type CheckListTemplateOrderByRelevanceFieldEnum = (typeof CheckListTemplateOrderByRelevanceFieldEnum)[keyof typeof CheckListTemplateOrderByRelevanceFieldEnum]
export const ProjectOrderByRelevanceFieldEnum = {
name: 'name',
icon: 'icon',
autoArchive: 'autoArchive'
} as const
export type ProjectOrderByRelevanceFieldEnum = (typeof ProjectOrderByRelevanceFieldEnum)[keyof typeof ProjectOrderByRelevanceFieldEnum]
export const ProjectMemberOrderByRelevanceFieldEnum = {
permission: 'permission'
} as const
export type ProjectMemberOrderByRelevanceFieldEnum = (typeof ProjectMemberOrderByRelevanceFieldEnum)[keyof typeof ProjectMemberOrderByRelevanceFieldEnum]
export const BoardColumnOrderByRelevanceFieldEnum = {
name: 'name',
boundStatus: 'boundStatus',
retention: 'retention'
} as const
export type BoardColumnOrderByRelevanceFieldEnum = (typeof BoardColumnOrderByRelevanceFieldEnum)[keyof typeof BoardColumnOrderByRelevanceFieldEnum]
export const TaskOrderByRelevanceFieldEnum = {
title: 'title',
description: 'description',
kind: 'kind',
status: 'status',
archiveSource: 'archiveSource'
} as const
export type TaskOrderByRelevanceFieldEnum = (typeof TaskOrderByRelevanceFieldEnum)[keyof typeof TaskOrderByRelevanceFieldEnum]
export const TaskTagOrderByRelevanceFieldEnum = {
name: 'name'
} as const
export type TaskTagOrderByRelevanceFieldEnum = (typeof TaskTagOrderByRelevanceFieldEnum)[keyof typeof TaskTagOrderByRelevanceFieldEnum]
+123 -7
View File
@@ -285,7 +285,6 @@ export type AlertOrderByWithRelationInput = {
diff?: Prisma.SortOrder diff?: Prisma.SortOrder
diffRatio?: Prisma.SortOrder diffRatio?: Prisma.SortOrder
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
_relevance?: Prisma.AlertOrderByRelevanceInput
} }
export type AlertWhereUniqueInput = Prisma.AtLeast<{ export type AlertWhereUniqueInput = Prisma.AtLeast<{
@@ -426,12 +425,6 @@ export type AlertUncheckedUpdateManyInput = {
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type AlertOrderByRelevanceInput = {
fields: Prisma.AlertOrderByRelevanceFieldEnum | Prisma.AlertOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type AlertCountOrderByAggregateInput = { export type AlertCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
indicatorName?: Prisma.SortOrder indicatorName?: Prisma.SortOrder
@@ -502,7 +495,31 @@ export type AlertSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs =
createdAt?: boolean createdAt?: boolean
}, ExtArgs["result"]["alert"]> }, ExtArgs["result"]["alert"]>
export type AlertSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
indicatorName?: boolean
period?: boolean
valueA?: boolean
valueB?: boolean
sourceA?: boolean
sourceB?: boolean
diff?: boolean
diffRatio?: boolean
createdAt?: boolean
}, ExtArgs["result"]["alert"]>
export type AlertSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
indicatorName?: boolean
period?: boolean
valueA?: boolean
valueB?: boolean
sourceA?: boolean
sourceB?: boolean
diff?: boolean
diffRatio?: boolean
createdAt?: boolean
}, ExtArgs["result"]["alert"]>
export type AlertSelectScalar = { export type AlertSelectScalar = {
id?: boolean id?: boolean
@@ -650,6 +667,30 @@ export interface AlertDelegate<ExtArgs extends runtime.Types.Extensions.Internal
*/ */
createMany<T extends AlertCreateManyArgs>(args?: Prisma.SelectSubset<T, AlertCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends AlertCreateManyArgs>(args?: Prisma.SelectSubset<T, AlertCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many Alerts and returns the data saved in the database.
* @param {AlertCreateManyAndReturnArgs} args - Arguments to create many Alerts.
* @example
* // Create many Alerts
* const alert = await prisma.alert.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many Alerts and only return the `id`
* const alertWithIdOnly = await prisma.alert.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<T extends AlertCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, AlertCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$AlertPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a Alert. * Delete a Alert.
* @param {AlertDeleteArgs} args - Arguments to delete one Alert. * @param {AlertDeleteArgs} args - Arguments to delete one Alert.
@@ -714,6 +755,36 @@ export interface AlertDelegate<ExtArgs extends runtime.Types.Extensions.Internal
*/ */
updateMany<T extends AlertUpdateManyArgs>(args: Prisma.SelectSubset<T, AlertUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends AlertUpdateManyArgs>(args: Prisma.SelectSubset<T, AlertUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more Alerts and returns the data updated in the database.
* @param {AlertUpdateManyAndReturnArgs} args - Arguments to update many Alerts.
* @example
* // Update many Alerts
* const alert = await prisma.alert.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more Alerts and only return the `id`
* const alertWithIdOnly = await prisma.alert.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<T extends AlertUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, AlertUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$AlertPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one Alert. * Create or update one Alert.
* @param {AlertUpsertArgs} args - Arguments to update or create a Alert. * @param {AlertUpsertArgs} args - Arguments to update or create a Alert.
@@ -1125,6 +1196,25 @@ export type AlertCreateManyArgs<ExtArgs extends runtime.Types.Extensions.Interna
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* Alert createManyAndReturn
*/
export type AlertCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Alert
*/
select?: Prisma.AlertSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Alert
*/
omit?: Prisma.AlertOmit<ExtArgs> | null
/**
* The data used to create many Alerts.
*/
data: Prisma.AlertCreateManyInput | Prisma.AlertCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* Alert update * Alert update
*/ */
@@ -1165,6 +1255,32 @@ export type AlertUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.Interna
limit?: number limit?: number
} }
/**
* Alert updateManyAndReturn
*/
export type AlertUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Alert
*/
select?: Prisma.AlertSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Alert
*/
omit?: Prisma.AlertOmit<ExtArgs> | null
/**
* The data used to update Alerts.
*/
data: Prisma.XOR<Prisma.AlertUpdateManyMutationInput, Prisma.AlertUncheckedUpdateManyInput>
/**
* Filter which Alerts to update
*/
where?: Prisma.AlertWhereInput
/**
* Limit how many Alerts to update.
*/
limit?: number
}
/** /**
* Alert upsert * Alert upsert
*/ */
+117 -7
View File
@@ -242,7 +242,6 @@ export type ArticleOrderByWithRelationInput = {
date?: Prisma.SortOrder date?: Prisma.SortOrder
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
_relevance?: Prisma.ArticleOrderByRelevanceInput
} }
export type ArticleWhereUniqueInput = Prisma.AtLeast<{ export type ArticleWhereUniqueInput = Prisma.AtLeast<{
@@ -353,12 +352,6 @@ export type ArticleUncheckedUpdateManyInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type ArticleOrderByRelevanceInput = {
fields: Prisma.ArticleOrderByRelevanceFieldEnum | Prisma.ArticleOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type ArticleCountOrderByAggregateInput = { export type ArticleCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
title?: Prisma.SortOrder title?: Prisma.SortOrder
@@ -409,7 +402,25 @@ export type ArticleSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs
updatedAt?: boolean updatedAt?: boolean
}, ExtArgs["result"]["article"]> }, ExtArgs["result"]["article"]>
export type ArticleSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
title?: boolean
slug?: boolean
content?: boolean
date?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["article"]>
export type ArticleSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
title?: boolean
slug?: boolean
content?: boolean
date?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["article"]>
export type ArticleSelectScalar = { export type ArticleSelectScalar = {
id?: boolean id?: boolean
@@ -551,6 +562,30 @@ export interface ArticleDelegate<ExtArgs extends runtime.Types.Extensions.Intern
*/ */
createMany<T extends ArticleCreateManyArgs>(args?: Prisma.SelectSubset<T, ArticleCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends ArticleCreateManyArgs>(args?: Prisma.SelectSubset<T, ArticleCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many Articles and returns the data saved in the database.
* @param {ArticleCreateManyAndReturnArgs} args - Arguments to create many Articles.
* @example
* // Create many Articles
* const article = await prisma.article.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many Articles and only return the `id`
* const articleWithIdOnly = await prisma.article.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<T extends ArticleCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, ArticleCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ArticlePayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a Article. * Delete a Article.
* @param {ArticleDeleteArgs} args - Arguments to delete one Article. * @param {ArticleDeleteArgs} args - Arguments to delete one Article.
@@ -615,6 +650,36 @@ export interface ArticleDelegate<ExtArgs extends runtime.Types.Extensions.Intern
*/ */
updateMany<T extends ArticleUpdateManyArgs>(args: Prisma.SelectSubset<T, ArticleUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends ArticleUpdateManyArgs>(args: Prisma.SelectSubset<T, ArticleUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more Articles and returns the data updated in the database.
* @param {ArticleUpdateManyAndReturnArgs} args - Arguments to update many Articles.
* @example
* // Update many Articles
* const article = await prisma.article.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more Articles and only return the `id`
* const articleWithIdOnly = await prisma.article.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<T extends ArticleUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, ArticleUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ArticlePayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one Article. * Create or update one Article.
* @param {ArticleUpsertArgs} args - Arguments to update or create a Article. * @param {ArticleUpsertArgs} args - Arguments to update or create a Article.
@@ -1023,6 +1088,25 @@ export type ArticleCreateManyArgs<ExtArgs extends runtime.Types.Extensions.Inter
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* Article createManyAndReturn
*/
export type ArticleCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Article
*/
select?: Prisma.ArticleSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Article
*/
omit?: Prisma.ArticleOmit<ExtArgs> | null
/**
* The data used to create many Articles.
*/
data: Prisma.ArticleCreateManyInput | Prisma.ArticleCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* Article update * Article update
*/ */
@@ -1063,6 +1147,32 @@ export type ArticleUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.Inter
limit?: number limit?: number
} }
/**
* Article updateManyAndReturn
*/
export type ArticleUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Article
*/
select?: Prisma.ArticleSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Article
*/
omit?: Prisma.ArticleOmit<ExtArgs> | null
/**
* The data used to update Articles.
*/
data: Prisma.XOR<Prisma.ArticleUpdateManyMutationInput, Prisma.ArticleUncheckedUpdateManyInput>
/**
* Filter which Articles to update
*/
where?: Prisma.ArticleWhereInput
/**
* Limit how many Articles to update.
*/
limit?: number
}
/** /**
* Article upsert * Article upsert
*/ */
+215 -9
View File
@@ -40,6 +40,8 @@ export type BoardColumnSumAggregateOutputType = {
export type BoardColumnMinAggregateOutputType = { export type BoardColumnMinAggregateOutputType = {
id: number | null id: number | null
uuid: string | null
projectUuid: string | null
projectId: number | null projectId: number | null
name: string | null name: string | null
sortOrder: number | null sortOrder: number | null
@@ -51,6 +53,8 @@ export type BoardColumnMinAggregateOutputType = {
export type BoardColumnMaxAggregateOutputType = { export type BoardColumnMaxAggregateOutputType = {
id: number | null id: number | null
uuid: string | null
projectUuid: string | null
projectId: number | null projectId: number | null
name: string | null name: string | null
sortOrder: number | null sortOrder: number | null
@@ -62,6 +66,8 @@ export type BoardColumnMaxAggregateOutputType = {
export type BoardColumnCountAggregateOutputType = { export type BoardColumnCountAggregateOutputType = {
id: number id: number
uuid: number
projectUuid: number
projectId: number projectId: number
name: number name: number
sortOrder: number sortOrder: number
@@ -87,6 +93,8 @@ export type BoardColumnSumAggregateInputType = {
export type BoardColumnMinAggregateInputType = { export type BoardColumnMinAggregateInputType = {
id?: true id?: true
uuid?: true
projectUuid?: true
projectId?: true projectId?: true
name?: true name?: true
sortOrder?: true sortOrder?: true
@@ -98,6 +106,8 @@ export type BoardColumnMinAggregateInputType = {
export type BoardColumnMaxAggregateInputType = { export type BoardColumnMaxAggregateInputType = {
id?: true id?: true
uuid?: true
projectUuid?: true
projectId?: true projectId?: true
name?: true name?: true
sortOrder?: true sortOrder?: true
@@ -109,6 +119,8 @@ export type BoardColumnMaxAggregateInputType = {
export type BoardColumnCountAggregateInputType = { export type BoardColumnCountAggregateInputType = {
id?: true id?: true
uuid?: true
projectUuid?: true
projectId?: true projectId?: true
name?: true name?: true
sortOrder?: true sortOrder?: true
@@ -207,6 +219,8 @@ export type BoardColumnGroupByArgs<ExtArgs extends runtime.Types.Extensions.Inte
export type BoardColumnGroupByOutputType = { export type BoardColumnGroupByOutputType = {
id: number id: number
uuid: string
projectUuid: string | null
projectId: number projectId: number
name: string name: string
sortOrder: number sortOrder: number
@@ -241,6 +255,8 @@ export type BoardColumnWhereInput = {
OR?: Prisma.BoardColumnWhereInput[] OR?: Prisma.BoardColumnWhereInput[]
NOT?: Prisma.BoardColumnWhereInput | Prisma.BoardColumnWhereInput[] NOT?: Prisma.BoardColumnWhereInput | Prisma.BoardColumnWhereInput[]
id?: Prisma.IntFilter<"BoardColumn"> | number id?: Prisma.IntFilter<"BoardColumn"> | number
uuid?: Prisma.StringFilter<"BoardColumn"> | string
projectUuid?: Prisma.StringNullableFilter<"BoardColumn"> | string | null
projectId?: Prisma.IntFilter<"BoardColumn"> | number projectId?: Prisma.IntFilter<"BoardColumn"> | number
name?: Prisma.StringFilter<"BoardColumn"> | string name?: Prisma.StringFilter<"BoardColumn"> | string
sortOrder?: Prisma.IntFilter<"BoardColumn"> | number sortOrder?: Prisma.IntFilter<"BoardColumn"> | number
@@ -254,6 +270,8 @@ export type BoardColumnWhereInput = {
export type BoardColumnOrderByWithRelationInput = { export type BoardColumnOrderByWithRelationInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
projectUuid?: Prisma.SortOrderInput | Prisma.SortOrder
projectId?: Prisma.SortOrder projectId?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
sortOrder?: Prisma.SortOrder sortOrder?: Prisma.SortOrder
@@ -263,15 +281,16 @@ export type BoardColumnOrderByWithRelationInput = {
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
project?: Prisma.ProjectOrderByWithRelationInput project?: Prisma.ProjectOrderByWithRelationInput
tasks?: Prisma.TaskOrderByRelationAggregateInput tasks?: Prisma.TaskOrderByRelationAggregateInput
_relevance?: Prisma.BoardColumnOrderByRelevanceInput
} }
export type BoardColumnWhereUniqueInput = Prisma.AtLeast<{ export type BoardColumnWhereUniqueInput = Prisma.AtLeast<{
id?: number id?: number
uuid?: string
projectId_name?: Prisma.BoardColumnProjectIdNameCompoundUniqueInput projectId_name?: Prisma.BoardColumnProjectIdNameCompoundUniqueInput
AND?: Prisma.BoardColumnWhereInput | Prisma.BoardColumnWhereInput[] AND?: Prisma.BoardColumnWhereInput | Prisma.BoardColumnWhereInput[]
OR?: Prisma.BoardColumnWhereInput[] OR?: Prisma.BoardColumnWhereInput[]
NOT?: Prisma.BoardColumnWhereInput | Prisma.BoardColumnWhereInput[] NOT?: Prisma.BoardColumnWhereInput | Prisma.BoardColumnWhereInput[]
projectUuid?: Prisma.StringNullableFilter<"BoardColumn"> | string | null
projectId?: Prisma.IntFilter<"BoardColumn"> | number projectId?: Prisma.IntFilter<"BoardColumn"> | number
name?: Prisma.StringFilter<"BoardColumn"> | string name?: Prisma.StringFilter<"BoardColumn"> | string
sortOrder?: Prisma.IntFilter<"BoardColumn"> | number sortOrder?: Prisma.IntFilter<"BoardColumn"> | number
@@ -281,10 +300,12 @@ export type BoardColumnWhereUniqueInput = Prisma.AtLeast<{
updatedAt?: Prisma.DateTimeFilter<"BoardColumn"> | Date | string updatedAt?: Prisma.DateTimeFilter<"BoardColumn"> | Date | string
project?: Prisma.XOR<Prisma.ProjectScalarRelationFilter, Prisma.ProjectWhereInput> project?: Prisma.XOR<Prisma.ProjectScalarRelationFilter, Prisma.ProjectWhereInput>
tasks?: Prisma.TaskListRelationFilter tasks?: Prisma.TaskListRelationFilter
}, "id" | "projectId_name"> }, "id" | "uuid" | "projectId_name">
export type BoardColumnOrderByWithAggregationInput = { export type BoardColumnOrderByWithAggregationInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
projectUuid?: Prisma.SortOrderInput | Prisma.SortOrder
projectId?: Prisma.SortOrder projectId?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
sortOrder?: Prisma.SortOrder sortOrder?: Prisma.SortOrder
@@ -304,6 +325,8 @@ export type BoardColumnScalarWhereWithAggregatesInput = {
OR?: Prisma.BoardColumnScalarWhereWithAggregatesInput[] OR?: Prisma.BoardColumnScalarWhereWithAggregatesInput[]
NOT?: Prisma.BoardColumnScalarWhereWithAggregatesInput | Prisma.BoardColumnScalarWhereWithAggregatesInput[] NOT?: Prisma.BoardColumnScalarWhereWithAggregatesInput | Prisma.BoardColumnScalarWhereWithAggregatesInput[]
id?: Prisma.IntWithAggregatesFilter<"BoardColumn"> | number id?: Prisma.IntWithAggregatesFilter<"BoardColumn"> | number
uuid?: Prisma.StringWithAggregatesFilter<"BoardColumn"> | string
projectUuid?: Prisma.StringNullableWithAggregatesFilter<"BoardColumn"> | string | null
projectId?: Prisma.IntWithAggregatesFilter<"BoardColumn"> | number projectId?: Prisma.IntWithAggregatesFilter<"BoardColumn"> | number
name?: Prisma.StringWithAggregatesFilter<"BoardColumn"> | string name?: Prisma.StringWithAggregatesFilter<"BoardColumn"> | string
sortOrder?: Prisma.IntWithAggregatesFilter<"BoardColumn"> | number sortOrder?: Prisma.IntWithAggregatesFilter<"BoardColumn"> | number
@@ -314,6 +337,8 @@ export type BoardColumnScalarWhereWithAggregatesInput = {
} }
export type BoardColumnCreateInput = { export type BoardColumnCreateInput = {
uuid: string
projectUuid?: string | null
name: string name: string
sortOrder?: number sortOrder?: number
boundStatus?: string | null boundStatus?: string | null
@@ -326,6 +351,8 @@ export type BoardColumnCreateInput = {
export type BoardColumnUncheckedCreateInput = { export type BoardColumnUncheckedCreateInput = {
id?: number id?: number
uuid: string
projectUuid?: string | null
projectId: number projectId: number
name: string name: string
sortOrder?: number sortOrder?: number
@@ -337,6 +364,8 @@ export type BoardColumnUncheckedCreateInput = {
} }
export type BoardColumnUpdateInput = { export type BoardColumnUpdateInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
sortOrder?: Prisma.IntFieldUpdateOperationsInput | number sortOrder?: Prisma.IntFieldUpdateOperationsInput | number
boundStatus?: Prisma.NullableStringFieldUpdateOperationsInput | string | null boundStatus?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
@@ -349,6 +378,8 @@ export type BoardColumnUpdateInput = {
export type BoardColumnUncheckedUpdateInput = { export type BoardColumnUncheckedUpdateInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
projectId?: Prisma.IntFieldUpdateOperationsInput | number projectId?: Prisma.IntFieldUpdateOperationsInput | number
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
sortOrder?: Prisma.IntFieldUpdateOperationsInput | number sortOrder?: Prisma.IntFieldUpdateOperationsInput | number
@@ -361,6 +392,8 @@ export type BoardColumnUncheckedUpdateInput = {
export type BoardColumnCreateManyInput = { export type BoardColumnCreateManyInput = {
id?: number id?: number
uuid: string
projectUuid?: string | null
projectId: number projectId: number
name: string name: string
sortOrder?: number sortOrder?: number
@@ -371,6 +404,8 @@ export type BoardColumnCreateManyInput = {
} }
export type BoardColumnUpdateManyMutationInput = { export type BoardColumnUpdateManyMutationInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
sortOrder?: Prisma.IntFieldUpdateOperationsInput | number sortOrder?: Prisma.IntFieldUpdateOperationsInput | number
boundStatus?: Prisma.NullableStringFieldUpdateOperationsInput | string | null boundStatus?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
@@ -381,6 +416,8 @@ export type BoardColumnUpdateManyMutationInput = {
export type BoardColumnUncheckedUpdateManyInput = { export type BoardColumnUncheckedUpdateManyInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
projectId?: Prisma.IntFieldUpdateOperationsInput | number projectId?: Prisma.IntFieldUpdateOperationsInput | number
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
sortOrder?: Prisma.IntFieldUpdateOperationsInput | number sortOrder?: Prisma.IntFieldUpdateOperationsInput | number
@@ -400,12 +437,6 @@ export type BoardColumnOrderByRelationAggregateInput = {
_count?: Prisma.SortOrder _count?: Prisma.SortOrder
} }
export type BoardColumnOrderByRelevanceInput = {
fields: Prisma.BoardColumnOrderByRelevanceFieldEnum | Prisma.BoardColumnOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type BoardColumnProjectIdNameCompoundUniqueInput = { export type BoardColumnProjectIdNameCompoundUniqueInput = {
projectId: number projectId: number
name: string name: string
@@ -413,6 +444,8 @@ export type BoardColumnProjectIdNameCompoundUniqueInput = {
export type BoardColumnCountOrderByAggregateInput = { export type BoardColumnCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
projectUuid?: Prisma.SortOrder
projectId?: Prisma.SortOrder projectId?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
sortOrder?: Prisma.SortOrder sortOrder?: Prisma.SortOrder
@@ -430,6 +463,8 @@ export type BoardColumnAvgOrderByAggregateInput = {
export type BoardColumnMaxOrderByAggregateInput = { export type BoardColumnMaxOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
projectUuid?: Prisma.SortOrder
projectId?: Prisma.SortOrder projectId?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
sortOrder?: Prisma.SortOrder sortOrder?: Prisma.SortOrder
@@ -441,6 +476,8 @@ export type BoardColumnMaxOrderByAggregateInput = {
export type BoardColumnMinOrderByAggregateInput = { export type BoardColumnMinOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
projectUuid?: Prisma.SortOrder
projectId?: Prisma.SortOrder projectId?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
sortOrder?: Prisma.SortOrder sortOrder?: Prisma.SortOrder
@@ -518,6 +555,8 @@ export type BoardColumnUpdateOneRequiredWithoutTasksNestedInput = {
} }
export type BoardColumnCreateWithoutProjectInput = { export type BoardColumnCreateWithoutProjectInput = {
uuid: string
projectUuid?: string | null
name: string name: string
sortOrder?: number sortOrder?: number
boundStatus?: string | null boundStatus?: string | null
@@ -529,6 +568,8 @@ export type BoardColumnCreateWithoutProjectInput = {
export type BoardColumnUncheckedCreateWithoutProjectInput = { export type BoardColumnUncheckedCreateWithoutProjectInput = {
id?: number id?: number
uuid: string
projectUuid?: string | null
name: string name: string
sortOrder?: number sortOrder?: number
boundStatus?: string | null boundStatus?: string | null
@@ -569,6 +610,8 @@ export type BoardColumnScalarWhereInput = {
OR?: Prisma.BoardColumnScalarWhereInput[] OR?: Prisma.BoardColumnScalarWhereInput[]
NOT?: Prisma.BoardColumnScalarWhereInput | Prisma.BoardColumnScalarWhereInput[] NOT?: Prisma.BoardColumnScalarWhereInput | Prisma.BoardColumnScalarWhereInput[]
id?: Prisma.IntFilter<"BoardColumn"> | number id?: Prisma.IntFilter<"BoardColumn"> | number
uuid?: Prisma.StringFilter<"BoardColumn"> | string
projectUuid?: Prisma.StringNullableFilter<"BoardColumn"> | string | null
projectId?: Prisma.IntFilter<"BoardColumn"> | number projectId?: Prisma.IntFilter<"BoardColumn"> | number
name?: Prisma.StringFilter<"BoardColumn"> | string name?: Prisma.StringFilter<"BoardColumn"> | string
sortOrder?: Prisma.IntFilter<"BoardColumn"> | number sortOrder?: Prisma.IntFilter<"BoardColumn"> | number
@@ -579,6 +622,8 @@ export type BoardColumnScalarWhereInput = {
} }
export type BoardColumnCreateWithoutTasksInput = { export type BoardColumnCreateWithoutTasksInput = {
uuid: string
projectUuid?: string | null
name: string name: string
sortOrder?: number sortOrder?: number
boundStatus?: string | null boundStatus?: string | null
@@ -590,6 +635,8 @@ export type BoardColumnCreateWithoutTasksInput = {
export type BoardColumnUncheckedCreateWithoutTasksInput = { export type BoardColumnUncheckedCreateWithoutTasksInput = {
id?: number id?: number
uuid: string
projectUuid?: string | null
projectId: number projectId: number
name: string name: string
sortOrder?: number sortOrder?: number
@@ -616,6 +663,8 @@ export type BoardColumnUpdateToOneWithWhereWithoutTasksInput = {
} }
export type BoardColumnUpdateWithoutTasksInput = { export type BoardColumnUpdateWithoutTasksInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
sortOrder?: Prisma.IntFieldUpdateOperationsInput | number sortOrder?: Prisma.IntFieldUpdateOperationsInput | number
boundStatus?: Prisma.NullableStringFieldUpdateOperationsInput | string | null boundStatus?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
@@ -627,6 +676,8 @@ export type BoardColumnUpdateWithoutTasksInput = {
export type BoardColumnUncheckedUpdateWithoutTasksInput = { export type BoardColumnUncheckedUpdateWithoutTasksInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
projectId?: Prisma.IntFieldUpdateOperationsInput | number projectId?: Prisma.IntFieldUpdateOperationsInput | number
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
sortOrder?: Prisma.IntFieldUpdateOperationsInput | number sortOrder?: Prisma.IntFieldUpdateOperationsInput | number
@@ -638,6 +689,8 @@ export type BoardColumnUncheckedUpdateWithoutTasksInput = {
export type BoardColumnCreateManyProjectInput = { export type BoardColumnCreateManyProjectInput = {
id?: number id?: number
uuid: string
projectUuid?: string | null
name: string name: string
sortOrder?: number sortOrder?: number
boundStatus?: string | null boundStatus?: string | null
@@ -647,6 +700,8 @@ export type BoardColumnCreateManyProjectInput = {
} }
export type BoardColumnUpdateWithoutProjectInput = { export type BoardColumnUpdateWithoutProjectInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
sortOrder?: Prisma.IntFieldUpdateOperationsInput | number sortOrder?: Prisma.IntFieldUpdateOperationsInput | number
boundStatus?: Prisma.NullableStringFieldUpdateOperationsInput | string | null boundStatus?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
@@ -658,6 +713,8 @@ export type BoardColumnUpdateWithoutProjectInput = {
export type BoardColumnUncheckedUpdateWithoutProjectInput = { export type BoardColumnUncheckedUpdateWithoutProjectInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
sortOrder?: Prisma.IntFieldUpdateOperationsInput | number sortOrder?: Prisma.IntFieldUpdateOperationsInput | number
boundStatus?: Prisma.NullableStringFieldUpdateOperationsInput | string | null boundStatus?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
@@ -669,6 +726,8 @@ export type BoardColumnUncheckedUpdateWithoutProjectInput = {
export type BoardColumnUncheckedUpdateManyWithoutProjectInput = { export type BoardColumnUncheckedUpdateManyWithoutProjectInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
sortOrder?: Prisma.IntFieldUpdateOperationsInput | number sortOrder?: Prisma.IntFieldUpdateOperationsInput | number
boundStatus?: Prisma.NullableStringFieldUpdateOperationsInput | string | null boundStatus?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
@@ -710,6 +769,8 @@ export type BoardColumnCountOutputTypeCountTasksArgs<ExtArgs extends runtime.Typ
export type BoardColumnSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{ export type BoardColumnSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean id?: boolean
uuid?: boolean
projectUuid?: boolean
projectId?: boolean projectId?: boolean
name?: boolean name?: boolean
sortOrder?: boolean sortOrder?: boolean
@@ -722,10 +783,38 @@ export type BoardColumnSelect<ExtArgs extends runtime.Types.Extensions.InternalA
_count?: boolean | Prisma.BoardColumnCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.BoardColumnCountOutputTypeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["boardColumn"]> }, ExtArgs["result"]["boardColumn"]>
export type BoardColumnSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
projectUuid?: boolean
projectId?: boolean
name?: boolean
sortOrder?: boolean
boundStatus?: boolean
retention?: boolean
createdAt?: boolean
updatedAt?: boolean
project?: boolean | Prisma.ProjectDefaultArgs<ExtArgs>
}, ExtArgs["result"]["boardColumn"]>
export type BoardColumnSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
projectUuid?: boolean
projectId?: boolean
name?: boolean
sortOrder?: boolean
boundStatus?: boolean
retention?: boolean
createdAt?: boolean
updatedAt?: boolean
project?: boolean | Prisma.ProjectDefaultArgs<ExtArgs>
}, ExtArgs["result"]["boardColumn"]>
export type BoardColumnSelectScalar = { export type BoardColumnSelectScalar = {
id?: boolean id?: boolean
uuid?: boolean
projectUuid?: boolean
projectId?: boolean projectId?: boolean
name?: boolean name?: boolean
sortOrder?: boolean sortOrder?: boolean
@@ -735,12 +824,18 @@ export type BoardColumnSelectScalar = {
updatedAt?: boolean updatedAt?: boolean
} }
export type BoardColumnOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "projectId" | "name" | "sortOrder" | "boundStatus" | "retention" | "createdAt" | "updatedAt", ExtArgs["result"]["boardColumn"]> export type BoardColumnOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "uuid" | "projectUuid" | "projectId" | "name" | "sortOrder" | "boundStatus" | "retention" | "createdAt" | "updatedAt", ExtArgs["result"]["boardColumn"]>
export type BoardColumnInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type BoardColumnInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
project?: boolean | Prisma.ProjectDefaultArgs<ExtArgs> project?: boolean | Prisma.ProjectDefaultArgs<ExtArgs>
tasks?: boolean | Prisma.BoardColumn$tasksArgs<ExtArgs> tasks?: boolean | Prisma.BoardColumn$tasksArgs<ExtArgs>
_count?: boolean | Prisma.BoardColumnCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.BoardColumnCountOutputTypeDefaultArgs<ExtArgs>
} }
export type BoardColumnIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
project?: boolean | Prisma.ProjectDefaultArgs<ExtArgs>
}
export type BoardColumnIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
project?: boolean | Prisma.ProjectDefaultArgs<ExtArgs>
}
export type $BoardColumnPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $BoardColumnPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "BoardColumn" name: "BoardColumn"
@@ -750,6 +845,8 @@ export type $BoardColumnPayload<ExtArgs extends runtime.Types.Extensions.Interna
} }
scalars: runtime.Types.Extensions.GetPayloadResult<{ scalars: runtime.Types.Extensions.GetPayloadResult<{
id: number id: number
uuid: string
projectUuid: string | null
projectId: number projectId: number
name: string name: string
sortOrder: number sortOrder: number
@@ -874,6 +971,30 @@ export interface BoardColumnDelegate<ExtArgs extends runtime.Types.Extensions.In
*/ */
createMany<T extends BoardColumnCreateManyArgs>(args?: Prisma.SelectSubset<T, BoardColumnCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends BoardColumnCreateManyArgs>(args?: Prisma.SelectSubset<T, BoardColumnCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many BoardColumns and returns the data saved in the database.
* @param {BoardColumnCreateManyAndReturnArgs} args - Arguments to create many BoardColumns.
* @example
* // Create many BoardColumns
* const boardColumn = await prisma.boardColumn.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many BoardColumns and only return the `id`
* const boardColumnWithIdOnly = await prisma.boardColumn.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<T extends BoardColumnCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, BoardColumnCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$BoardColumnPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a BoardColumn. * Delete a BoardColumn.
* @param {BoardColumnDeleteArgs} args - Arguments to delete one BoardColumn. * @param {BoardColumnDeleteArgs} args - Arguments to delete one BoardColumn.
@@ -938,6 +1059,36 @@ export interface BoardColumnDelegate<ExtArgs extends runtime.Types.Extensions.In
*/ */
updateMany<T extends BoardColumnUpdateManyArgs>(args: Prisma.SelectSubset<T, BoardColumnUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends BoardColumnUpdateManyArgs>(args: Prisma.SelectSubset<T, BoardColumnUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more BoardColumns and returns the data updated in the database.
* @param {BoardColumnUpdateManyAndReturnArgs} args - Arguments to update many BoardColumns.
* @example
* // Update many BoardColumns
* const boardColumn = await prisma.boardColumn.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more BoardColumns and only return the `id`
* const boardColumnWithIdOnly = await prisma.boardColumn.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<T extends BoardColumnUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, BoardColumnUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$BoardColumnPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one BoardColumn. * Create or update one BoardColumn.
* @param {BoardColumnUpsertArgs} args - Arguments to update or create a BoardColumn. * @param {BoardColumnUpsertArgs} args - Arguments to update or create a BoardColumn.
@@ -1129,6 +1280,8 @@ export interface Prisma__BoardColumnClient<T, Null = never, ExtArgs extends runt
*/ */
export interface BoardColumnFieldRefs { export interface BoardColumnFieldRefs {
readonly id: Prisma.FieldRef<"BoardColumn", 'Int'> readonly id: Prisma.FieldRef<"BoardColumn", 'Int'>
readonly uuid: Prisma.FieldRef<"BoardColumn", 'String'>
readonly projectUuid: Prisma.FieldRef<"BoardColumn", 'String'>
readonly projectId: Prisma.FieldRef<"BoardColumn", 'Int'> readonly projectId: Prisma.FieldRef<"BoardColumn", 'Int'>
readonly name: Prisma.FieldRef<"BoardColumn", 'String'> readonly name: Prisma.FieldRef<"BoardColumn", 'String'>
readonly sortOrder: Prisma.FieldRef<"BoardColumn", 'Int'> readonly sortOrder: Prisma.FieldRef<"BoardColumn", 'Int'>
@@ -1373,6 +1526,29 @@ export type BoardColumnCreateManyArgs<ExtArgs extends runtime.Types.Extensions.I
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* BoardColumn createManyAndReturn
*/
export type BoardColumnCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the BoardColumn
*/
select?: Prisma.BoardColumnSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the BoardColumn
*/
omit?: Prisma.BoardColumnOmit<ExtArgs> | null
/**
* The data used to create many BoardColumns.
*/
data: Prisma.BoardColumnCreateManyInput | Prisma.BoardColumnCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.BoardColumnIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* BoardColumn update * BoardColumn update
*/ */
@@ -1417,6 +1593,36 @@ export type BoardColumnUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.I
limit?: number limit?: number
} }
/**
* BoardColumn updateManyAndReturn
*/
export type BoardColumnUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the BoardColumn
*/
select?: Prisma.BoardColumnSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the BoardColumn
*/
omit?: Prisma.BoardColumnOmit<ExtArgs> | null
/**
* The data used to update BoardColumns.
*/
data: Prisma.XOR<Prisma.BoardColumnUpdateManyMutationInput, Prisma.BoardColumnUncheckedUpdateManyInput>
/**
* Filter which BoardColumns to update
*/
where?: Prisma.BoardColumnWhereInput
/**
* Limit how many BoardColumns to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.BoardColumnIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* BoardColumn upsert * BoardColumn upsert
*/ */
+139 -7
View File
@@ -267,7 +267,6 @@ export type CheckInOrderByWithRelationInput = {
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
habit?: Prisma.HabitOrderByWithRelationInput habit?: Prisma.HabitOrderByWithRelationInput
user?: Prisma.UserOrderByWithRelationInput user?: Prisma.UserOrderByWithRelationInput
_relevance?: Prisma.CheckInOrderByRelevanceInput
} }
export type CheckInWhereUniqueInput = Prisma.AtLeast<{ export type CheckInWhereUniqueInput = Prisma.AtLeast<{
@@ -399,12 +398,6 @@ export type CheckInOrderByRelationAggregateInput = {
_count?: Prisma.SortOrder _count?: Prisma.SortOrder
} }
export type CheckInOrderByRelevanceInput = {
fields: Prisma.CheckInOrderByRelevanceFieldEnum | Prisma.CheckInOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type CheckInHabitIdDateSeqCompoundUniqueInput = { export type CheckInHabitIdDateSeqCompoundUniqueInput = {
habitId: number habitId: number
date: string date: string
@@ -739,7 +732,31 @@ export type CheckInSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs
user?: boolean | Prisma.UserDefaultArgs<ExtArgs> user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["checkIn"]> }, ExtArgs["result"]["checkIn"]>
export type CheckInSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
habitId?: boolean
userId?: boolean
date?: boolean
seq?: boolean
note?: boolean
source?: boolean
createdAt?: boolean
habit?: boolean | Prisma.HabitDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["checkIn"]>
export type CheckInSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
habitId?: boolean
userId?: boolean
date?: boolean
seq?: boolean
note?: boolean
source?: boolean
createdAt?: boolean
habit?: boolean | Prisma.HabitDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["checkIn"]>
export type CheckInSelectScalar = { export type CheckInSelectScalar = {
id?: boolean id?: boolean
@@ -757,6 +774,14 @@ export type CheckInInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs
habit?: boolean | Prisma.HabitDefaultArgs<ExtArgs> habit?: boolean | Prisma.HabitDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs> user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
} }
export type CheckInIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
habit?: boolean | Prisma.HabitDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}
export type CheckInIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
habit?: boolean | Prisma.HabitDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}
export type $CheckInPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $CheckInPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "CheckIn" name: "CheckIn"
@@ -890,6 +915,30 @@ export interface CheckInDelegate<ExtArgs extends runtime.Types.Extensions.Intern
*/ */
createMany<T extends CheckInCreateManyArgs>(args?: Prisma.SelectSubset<T, CheckInCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends CheckInCreateManyArgs>(args?: Prisma.SelectSubset<T, CheckInCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many CheckIns and returns the data saved in the database.
* @param {CheckInCreateManyAndReturnArgs} args - Arguments to create many CheckIns.
* @example
* // Create many CheckIns
* const checkIn = await prisma.checkIn.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many CheckIns and only return the `id`
* const checkInWithIdOnly = await prisma.checkIn.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<T extends CheckInCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, CheckInCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$CheckInPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a CheckIn. * Delete a CheckIn.
* @param {CheckInDeleteArgs} args - Arguments to delete one CheckIn. * @param {CheckInDeleteArgs} args - Arguments to delete one CheckIn.
@@ -954,6 +1003,36 @@ export interface CheckInDelegate<ExtArgs extends runtime.Types.Extensions.Intern
*/ */
updateMany<T extends CheckInUpdateManyArgs>(args: Prisma.SelectSubset<T, CheckInUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends CheckInUpdateManyArgs>(args: Prisma.SelectSubset<T, CheckInUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more CheckIns and returns the data updated in the database.
* @param {CheckInUpdateManyAndReturnArgs} args - Arguments to update many CheckIns.
* @example
* // Update many CheckIns
* const checkIn = await prisma.checkIn.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more CheckIns and only return the `id`
* const checkInWithIdOnly = await prisma.checkIn.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<T extends CheckInUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, CheckInUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$CheckInPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one CheckIn. * Create or update one CheckIn.
* @param {CheckInUpsertArgs} args - Arguments to update or create a CheckIn. * @param {CheckInUpsertArgs} args - Arguments to update or create a CheckIn.
@@ -1389,6 +1468,29 @@ export type CheckInCreateManyArgs<ExtArgs extends runtime.Types.Extensions.Inter
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* CheckIn createManyAndReturn
*/
export type CheckInCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the CheckIn
*/
select?: Prisma.CheckInSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the CheckIn
*/
omit?: Prisma.CheckInOmit<ExtArgs> | null
/**
* The data used to create many CheckIns.
*/
data: Prisma.CheckInCreateManyInput | Prisma.CheckInCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.CheckInIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* CheckIn update * CheckIn update
*/ */
@@ -1433,6 +1535,36 @@ export type CheckInUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.Inter
limit?: number limit?: number
} }
/**
* CheckIn updateManyAndReturn
*/
export type CheckInUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the CheckIn
*/
select?: Prisma.CheckInSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the CheckIn
*/
omit?: Prisma.CheckInOmit<ExtArgs> | null
/**
* The data used to update CheckIns.
*/
data: Prisma.XOR<Prisma.CheckInUpdateManyMutationInput, Prisma.CheckInUncheckedUpdateManyInput>
/**
* Filter which CheckIns to update
*/
where?: Prisma.CheckInWhereInput
/**
* Limit how many CheckIns to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.CheckInIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* CheckIn upsert * CheckIn upsert
*/ */
+135 -7
View File
@@ -259,7 +259,6 @@ export type CheckListOrderByWithRelationInput = {
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
user?: Prisma.UserOrderByWithRelationInput user?: Prisma.UserOrderByWithRelationInput
items?: Prisma.CheckListItemOrderByRelationAggregateInput items?: Prisma.CheckListItemOrderByRelationAggregateInput
_relevance?: Prisma.CheckListOrderByRelevanceInput
} }
export type CheckListWhereUniqueInput = Prisma.AtLeast<{ export type CheckListWhereUniqueInput = Prisma.AtLeast<{
@@ -395,12 +394,6 @@ export type CheckListOrderByRelationAggregateInput = {
_count?: Prisma.SortOrder _count?: Prisma.SortOrder
} }
export type CheckListOrderByRelevanceInput = {
fields: Prisma.CheckListOrderByRelevanceFieldEnum | Prisma.CheckListOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type CheckListCountOrderByAggregateInput = { export type CheckListCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
userId?: Prisma.SortOrder userId?: Prisma.SortOrder
@@ -710,7 +703,29 @@ export type CheckListSelect<ExtArgs extends runtime.Types.Extensions.InternalArg
_count?: boolean | Prisma.CheckListCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.CheckListCountOutputTypeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["checkList"]> }, ExtArgs["result"]["checkList"]>
export type CheckListSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
userId?: boolean
title?: boolean
scene?: boolean
note?: boolean
archived?: boolean
createdAt?: boolean
updatedAt?: boolean
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["checkList"]>
export type CheckListSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
userId?: boolean
title?: boolean
scene?: boolean
note?: boolean
archived?: boolean
createdAt?: boolean
updatedAt?: boolean
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["checkList"]>
export type CheckListSelectScalar = { export type CheckListSelectScalar = {
id?: boolean id?: boolean
@@ -729,6 +744,12 @@ export type CheckListInclude<ExtArgs extends runtime.Types.Extensions.InternalAr
items?: boolean | Prisma.CheckList$itemsArgs<ExtArgs> items?: boolean | Prisma.CheckList$itemsArgs<ExtArgs>
_count?: boolean | Prisma.CheckListCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.CheckListCountOutputTypeDefaultArgs<ExtArgs>
} }
export type CheckListIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}
export type CheckListIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}
export type $CheckListPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $CheckListPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "CheckList" name: "CheckList"
@@ -862,6 +883,30 @@ export interface CheckListDelegate<ExtArgs extends runtime.Types.Extensions.Inte
*/ */
createMany<T extends CheckListCreateManyArgs>(args?: Prisma.SelectSubset<T, CheckListCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends CheckListCreateManyArgs>(args?: Prisma.SelectSubset<T, CheckListCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many CheckLists and returns the data saved in the database.
* @param {CheckListCreateManyAndReturnArgs} args - Arguments to create many CheckLists.
* @example
* // Create many CheckLists
* const checkList = await prisma.checkList.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many CheckLists and only return the `id`
* const checkListWithIdOnly = await prisma.checkList.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<T extends CheckListCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, CheckListCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$CheckListPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a CheckList. * Delete a CheckList.
* @param {CheckListDeleteArgs} args - Arguments to delete one CheckList. * @param {CheckListDeleteArgs} args - Arguments to delete one CheckList.
@@ -926,6 +971,36 @@ export interface CheckListDelegate<ExtArgs extends runtime.Types.Extensions.Inte
*/ */
updateMany<T extends CheckListUpdateManyArgs>(args: Prisma.SelectSubset<T, CheckListUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends CheckListUpdateManyArgs>(args: Prisma.SelectSubset<T, CheckListUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more CheckLists and returns the data updated in the database.
* @param {CheckListUpdateManyAndReturnArgs} args - Arguments to update many CheckLists.
* @example
* // Update many CheckLists
* const checkList = await prisma.checkList.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more CheckLists and only return the `id`
* const checkListWithIdOnly = await prisma.checkList.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<T extends CheckListUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, CheckListUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$CheckListPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one CheckList. * Create or update one CheckList.
* @param {CheckListUpsertArgs} args - Arguments to update or create a CheckList. * @param {CheckListUpsertArgs} args - Arguments to update or create a CheckList.
@@ -1361,6 +1436,29 @@ export type CheckListCreateManyArgs<ExtArgs extends runtime.Types.Extensions.Int
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* CheckList createManyAndReturn
*/
export type CheckListCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the CheckList
*/
select?: Prisma.CheckListSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the CheckList
*/
omit?: Prisma.CheckListOmit<ExtArgs> | null
/**
* The data used to create many CheckLists.
*/
data: Prisma.CheckListCreateManyInput | Prisma.CheckListCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.CheckListIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* CheckList update * CheckList update
*/ */
@@ -1405,6 +1503,36 @@ export type CheckListUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.Int
limit?: number limit?: number
} }
/**
* CheckList updateManyAndReturn
*/
export type CheckListUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the CheckList
*/
select?: Prisma.CheckListSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the CheckList
*/
omit?: Prisma.CheckListOmit<ExtArgs> | null
/**
* The data used to update CheckLists.
*/
data: Prisma.XOR<Prisma.CheckListUpdateManyMutationInput, Prisma.CheckListUncheckedUpdateManyInput>
/**
* Filter which CheckLists to update
*/
where?: Prisma.CheckListWhereInput
/**
* Limit how many CheckLists to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.CheckListIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* CheckList upsert * CheckList upsert
*/ */
+137 -7
View File
@@ -270,7 +270,6 @@ export type CheckListItemOrderByWithRelationInput = {
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
list?: Prisma.CheckListOrderByWithRelationInput list?: Prisma.CheckListOrderByWithRelationInput
_relevance?: Prisma.CheckListItemOrderByRelevanceInput
} }
export type CheckListItemWhereUniqueInput = Prisma.AtLeast<{ export type CheckListItemWhereUniqueInput = Prisma.AtLeast<{
@@ -411,12 +410,6 @@ export type CheckListItemOrderByRelationAggregateInput = {
_count?: Prisma.SortOrder _count?: Prisma.SortOrder
} }
export type CheckListItemOrderByRelevanceInput = {
fields: Prisma.CheckListItemOrderByRelevanceFieldEnum | Prisma.CheckListItemOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type CheckListItemCountOrderByAggregateInput = { export type CheckListItemCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
listId?: Prisma.SortOrder listId?: Prisma.SortOrder
@@ -627,7 +620,31 @@ export type CheckListItemSelect<ExtArgs extends runtime.Types.Extensions.Interna
list?: boolean | Prisma.CheckListDefaultArgs<ExtArgs> list?: boolean | Prisma.CheckListDefaultArgs<ExtArgs>
}, ExtArgs["result"]["checkListItem"]> }, ExtArgs["result"]["checkListItem"]>
export type CheckListItemSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
listId?: boolean
title?: boolean
note?: boolean
done?: boolean
doneAt?: boolean
sortOrder?: boolean
createdAt?: boolean
updatedAt?: boolean
list?: boolean | Prisma.CheckListDefaultArgs<ExtArgs>
}, ExtArgs["result"]["checkListItem"]>
export type CheckListItemSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
listId?: boolean
title?: boolean
note?: boolean
done?: boolean
doneAt?: boolean
sortOrder?: boolean
createdAt?: boolean
updatedAt?: boolean
list?: boolean | Prisma.CheckListDefaultArgs<ExtArgs>
}, ExtArgs["result"]["checkListItem"]>
export type CheckListItemSelectScalar = { export type CheckListItemSelectScalar = {
id?: boolean id?: boolean
@@ -645,6 +662,12 @@ export type CheckListItemOmit<ExtArgs extends runtime.Types.Extensions.InternalA
export type CheckListItemInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type CheckListItemInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
list?: boolean | Prisma.CheckListDefaultArgs<ExtArgs> list?: boolean | Prisma.CheckListDefaultArgs<ExtArgs>
} }
export type CheckListItemIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
list?: boolean | Prisma.CheckListDefaultArgs<ExtArgs>
}
export type CheckListItemIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
list?: boolean | Prisma.CheckListDefaultArgs<ExtArgs>
}
export type $CheckListItemPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $CheckListItemPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "CheckListItem" name: "CheckListItem"
@@ -778,6 +801,30 @@ export interface CheckListItemDelegate<ExtArgs extends runtime.Types.Extensions.
*/ */
createMany<T extends CheckListItemCreateManyArgs>(args?: Prisma.SelectSubset<T, CheckListItemCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends CheckListItemCreateManyArgs>(args?: Prisma.SelectSubset<T, CheckListItemCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many CheckListItems and returns the data saved in the database.
* @param {CheckListItemCreateManyAndReturnArgs} args - Arguments to create many CheckListItems.
* @example
* // Create many CheckListItems
* const checkListItem = await prisma.checkListItem.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many CheckListItems and only return the `id`
* const checkListItemWithIdOnly = await prisma.checkListItem.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<T extends CheckListItemCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, CheckListItemCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$CheckListItemPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a CheckListItem. * Delete a CheckListItem.
* @param {CheckListItemDeleteArgs} args - Arguments to delete one CheckListItem. * @param {CheckListItemDeleteArgs} args - Arguments to delete one CheckListItem.
@@ -842,6 +889,36 @@ export interface CheckListItemDelegate<ExtArgs extends runtime.Types.Extensions.
*/ */
updateMany<T extends CheckListItemUpdateManyArgs>(args: Prisma.SelectSubset<T, CheckListItemUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends CheckListItemUpdateManyArgs>(args: Prisma.SelectSubset<T, CheckListItemUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more CheckListItems and returns the data updated in the database.
* @param {CheckListItemUpdateManyAndReturnArgs} args - Arguments to update many CheckListItems.
* @example
* // Update many CheckListItems
* const checkListItem = await prisma.checkListItem.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more CheckListItems and only return the `id`
* const checkListItemWithIdOnly = await prisma.checkListItem.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<T extends CheckListItemUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, CheckListItemUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$CheckListItemPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one CheckListItem. * Create or update one CheckListItem.
* @param {CheckListItemUpsertArgs} args - Arguments to update or create a CheckListItem. * @param {CheckListItemUpsertArgs} args - Arguments to update or create a CheckListItem.
@@ -1277,6 +1354,29 @@ export type CheckListItemCreateManyArgs<ExtArgs extends runtime.Types.Extensions
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* CheckListItem createManyAndReturn
*/
export type CheckListItemCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the CheckListItem
*/
select?: Prisma.CheckListItemSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the CheckListItem
*/
omit?: Prisma.CheckListItemOmit<ExtArgs> | null
/**
* The data used to create many CheckListItems.
*/
data: Prisma.CheckListItemCreateManyInput | Prisma.CheckListItemCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.CheckListItemIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* CheckListItem update * CheckListItem update
*/ */
@@ -1321,6 +1421,36 @@ export type CheckListItemUpdateManyArgs<ExtArgs extends runtime.Types.Extensions
limit?: number limit?: number
} }
/**
* CheckListItem updateManyAndReturn
*/
export type CheckListItemUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the CheckListItem
*/
select?: Prisma.CheckListItemSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the CheckListItem
*/
omit?: Prisma.CheckListItemOmit<ExtArgs> | null
/**
* The data used to update CheckListItems.
*/
data: Prisma.XOR<Prisma.CheckListItemUpdateManyMutationInput, Prisma.CheckListItemUncheckedUpdateManyInput>
/**
* Filter which CheckListItems to update
*/
where?: Prisma.CheckListItemWhereInput
/**
* Limit how many CheckListItems to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.CheckListItemIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* CheckListItem upsert * CheckListItem upsert
*/ */
+135 -7
View File
@@ -253,7 +253,6 @@ export type CheckListTemplateOrderByWithRelationInput = {
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
user?: Prisma.UserOrderByWithRelationInput user?: Prisma.UserOrderByWithRelationInput
_relevance?: Prisma.CheckListTemplateOrderByRelevanceInput
} }
export type CheckListTemplateWhereUniqueInput = Prisma.AtLeast<{ export type CheckListTemplateWhereUniqueInput = Prisma.AtLeast<{
@@ -384,12 +383,6 @@ export type CheckListTemplateOrderByRelationAggregateInput = {
_count?: Prisma.SortOrder _count?: Prisma.SortOrder
} }
export type CheckListTemplateOrderByRelevanceInput = {
fields: Prisma.CheckListTemplateOrderByRelevanceFieldEnum | Prisma.CheckListTemplateOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type CheckListTemplateCountOrderByAggregateInput = { export type CheckListTemplateCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
userId?: Prisma.SortOrder userId?: Prisma.SortOrder
@@ -585,7 +578,29 @@ export type CheckListTemplateSelect<ExtArgs extends runtime.Types.Extensions.Int
user?: boolean | Prisma.CheckListTemplate$userArgs<ExtArgs> user?: boolean | Prisma.CheckListTemplate$userArgs<ExtArgs>
}, ExtArgs["result"]["checkListTemplate"]> }, ExtArgs["result"]["checkListTemplate"]>
export type CheckListTemplateSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
userId?: boolean
name?: boolean
scene?: boolean
items?: boolean
builtin?: boolean
createdAt?: boolean
updatedAt?: boolean
user?: boolean | Prisma.CheckListTemplate$userArgs<ExtArgs>
}, ExtArgs["result"]["checkListTemplate"]>
export type CheckListTemplateSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
userId?: boolean
name?: boolean
scene?: boolean
items?: boolean
builtin?: boolean
createdAt?: boolean
updatedAt?: boolean
user?: boolean | Prisma.CheckListTemplate$userArgs<ExtArgs>
}, ExtArgs["result"]["checkListTemplate"]>
export type CheckListTemplateSelectScalar = { export type CheckListTemplateSelectScalar = {
id?: boolean id?: boolean
@@ -602,6 +617,12 @@ export type CheckListTemplateOmit<ExtArgs extends runtime.Types.Extensions.Inter
export type CheckListTemplateInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type CheckListTemplateInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
user?: boolean | Prisma.CheckListTemplate$userArgs<ExtArgs> user?: boolean | Prisma.CheckListTemplate$userArgs<ExtArgs>
} }
export type CheckListTemplateIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
user?: boolean | Prisma.CheckListTemplate$userArgs<ExtArgs>
}
export type CheckListTemplateIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
user?: boolean | Prisma.CheckListTemplate$userArgs<ExtArgs>
}
export type $CheckListTemplatePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $CheckListTemplatePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "CheckListTemplate" name: "CheckListTemplate"
@@ -734,6 +755,30 @@ export interface CheckListTemplateDelegate<ExtArgs extends runtime.Types.Extensi
*/ */
createMany<T extends CheckListTemplateCreateManyArgs>(args?: Prisma.SelectSubset<T, CheckListTemplateCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends CheckListTemplateCreateManyArgs>(args?: Prisma.SelectSubset<T, CheckListTemplateCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many CheckListTemplates and returns the data saved in the database.
* @param {CheckListTemplateCreateManyAndReturnArgs} args - Arguments to create many CheckListTemplates.
* @example
* // Create many CheckListTemplates
* const checkListTemplate = await prisma.checkListTemplate.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many CheckListTemplates and only return the `id`
* const checkListTemplateWithIdOnly = await prisma.checkListTemplate.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<T extends CheckListTemplateCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, CheckListTemplateCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$CheckListTemplatePayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a CheckListTemplate. * Delete a CheckListTemplate.
* @param {CheckListTemplateDeleteArgs} args - Arguments to delete one CheckListTemplate. * @param {CheckListTemplateDeleteArgs} args - Arguments to delete one CheckListTemplate.
@@ -798,6 +843,36 @@ export interface CheckListTemplateDelegate<ExtArgs extends runtime.Types.Extensi
*/ */
updateMany<T extends CheckListTemplateUpdateManyArgs>(args: Prisma.SelectSubset<T, CheckListTemplateUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends CheckListTemplateUpdateManyArgs>(args: Prisma.SelectSubset<T, CheckListTemplateUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more CheckListTemplates and returns the data updated in the database.
* @param {CheckListTemplateUpdateManyAndReturnArgs} args - Arguments to update many CheckListTemplates.
* @example
* // Update many CheckListTemplates
* const checkListTemplate = await prisma.checkListTemplate.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more CheckListTemplates and only return the `id`
* const checkListTemplateWithIdOnly = await prisma.checkListTemplate.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<T extends CheckListTemplateUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, CheckListTemplateUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$CheckListTemplatePayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one CheckListTemplate. * Create or update one CheckListTemplate.
* @param {CheckListTemplateUpsertArgs} args - Arguments to update or create a CheckListTemplate. * @param {CheckListTemplateUpsertArgs} args - Arguments to update or create a CheckListTemplate.
@@ -1232,6 +1307,29 @@ export type CheckListTemplateCreateManyArgs<ExtArgs extends runtime.Types.Extens
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* CheckListTemplate createManyAndReturn
*/
export type CheckListTemplateCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the CheckListTemplate
*/
select?: Prisma.CheckListTemplateSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the CheckListTemplate
*/
omit?: Prisma.CheckListTemplateOmit<ExtArgs> | null
/**
* The data used to create many CheckListTemplates.
*/
data: Prisma.CheckListTemplateCreateManyInput | Prisma.CheckListTemplateCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.CheckListTemplateIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* CheckListTemplate update * CheckListTemplate update
*/ */
@@ -1276,6 +1374,36 @@ export type CheckListTemplateUpdateManyArgs<ExtArgs extends runtime.Types.Extens
limit?: number limit?: number
} }
/**
* CheckListTemplate updateManyAndReturn
*/
export type CheckListTemplateUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the CheckListTemplate
*/
select?: Prisma.CheckListTemplateSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the CheckListTemplate
*/
omit?: Prisma.CheckListTemplateOmit<ExtArgs> | null
/**
* The data used to update CheckListTemplates.
*/
data: Prisma.XOR<Prisma.CheckListTemplateUpdateManyMutationInput, Prisma.CheckListTemplateUncheckedUpdateManyInput>
/**
* Filter which CheckListTemplates to update
*/
where?: Prisma.CheckListTemplateWhereInput
/**
* Limit how many CheckListTemplates to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.CheckListTemplateIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* CheckListTemplate upsert * CheckListTemplate upsert
*/ */
+113 -7
View File
@@ -228,7 +228,6 @@ export type Econ_SowInventoryOrderByWithRelationInput = {
inventory?: Prisma.SortOrder inventory?: Prisma.SortOrder
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
_relevance?: Prisma.Econ_SowInventoryOrderByRelevanceInput
} }
export type Econ_SowInventoryWhereUniqueInput = Prisma.AtLeast<{ export type Econ_SowInventoryWhereUniqueInput = Prisma.AtLeast<{
@@ -319,12 +318,6 @@ export type Econ_SowInventoryUncheckedUpdateManyInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type Econ_SowInventoryOrderByRelevanceInput = {
fields: Prisma.Econ_SowInventoryOrderByRelevanceFieldEnum | Prisma.Econ_SowInventoryOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type Econ_SowInventoryCountOrderByAggregateInput = { export type Econ_SowInventoryCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
month?: Prisma.SortOrder month?: Prisma.SortOrder
@@ -369,7 +362,21 @@ export type Econ_SowInventorySelect<ExtArgs extends runtime.Types.Extensions.Int
updatedAt?: boolean updatedAt?: boolean
}, ExtArgs["result"]["econ_SowInventory"]> }, ExtArgs["result"]["econ_SowInventory"]>
export type Econ_SowInventorySelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
month?: boolean
inventory?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["econ_SowInventory"]>
export type Econ_SowInventorySelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
month?: boolean
inventory?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["econ_SowInventory"]>
export type Econ_SowInventorySelectScalar = { export type Econ_SowInventorySelectScalar = {
id?: boolean id?: boolean
@@ -507,6 +514,30 @@ export interface Econ_SowInventoryDelegate<ExtArgs extends runtime.Types.Extensi
*/ */
createMany<T extends Econ_SowInventoryCreateManyArgs>(args?: Prisma.SelectSubset<T, Econ_SowInventoryCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends Econ_SowInventoryCreateManyArgs>(args?: Prisma.SelectSubset<T, Econ_SowInventoryCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many Econ_SowInventories and returns the data saved in the database.
* @param {Econ_SowInventoryCreateManyAndReturnArgs} args - Arguments to create many Econ_SowInventories.
* @example
* // Create many Econ_SowInventories
* const econ_SowInventory = await prisma.econ_SowInventory.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many Econ_SowInventories and only return the `id`
* const econ_SowInventoryWithIdOnly = await prisma.econ_SowInventory.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<T extends Econ_SowInventoryCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, Econ_SowInventoryCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$Econ_SowInventoryPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a Econ_SowInventory. * Delete a Econ_SowInventory.
* @param {Econ_SowInventoryDeleteArgs} args - Arguments to delete one Econ_SowInventory. * @param {Econ_SowInventoryDeleteArgs} args - Arguments to delete one Econ_SowInventory.
@@ -571,6 +602,36 @@ export interface Econ_SowInventoryDelegate<ExtArgs extends runtime.Types.Extensi
*/ */
updateMany<T extends Econ_SowInventoryUpdateManyArgs>(args: Prisma.SelectSubset<T, Econ_SowInventoryUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends Econ_SowInventoryUpdateManyArgs>(args: Prisma.SelectSubset<T, Econ_SowInventoryUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more Econ_SowInventories and returns the data updated in the database.
* @param {Econ_SowInventoryUpdateManyAndReturnArgs} args - Arguments to update many Econ_SowInventories.
* @example
* // Update many Econ_SowInventories
* const econ_SowInventory = await prisma.econ_SowInventory.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more Econ_SowInventories and only return the `id`
* const econ_SowInventoryWithIdOnly = await prisma.econ_SowInventory.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<T extends Econ_SowInventoryUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, Econ_SowInventoryUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$Econ_SowInventoryPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one Econ_SowInventory. * Create or update one Econ_SowInventory.
* @param {Econ_SowInventoryUpsertArgs} args - Arguments to update or create a Econ_SowInventory. * @param {Econ_SowInventoryUpsertArgs} args - Arguments to update or create a Econ_SowInventory.
@@ -977,6 +1038,25 @@ export type Econ_SowInventoryCreateManyArgs<ExtArgs extends runtime.Types.Extens
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* Econ_SowInventory createManyAndReturn
*/
export type Econ_SowInventoryCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Econ_SowInventory
*/
select?: Prisma.Econ_SowInventorySelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Econ_SowInventory
*/
omit?: Prisma.Econ_SowInventoryOmit<ExtArgs> | null
/**
* The data used to create many Econ_SowInventories.
*/
data: Prisma.Econ_SowInventoryCreateManyInput | Prisma.Econ_SowInventoryCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* Econ_SowInventory update * Econ_SowInventory update
*/ */
@@ -1017,6 +1097,32 @@ export type Econ_SowInventoryUpdateManyArgs<ExtArgs extends runtime.Types.Extens
limit?: number limit?: number
} }
/**
* Econ_SowInventory updateManyAndReturn
*/
export type Econ_SowInventoryUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Econ_SowInventory
*/
select?: Prisma.Econ_SowInventorySelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Econ_SowInventory
*/
omit?: Prisma.Econ_SowInventoryOmit<ExtArgs> | null
/**
* The data used to update Econ_SowInventories.
*/
data: Prisma.XOR<Prisma.Econ_SowInventoryUpdateManyMutationInput, Prisma.Econ_SowInventoryUncheckedUpdateManyInput>
/**
* Filter which Econ_SowInventories to update
*/
where?: Prisma.Econ_SowInventoryWhereInput
/**
* Limit how many Econ_SowInventories to update.
*/
limit?: number
}
/** /**
* Econ_SowInventory upsert * Econ_SowInventory upsert
*/ */
+143 -7
View File
@@ -303,7 +303,6 @@ export type HabitOrderByWithRelationInput = {
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
user?: Prisma.UserOrderByWithRelationInput user?: Prisma.UserOrderByWithRelationInput
records?: Prisma.CheckInOrderByRelationAggregateInput records?: Prisma.CheckInOrderByRelationAggregateInput
_relevance?: Prisma.HabitOrderByRelevanceInput
} }
export type HabitWhereUniqueInput = Prisma.AtLeast<{ export type HabitWhereUniqueInput = Prisma.AtLeast<{
@@ -479,12 +478,6 @@ export type HabitOrderByRelationAggregateInput = {
_count?: Prisma.SortOrder _count?: Prisma.SortOrder
} }
export type HabitOrderByRelevanceInput = {
fields: Prisma.HabitOrderByRelevanceFieldEnum | Prisma.HabitOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type HabitCountOrderByAggregateInput = { export type HabitCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
userId?: Prisma.SortOrder userId?: Prisma.SortOrder
@@ -858,7 +851,37 @@ export type HabitSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs =
_count?: boolean | Prisma.HabitCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.HabitCountOutputTypeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["habit"]> }, ExtArgs["result"]["habit"]>
export type HabitSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
userId?: boolean
name?: boolean
period?: boolean
target?: boolean
color?: boolean
icon?: boolean
note?: boolean
archived?: boolean
sortOrder?: boolean
createdAt?: boolean
updatedAt?: boolean
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["habit"]>
export type HabitSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
userId?: boolean
name?: boolean
period?: boolean
target?: boolean
color?: boolean
icon?: boolean
note?: boolean
archived?: boolean
sortOrder?: boolean
createdAt?: boolean
updatedAt?: boolean
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["habit"]>
export type HabitSelectScalar = { export type HabitSelectScalar = {
id?: boolean id?: boolean
@@ -881,6 +904,12 @@ export type HabitInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs =
records?: boolean | Prisma.Habit$recordsArgs<ExtArgs> records?: boolean | Prisma.Habit$recordsArgs<ExtArgs>
_count?: boolean | Prisma.HabitCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.HabitCountOutputTypeDefaultArgs<ExtArgs>
} }
export type HabitIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}
export type HabitIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}
export type $HabitPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $HabitPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "Habit" name: "Habit"
@@ -1018,6 +1047,30 @@ export interface HabitDelegate<ExtArgs extends runtime.Types.Extensions.Internal
*/ */
createMany<T extends HabitCreateManyArgs>(args?: Prisma.SelectSubset<T, HabitCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends HabitCreateManyArgs>(args?: Prisma.SelectSubset<T, HabitCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many Habits and returns the data saved in the database.
* @param {HabitCreateManyAndReturnArgs} args - Arguments to create many Habits.
* @example
* // Create many Habits
* const habit = await prisma.habit.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many Habits and only return the `id`
* const habitWithIdOnly = await prisma.habit.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<T extends HabitCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, HabitCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$HabitPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a Habit. * Delete a Habit.
* @param {HabitDeleteArgs} args - Arguments to delete one Habit. * @param {HabitDeleteArgs} args - Arguments to delete one Habit.
@@ -1082,6 +1135,36 @@ export interface HabitDelegate<ExtArgs extends runtime.Types.Extensions.Internal
*/ */
updateMany<T extends HabitUpdateManyArgs>(args: Prisma.SelectSubset<T, HabitUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends HabitUpdateManyArgs>(args: Prisma.SelectSubset<T, HabitUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more Habits and returns the data updated in the database.
* @param {HabitUpdateManyAndReturnArgs} args - Arguments to update many Habits.
* @example
* // Update many Habits
* const habit = await prisma.habit.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more Habits and only return the `id`
* const habitWithIdOnly = await prisma.habit.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<T extends HabitUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, HabitUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$HabitPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one Habit. * Create or update one Habit.
* @param {HabitUpsertArgs} args - Arguments to update or create a Habit. * @param {HabitUpsertArgs} args - Arguments to update or create a Habit.
@@ -1521,6 +1604,29 @@ export type HabitCreateManyArgs<ExtArgs extends runtime.Types.Extensions.Interna
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* Habit createManyAndReturn
*/
export type HabitCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Habit
*/
select?: Prisma.HabitSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Habit
*/
omit?: Prisma.HabitOmit<ExtArgs> | null
/**
* The data used to create many Habits.
*/
data: Prisma.HabitCreateManyInput | Prisma.HabitCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.HabitIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* Habit update * Habit update
*/ */
@@ -1565,6 +1671,36 @@ export type HabitUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.Interna
limit?: number limit?: number
} }
/**
* Habit updateManyAndReturn
*/
export type HabitUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Habit
*/
select?: Prisma.HabitSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Habit
*/
omit?: Prisma.HabitOmit<ExtArgs> | null
/**
* The data used to update Habits.
*/
data: Prisma.XOR<Prisma.HabitUpdateManyMutationInput, Prisma.HabitUncheckedUpdateManyInput>
/**
* Filter which Habits to update
*/
where?: Prisma.HabitWhereInput
/**
* Limit how many Habits to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.HabitIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* Habit upsert * Habit upsert
*/ */
+125 -7
View File
@@ -271,7 +271,6 @@ export type IndicatorOrderByWithRelationInput = {
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
points?: Prisma.IndicatorPointOrderByRelationAggregateInput points?: Prisma.IndicatorPointOrderByRelationAggregateInput
_relevance?: Prisma.IndicatorOrderByRelevanceInput
} }
export type IndicatorWhereUniqueInput = Prisma.AtLeast<{ export type IndicatorWhereUniqueInput = Prisma.AtLeast<{
@@ -417,12 +416,6 @@ export type IndicatorUncheckedUpdateManyInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type IndicatorOrderByRelevanceInput = {
fields: Prisma.IndicatorOrderByRelevanceFieldEnum | Prisma.IndicatorOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type IndicatorCountOrderByAggregateInput = { export type IndicatorCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
@@ -605,7 +598,31 @@ export type IndicatorSelect<ExtArgs extends runtime.Types.Extensions.InternalArg
_count?: boolean | Prisma.IndicatorCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.IndicatorCountOutputTypeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["indicator"]> }, ExtArgs["result"]["indicator"]>
export type IndicatorSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
name?: boolean
groupName?: boolean
title?: boolean
unit?: boolean
source?: boolean
frequency?: boolean
hidden?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["indicator"]>
export type IndicatorSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
name?: boolean
groupName?: boolean
title?: boolean
unit?: boolean
source?: boolean
frequency?: boolean
hidden?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["indicator"]>
export type IndicatorSelectScalar = { export type IndicatorSelectScalar = {
id?: boolean id?: boolean
@@ -625,6 +642,8 @@ export type IndicatorInclude<ExtArgs extends runtime.Types.Extensions.InternalAr
points?: boolean | Prisma.Indicator$pointsArgs<ExtArgs> points?: boolean | Prisma.Indicator$pointsArgs<ExtArgs>
_count?: boolean | Prisma.IndicatorCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.IndicatorCountOutputTypeDefaultArgs<ExtArgs>
} }
export type IndicatorIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {}
export type IndicatorIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {}
export type $IndicatorPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $IndicatorPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "Indicator" name: "Indicator"
@@ -759,6 +778,30 @@ export interface IndicatorDelegate<ExtArgs extends runtime.Types.Extensions.Inte
*/ */
createMany<T extends IndicatorCreateManyArgs>(args?: Prisma.SelectSubset<T, IndicatorCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends IndicatorCreateManyArgs>(args?: Prisma.SelectSubset<T, IndicatorCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many Indicators and returns the data saved in the database.
* @param {IndicatorCreateManyAndReturnArgs} args - Arguments to create many Indicators.
* @example
* // Create many Indicators
* const indicator = await prisma.indicator.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many Indicators and only return the `id`
* const indicatorWithIdOnly = await prisma.indicator.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<T extends IndicatorCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, IndicatorCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$IndicatorPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a Indicator. * Delete a Indicator.
* @param {IndicatorDeleteArgs} args - Arguments to delete one Indicator. * @param {IndicatorDeleteArgs} args - Arguments to delete one Indicator.
@@ -823,6 +866,36 @@ export interface IndicatorDelegate<ExtArgs extends runtime.Types.Extensions.Inte
*/ */
updateMany<T extends IndicatorUpdateManyArgs>(args: Prisma.SelectSubset<T, IndicatorUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends IndicatorUpdateManyArgs>(args: Prisma.SelectSubset<T, IndicatorUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more Indicators and returns the data updated in the database.
* @param {IndicatorUpdateManyAndReturnArgs} args - Arguments to update many Indicators.
* @example
* // Update many Indicators
* const indicator = await prisma.indicator.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more Indicators and only return the `id`
* const indicatorWithIdOnly = await prisma.indicator.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<T extends IndicatorUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, IndicatorUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$IndicatorPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one Indicator. * Create or update one Indicator.
* @param {IndicatorUpsertArgs} args - Arguments to update or create a Indicator. * @param {IndicatorUpsertArgs} args - Arguments to update or create a Indicator.
@@ -1259,6 +1332,25 @@ export type IndicatorCreateManyArgs<ExtArgs extends runtime.Types.Extensions.Int
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* Indicator createManyAndReturn
*/
export type IndicatorCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Indicator
*/
select?: Prisma.IndicatorSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Indicator
*/
omit?: Prisma.IndicatorOmit<ExtArgs> | null
/**
* The data used to create many Indicators.
*/
data: Prisma.IndicatorCreateManyInput | Prisma.IndicatorCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* Indicator update * Indicator update
*/ */
@@ -1303,6 +1395,32 @@ export type IndicatorUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.Int
limit?: number limit?: number
} }
/**
* Indicator updateManyAndReturn
*/
export type IndicatorUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Indicator
*/
select?: Prisma.IndicatorSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Indicator
*/
omit?: Prisma.IndicatorOmit<ExtArgs> | null
/**
* The data used to update Indicators.
*/
data: Prisma.XOR<Prisma.IndicatorUpdateManyMutationInput, Prisma.IndicatorUncheckedUpdateManyInput>
/**
* Filter which Indicators to update
*/
where?: Prisma.IndicatorWhereInput
/**
* Limit how many Indicators to update.
*/
limit?: number
}
/** /**
* Indicator upsert * Indicator upsert
*/ */
+131 -7
View File
@@ -243,7 +243,6 @@ export type IndicatorPointOrderByWithRelationInput = {
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
indicator?: Prisma.IndicatorOrderByWithRelationInput indicator?: Prisma.IndicatorOrderByWithRelationInput
_relevance?: Prisma.IndicatorPointOrderByRelevanceInput
} }
export type IndicatorPointWhereUniqueInput = Prisma.AtLeast<{ export type IndicatorPointWhereUniqueInput = Prisma.AtLeast<{
@@ -355,12 +354,6 @@ export type IndicatorPointOrderByRelationAggregateInput = {
_count?: Prisma.SortOrder _count?: Prisma.SortOrder
} }
export type IndicatorPointOrderByRelevanceInput = {
fields: Prisma.IndicatorPointOrderByRelevanceFieldEnum | Prisma.IndicatorPointOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type IndicatorPointIndicatorIdPeriodCompoundUniqueInput = { export type IndicatorPointIndicatorIdPeriodCompoundUniqueInput = {
indicatorId: number indicatorId: number
period: string period: string
@@ -551,7 +544,25 @@ export type IndicatorPointSelect<ExtArgs extends runtime.Types.Extensions.Intern
indicator?: boolean | Prisma.IndicatorDefaultArgs<ExtArgs> indicator?: boolean | Prisma.IndicatorDefaultArgs<ExtArgs>
}, ExtArgs["result"]["indicatorPoint"]> }, ExtArgs["result"]["indicatorPoint"]>
export type IndicatorPointSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
indicatorId?: boolean
period?: boolean
value?: boolean
createdAt?: boolean
updatedAt?: boolean
indicator?: boolean | Prisma.IndicatorDefaultArgs<ExtArgs>
}, ExtArgs["result"]["indicatorPoint"]>
export type IndicatorPointSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
indicatorId?: boolean
period?: boolean
value?: boolean
createdAt?: boolean
updatedAt?: boolean
indicator?: boolean | Prisma.IndicatorDefaultArgs<ExtArgs>
}, ExtArgs["result"]["indicatorPoint"]>
export type IndicatorPointSelectScalar = { export type IndicatorPointSelectScalar = {
id?: boolean id?: boolean
@@ -566,6 +577,12 @@ export type IndicatorPointOmit<ExtArgs extends runtime.Types.Extensions.Internal
export type IndicatorPointInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type IndicatorPointInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
indicator?: boolean | Prisma.IndicatorDefaultArgs<ExtArgs> indicator?: boolean | Prisma.IndicatorDefaultArgs<ExtArgs>
} }
export type IndicatorPointIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
indicator?: boolean | Prisma.IndicatorDefaultArgs<ExtArgs>
}
export type IndicatorPointIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
indicator?: boolean | Prisma.IndicatorDefaultArgs<ExtArgs>
}
export type $IndicatorPointPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $IndicatorPointPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "IndicatorPoint" name: "IndicatorPoint"
@@ -696,6 +713,30 @@ export interface IndicatorPointDelegate<ExtArgs extends runtime.Types.Extensions
*/ */
createMany<T extends IndicatorPointCreateManyArgs>(args?: Prisma.SelectSubset<T, IndicatorPointCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends IndicatorPointCreateManyArgs>(args?: Prisma.SelectSubset<T, IndicatorPointCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many IndicatorPoints and returns the data saved in the database.
* @param {IndicatorPointCreateManyAndReturnArgs} args - Arguments to create many IndicatorPoints.
* @example
* // Create many IndicatorPoints
* const indicatorPoint = await prisma.indicatorPoint.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many IndicatorPoints and only return the `id`
* const indicatorPointWithIdOnly = await prisma.indicatorPoint.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<T extends IndicatorPointCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, IndicatorPointCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$IndicatorPointPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a IndicatorPoint. * Delete a IndicatorPoint.
* @param {IndicatorPointDeleteArgs} args - Arguments to delete one IndicatorPoint. * @param {IndicatorPointDeleteArgs} args - Arguments to delete one IndicatorPoint.
@@ -760,6 +801,36 @@ export interface IndicatorPointDelegate<ExtArgs extends runtime.Types.Extensions
*/ */
updateMany<T extends IndicatorPointUpdateManyArgs>(args: Prisma.SelectSubset<T, IndicatorPointUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends IndicatorPointUpdateManyArgs>(args: Prisma.SelectSubset<T, IndicatorPointUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more IndicatorPoints and returns the data updated in the database.
* @param {IndicatorPointUpdateManyAndReturnArgs} args - Arguments to update many IndicatorPoints.
* @example
* // Update many IndicatorPoints
* const indicatorPoint = await prisma.indicatorPoint.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more IndicatorPoints and only return the `id`
* const indicatorPointWithIdOnly = await prisma.indicatorPoint.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<T extends IndicatorPointUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, IndicatorPointUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$IndicatorPointPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one IndicatorPoint. * Create or update one IndicatorPoint.
* @param {IndicatorPointUpsertArgs} args - Arguments to update or create a IndicatorPoint. * @param {IndicatorPointUpsertArgs} args - Arguments to update or create a IndicatorPoint.
@@ -1192,6 +1263,29 @@ export type IndicatorPointCreateManyArgs<ExtArgs extends runtime.Types.Extension
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* IndicatorPoint createManyAndReturn
*/
export type IndicatorPointCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the IndicatorPoint
*/
select?: Prisma.IndicatorPointSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the IndicatorPoint
*/
omit?: Prisma.IndicatorPointOmit<ExtArgs> | null
/**
* The data used to create many IndicatorPoints.
*/
data: Prisma.IndicatorPointCreateManyInput | Prisma.IndicatorPointCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.IndicatorPointIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* IndicatorPoint update * IndicatorPoint update
*/ */
@@ -1236,6 +1330,36 @@ export type IndicatorPointUpdateManyArgs<ExtArgs extends runtime.Types.Extension
limit?: number limit?: number
} }
/**
* IndicatorPoint updateManyAndReturn
*/
export type IndicatorPointUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the IndicatorPoint
*/
select?: Prisma.IndicatorPointSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the IndicatorPoint
*/
omit?: Prisma.IndicatorPointOmit<ExtArgs> | null
/**
* The data used to update IndicatorPoints.
*/
data: Prisma.XOR<Prisma.IndicatorPointUpdateManyMutationInput, Prisma.IndicatorPointUncheckedUpdateManyInput>
/**
* Filter which IndicatorPoints to update
*/
where?: Prisma.IndicatorPointWhereInput
/**
* Limit how many IndicatorPoints to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.IndicatorPointIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* IndicatorPoint upsert * IndicatorPoint upsert
*/ */
+115 -7
View File
@@ -233,7 +233,6 @@ export type MihomeAccountOrderByWithRelationInput = {
status?: Prisma.SortOrder status?: Prisma.SortOrder
lastError?: Prisma.SortOrder lastError?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
_relevance?: Prisma.MihomeAccountOrderByRelevanceInput
} }
export type MihomeAccountWhereUniqueInput = Prisma.AtLeast<{ export type MihomeAccountWhereUniqueInput = Prisma.AtLeast<{
@@ -334,12 +333,6 @@ export type MihomeAccountUncheckedUpdateManyInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type MihomeAccountOrderByRelevanceInput = {
fields: Prisma.MihomeAccountOrderByRelevanceFieldEnum | Prisma.MihomeAccountOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type MihomeAccountCountOrderByAggregateInput = { export type MihomeAccountCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
key?: Prisma.SortOrder key?: Prisma.SortOrder
@@ -386,7 +379,23 @@ export type MihomeAccountSelect<ExtArgs extends runtime.Types.Extensions.Interna
updatedAt?: boolean updatedAt?: boolean
}, ExtArgs["result"]["mihomeAccount"]> }, ExtArgs["result"]["mihomeAccount"]>
export type MihomeAccountSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
key?: boolean
userId?: boolean
status?: boolean
lastError?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["mihomeAccount"]>
export type MihomeAccountSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
key?: boolean
userId?: boolean
status?: boolean
lastError?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["mihomeAccount"]>
export type MihomeAccountSelectScalar = { export type MihomeAccountSelectScalar = {
id?: boolean id?: boolean
@@ -526,6 +535,30 @@ export interface MihomeAccountDelegate<ExtArgs extends runtime.Types.Extensions.
*/ */
createMany<T extends MihomeAccountCreateManyArgs>(args?: Prisma.SelectSubset<T, MihomeAccountCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends MihomeAccountCreateManyArgs>(args?: Prisma.SelectSubset<T, MihomeAccountCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many MihomeAccounts and returns the data saved in the database.
* @param {MihomeAccountCreateManyAndReturnArgs} args - Arguments to create many MihomeAccounts.
* @example
* // Create many MihomeAccounts
* const mihomeAccount = await prisma.mihomeAccount.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many MihomeAccounts and only return the `id`
* const mihomeAccountWithIdOnly = await prisma.mihomeAccount.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<T extends MihomeAccountCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, MihomeAccountCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$MihomeAccountPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a MihomeAccount. * Delete a MihomeAccount.
* @param {MihomeAccountDeleteArgs} args - Arguments to delete one MihomeAccount. * @param {MihomeAccountDeleteArgs} args - Arguments to delete one MihomeAccount.
@@ -590,6 +623,36 @@ export interface MihomeAccountDelegate<ExtArgs extends runtime.Types.Extensions.
*/ */
updateMany<T extends MihomeAccountUpdateManyArgs>(args: Prisma.SelectSubset<T, MihomeAccountUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends MihomeAccountUpdateManyArgs>(args: Prisma.SelectSubset<T, MihomeAccountUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more MihomeAccounts and returns the data updated in the database.
* @param {MihomeAccountUpdateManyAndReturnArgs} args - Arguments to update many MihomeAccounts.
* @example
* // Update many MihomeAccounts
* const mihomeAccount = await prisma.mihomeAccount.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more MihomeAccounts and only return the `id`
* const mihomeAccountWithIdOnly = await prisma.mihomeAccount.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<T extends MihomeAccountUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, MihomeAccountUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$MihomeAccountPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one MihomeAccount. * Create or update one MihomeAccount.
* @param {MihomeAccountUpsertArgs} args - Arguments to update or create a MihomeAccount. * @param {MihomeAccountUpsertArgs} args - Arguments to update or create a MihomeAccount.
@@ -997,6 +1060,25 @@ export type MihomeAccountCreateManyArgs<ExtArgs extends runtime.Types.Extensions
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* MihomeAccount createManyAndReturn
*/
export type MihomeAccountCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the MihomeAccount
*/
select?: Prisma.MihomeAccountSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the MihomeAccount
*/
omit?: Prisma.MihomeAccountOmit<ExtArgs> | null
/**
* The data used to create many MihomeAccounts.
*/
data: Prisma.MihomeAccountCreateManyInput | Prisma.MihomeAccountCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* MihomeAccount update * MihomeAccount update
*/ */
@@ -1037,6 +1119,32 @@ export type MihomeAccountUpdateManyArgs<ExtArgs extends runtime.Types.Extensions
limit?: number limit?: number
} }
/**
* MihomeAccount updateManyAndReturn
*/
export type MihomeAccountUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the MihomeAccount
*/
select?: Prisma.MihomeAccountSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the MihomeAccount
*/
omit?: Prisma.MihomeAccountOmit<ExtArgs> | null
/**
* The data used to update MihomeAccounts.
*/
data: Prisma.XOR<Prisma.MihomeAccountUpdateManyMutationInput, Prisma.MihomeAccountUncheckedUpdateManyInput>
/**
* Filter which MihomeAccounts to update
*/
where?: Prisma.MihomeAccountWhereInput
/**
* Limit how many MihomeAccounts to update.
*/
limit?: number
}
/** /**
* MihomeAccount upsert * MihomeAccount upsert
*/ */
+153 -7
View File
@@ -366,7 +366,6 @@ export type MihomeDeviceOrderByWithRelationInput = {
home?: Prisma.MihomeHomeOrderByWithRelationInput home?: Prisma.MihomeHomeOrderByWithRelationInput
samples?: Prisma.MihomeEnvSampleOrderByRelationAggregateInput samples?: Prisma.MihomeEnvSampleOrderByRelationAggregateInput
hours?: Prisma.MihomeEnvHourOrderByRelationAggregateInput hours?: Prisma.MihomeEnvHourOrderByRelationAggregateInput
_relevance?: Prisma.MihomeDeviceOrderByRelevanceInput
} }
export type MihomeDeviceWhereUniqueInput = Prisma.AtLeast<{ export type MihomeDeviceWhereUniqueInput = Prisma.AtLeast<{
@@ -597,12 +596,6 @@ export type MihomeDeviceOrderByRelationAggregateInput = {
_count?: Prisma.SortOrder _count?: Prisma.SortOrder
} }
export type MihomeDeviceOrderByRelevanceInput = {
fields: Prisma.MihomeDeviceOrderByRelevanceFieldEnum | Prisma.MihomeDeviceOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type MihomeDeviceCountOrderByAggregateInput = { export type MihomeDeviceCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
did?: Prisma.SortOrder did?: Prisma.SortOrder
@@ -1201,7 +1194,47 @@ export type MihomeDeviceSelect<ExtArgs extends runtime.Types.Extensions.Internal
_count?: boolean | Prisma.MihomeDeviceCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.MihomeDeviceCountOutputTypeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["mihomeDevice"]> }, ExtArgs["result"]["mihomeDevice"]>
export type MihomeDeviceSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
did?: boolean
homeId?: boolean
model?: boolean
name?: boolean
alias?: boolean
tempSiid?: boolean
tempPiid?: boolean
humSiid?: boolean
humPiid?: boolean
battSiid?: boolean
battPiid?: boolean
battery?: boolean
batteryAt?: boolean
enabled?: boolean
lastSyncAt?: boolean
createdAt?: boolean
home?: boolean | Prisma.MihomeHomeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["mihomeDevice"]>
export type MihomeDeviceSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
did?: boolean
homeId?: boolean
model?: boolean
name?: boolean
alias?: boolean
tempSiid?: boolean
tempPiid?: boolean
humSiid?: boolean
humPiid?: boolean
battSiid?: boolean
battPiid?: boolean
battery?: boolean
batteryAt?: boolean
enabled?: boolean
lastSyncAt?: boolean
createdAt?: boolean
home?: boolean | Prisma.MihomeHomeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["mihomeDevice"]>
export type MihomeDeviceSelectScalar = { export type MihomeDeviceSelectScalar = {
id?: boolean id?: boolean
@@ -1230,6 +1263,12 @@ export type MihomeDeviceInclude<ExtArgs extends runtime.Types.Extensions.Interna
hours?: boolean | Prisma.MihomeDevice$hoursArgs<ExtArgs> hours?: boolean | Prisma.MihomeDevice$hoursArgs<ExtArgs>
_count?: boolean | Prisma.MihomeDeviceCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.MihomeDeviceCountOutputTypeDefaultArgs<ExtArgs>
} }
export type MihomeDeviceIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
home?: boolean | Prisma.MihomeHomeDefaultArgs<ExtArgs>
}
export type MihomeDeviceIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
home?: boolean | Prisma.MihomeHomeDefaultArgs<ExtArgs>
}
export type $MihomeDevicePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $MihomeDevicePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "MihomeDevice" name: "MihomeDevice"
@@ -1373,6 +1412,30 @@ export interface MihomeDeviceDelegate<ExtArgs extends runtime.Types.Extensions.I
*/ */
createMany<T extends MihomeDeviceCreateManyArgs>(args?: Prisma.SelectSubset<T, MihomeDeviceCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends MihomeDeviceCreateManyArgs>(args?: Prisma.SelectSubset<T, MihomeDeviceCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many MihomeDevices and returns the data saved in the database.
* @param {MihomeDeviceCreateManyAndReturnArgs} args - Arguments to create many MihomeDevices.
* @example
* // Create many MihomeDevices
* const mihomeDevice = await prisma.mihomeDevice.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many MihomeDevices and only return the `id`
* const mihomeDeviceWithIdOnly = await prisma.mihomeDevice.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<T extends MihomeDeviceCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, MihomeDeviceCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$MihomeDevicePayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a MihomeDevice. * Delete a MihomeDevice.
* @param {MihomeDeviceDeleteArgs} args - Arguments to delete one MihomeDevice. * @param {MihomeDeviceDeleteArgs} args - Arguments to delete one MihomeDevice.
@@ -1437,6 +1500,36 @@ export interface MihomeDeviceDelegate<ExtArgs extends runtime.Types.Extensions.I
*/ */
updateMany<T extends MihomeDeviceUpdateManyArgs>(args: Prisma.SelectSubset<T, MihomeDeviceUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends MihomeDeviceUpdateManyArgs>(args: Prisma.SelectSubset<T, MihomeDeviceUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more MihomeDevices and returns the data updated in the database.
* @param {MihomeDeviceUpdateManyAndReturnArgs} args - Arguments to update many MihomeDevices.
* @example
* // Update many MihomeDevices
* const mihomeDevice = await prisma.mihomeDevice.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more MihomeDevices and only return the `id`
* const mihomeDeviceWithIdOnly = await prisma.mihomeDevice.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<T extends MihomeDeviceUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, MihomeDeviceUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$MihomeDevicePayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one MihomeDevice. * Create or update one MihomeDevice.
* @param {MihomeDeviceUpsertArgs} args - Arguments to update or create a MihomeDevice. * @param {MihomeDeviceUpsertArgs} args - Arguments to update or create a MihomeDevice.
@@ -1882,6 +1975,29 @@ export type MihomeDeviceCreateManyArgs<ExtArgs extends runtime.Types.Extensions.
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* MihomeDevice createManyAndReturn
*/
export type MihomeDeviceCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the MihomeDevice
*/
select?: Prisma.MihomeDeviceSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the MihomeDevice
*/
omit?: Prisma.MihomeDeviceOmit<ExtArgs> | null
/**
* The data used to create many MihomeDevices.
*/
data: Prisma.MihomeDeviceCreateManyInput | Prisma.MihomeDeviceCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.MihomeDeviceIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* MihomeDevice update * MihomeDevice update
*/ */
@@ -1926,6 +2042,36 @@ export type MihomeDeviceUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.
limit?: number limit?: number
} }
/**
* MihomeDevice updateManyAndReturn
*/
export type MihomeDeviceUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the MihomeDevice
*/
select?: Prisma.MihomeDeviceSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the MihomeDevice
*/
omit?: Prisma.MihomeDeviceOmit<ExtArgs> | null
/**
* The data used to update MihomeDevices.
*/
data: Prisma.XOR<Prisma.MihomeDeviceUpdateManyMutationInput, Prisma.MihomeDeviceUncheckedUpdateManyInput>
/**
* Filter which MihomeDevices to update
*/
where?: Prisma.MihomeDeviceWhereInput
/**
* Limit how many MihomeDevices to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.MihomeDeviceIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* MihomeDevice upsert * MihomeDevice upsert
*/ */
+133
View File
@@ -566,7 +566,27 @@ export type MihomeEnvHourSelect<ExtArgs extends runtime.Types.Extensions.Interna
device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs> device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs>
}, ExtArgs["result"]["mihomeEnvHour"]> }, ExtArgs["result"]["mihomeEnvHour"]>
export type MihomeEnvHourSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
deviceId?: boolean
hour?: boolean
temperatureAvg?: boolean
humidityAvg?: boolean
raw?: boolean
createdAt?: boolean
device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs>
}, ExtArgs["result"]["mihomeEnvHour"]>
export type MihomeEnvHourSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
deviceId?: boolean
hour?: boolean
temperatureAvg?: boolean
humidityAvg?: boolean
raw?: boolean
createdAt?: boolean
device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs>
}, ExtArgs["result"]["mihomeEnvHour"]>
export type MihomeEnvHourSelectScalar = { export type MihomeEnvHourSelectScalar = {
id?: boolean id?: boolean
@@ -582,6 +602,12 @@ export type MihomeEnvHourOmit<ExtArgs extends runtime.Types.Extensions.InternalA
export type MihomeEnvHourInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type MihomeEnvHourInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs> device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs>
} }
export type MihomeEnvHourIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs>
}
export type MihomeEnvHourIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs>
}
export type $MihomeEnvHourPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $MihomeEnvHourPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "MihomeEnvHour" name: "MihomeEnvHour"
@@ -713,6 +739,30 @@ export interface MihomeEnvHourDelegate<ExtArgs extends runtime.Types.Extensions.
*/ */
createMany<T extends MihomeEnvHourCreateManyArgs>(args?: Prisma.SelectSubset<T, MihomeEnvHourCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends MihomeEnvHourCreateManyArgs>(args?: Prisma.SelectSubset<T, MihomeEnvHourCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many MihomeEnvHours and returns the data saved in the database.
* @param {MihomeEnvHourCreateManyAndReturnArgs} args - Arguments to create many MihomeEnvHours.
* @example
* // Create many MihomeEnvHours
* const mihomeEnvHour = await prisma.mihomeEnvHour.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many MihomeEnvHours and only return the `id`
* const mihomeEnvHourWithIdOnly = await prisma.mihomeEnvHour.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<T extends MihomeEnvHourCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, MihomeEnvHourCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$MihomeEnvHourPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a MihomeEnvHour. * Delete a MihomeEnvHour.
* @param {MihomeEnvHourDeleteArgs} args - Arguments to delete one MihomeEnvHour. * @param {MihomeEnvHourDeleteArgs} args - Arguments to delete one MihomeEnvHour.
@@ -777,6 +827,36 @@ export interface MihomeEnvHourDelegate<ExtArgs extends runtime.Types.Extensions.
*/ */
updateMany<T extends MihomeEnvHourUpdateManyArgs>(args: Prisma.SelectSubset<T, MihomeEnvHourUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends MihomeEnvHourUpdateManyArgs>(args: Prisma.SelectSubset<T, MihomeEnvHourUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more MihomeEnvHours and returns the data updated in the database.
* @param {MihomeEnvHourUpdateManyAndReturnArgs} args - Arguments to update many MihomeEnvHours.
* @example
* // Update many MihomeEnvHours
* const mihomeEnvHour = await prisma.mihomeEnvHour.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more MihomeEnvHours and only return the `id`
* const mihomeEnvHourWithIdOnly = await prisma.mihomeEnvHour.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<T extends MihomeEnvHourUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, MihomeEnvHourUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$MihomeEnvHourPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one MihomeEnvHour. * Create or update one MihomeEnvHour.
* @param {MihomeEnvHourUpsertArgs} args - Arguments to update or create a MihomeEnvHour. * @param {MihomeEnvHourUpsertArgs} args - Arguments to update or create a MihomeEnvHour.
@@ -1210,6 +1290,29 @@ export type MihomeEnvHourCreateManyArgs<ExtArgs extends runtime.Types.Extensions
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* MihomeEnvHour createManyAndReturn
*/
export type MihomeEnvHourCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the MihomeEnvHour
*/
select?: Prisma.MihomeEnvHourSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the MihomeEnvHour
*/
omit?: Prisma.MihomeEnvHourOmit<ExtArgs> | null
/**
* The data used to create many MihomeEnvHours.
*/
data: Prisma.MihomeEnvHourCreateManyInput | Prisma.MihomeEnvHourCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.MihomeEnvHourIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* MihomeEnvHour update * MihomeEnvHour update
*/ */
@@ -1254,6 +1357,36 @@ export type MihomeEnvHourUpdateManyArgs<ExtArgs extends runtime.Types.Extensions
limit?: number limit?: number
} }
/**
* MihomeEnvHour updateManyAndReturn
*/
export type MihomeEnvHourUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the MihomeEnvHour
*/
select?: Prisma.MihomeEnvHourSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the MihomeEnvHour
*/
omit?: Prisma.MihomeEnvHourOmit<ExtArgs> | null
/**
* The data used to update MihomeEnvHours.
*/
data: Prisma.XOR<Prisma.MihomeEnvHourUpdateManyMutationInput, Prisma.MihomeEnvHourUncheckedUpdateManyInput>
/**
* Filter which MihomeEnvHours to update
*/
where?: Prisma.MihomeEnvHourWhereInput
/**
* Limit how many MihomeEnvHours to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.MihomeEnvHourIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* MihomeEnvHour upsert * MihomeEnvHour upsert
*/ */
+149 -7
View File
@@ -348,7 +348,6 @@ export type MihomeEnvSampleOrderByWithRelationInput = {
raw?: Prisma.SortOrderInput | Prisma.SortOrder raw?: Prisma.SortOrderInput | Prisma.SortOrder
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
device?: Prisma.MihomeDeviceOrderByWithRelationInput device?: Prisma.MihomeDeviceOrderByWithRelationInput
_relevance?: Prisma.MihomeEnvSampleOrderByRelevanceInput
} }
export type MihomeEnvSampleWhereUniqueInput = Prisma.AtLeast<{ export type MihomeEnvSampleWhereUniqueInput = Prisma.AtLeast<{
@@ -550,12 +549,6 @@ export type MihomeEnvSampleOrderByRelationAggregateInput = {
_count?: Prisma.SortOrder _count?: Prisma.SortOrder
} }
export type MihomeEnvSampleOrderByRelevanceInput = {
fields: Prisma.MihomeEnvSampleOrderByRelevanceFieldEnum | Prisma.MihomeEnvSampleOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type MihomeEnvSampleDeviceIdDateCompoundUniqueInput = { export type MihomeEnvSampleDeviceIdDateCompoundUniqueInput = {
deviceId: number deviceId: number
date: Date | string date: Date | string
@@ -857,7 +850,43 @@ export type MihomeEnvSampleSelect<ExtArgs extends runtime.Types.Extensions.Inter
device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs> device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs>
}, ExtArgs["result"]["mihomeEnvSample"]> }, ExtArgs["result"]["mihomeEnvSample"]>
export type MihomeEnvSampleSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
deviceId?: boolean
date?: boolean
temperature?: boolean
humidity?: boolean
temperatureAvg?: boolean
humidityAvg?: boolean
temperatureMin?: boolean
temperatureMax?: boolean
humidityMin?: boolean
humidityMax?: boolean
origin?: boolean
sampledAt?: boolean
raw?: boolean
createdAt?: boolean
device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs>
}, ExtArgs["result"]["mihomeEnvSample"]>
export type MihomeEnvSampleSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
deviceId?: boolean
date?: boolean
temperature?: boolean
humidity?: boolean
temperatureAvg?: boolean
humidityAvg?: boolean
temperatureMin?: boolean
temperatureMax?: boolean
humidityMin?: boolean
humidityMax?: boolean
origin?: boolean
sampledAt?: boolean
raw?: boolean
createdAt?: boolean
device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs>
}, ExtArgs["result"]["mihomeEnvSample"]>
export type MihomeEnvSampleSelectScalar = { export type MihomeEnvSampleSelectScalar = {
id?: boolean id?: boolean
@@ -881,6 +910,12 @@ export type MihomeEnvSampleOmit<ExtArgs extends runtime.Types.Extensions.Interna
export type MihomeEnvSampleInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type MihomeEnvSampleInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs> device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs>
} }
export type MihomeEnvSampleIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs>
}
export type MihomeEnvSampleIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
device?: boolean | Prisma.MihomeDeviceDefaultArgs<ExtArgs>
}
export type $MihomeEnvSamplePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $MihomeEnvSamplePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "MihomeEnvSample" name: "MihomeEnvSample"
@@ -1020,6 +1055,30 @@ export interface MihomeEnvSampleDelegate<ExtArgs extends runtime.Types.Extension
*/ */
createMany<T extends MihomeEnvSampleCreateManyArgs>(args?: Prisma.SelectSubset<T, MihomeEnvSampleCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends MihomeEnvSampleCreateManyArgs>(args?: Prisma.SelectSubset<T, MihomeEnvSampleCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many MihomeEnvSamples and returns the data saved in the database.
* @param {MihomeEnvSampleCreateManyAndReturnArgs} args - Arguments to create many MihomeEnvSamples.
* @example
* // Create many MihomeEnvSamples
* const mihomeEnvSample = await prisma.mihomeEnvSample.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many MihomeEnvSamples and only return the `id`
* const mihomeEnvSampleWithIdOnly = await prisma.mihomeEnvSample.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<T extends MihomeEnvSampleCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, MihomeEnvSampleCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$MihomeEnvSamplePayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a MihomeEnvSample. * Delete a MihomeEnvSample.
* @param {MihomeEnvSampleDeleteArgs} args - Arguments to delete one MihomeEnvSample. * @param {MihomeEnvSampleDeleteArgs} args - Arguments to delete one MihomeEnvSample.
@@ -1084,6 +1143,36 @@ export interface MihomeEnvSampleDelegate<ExtArgs extends runtime.Types.Extension
*/ */
updateMany<T extends MihomeEnvSampleUpdateManyArgs>(args: Prisma.SelectSubset<T, MihomeEnvSampleUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends MihomeEnvSampleUpdateManyArgs>(args: Prisma.SelectSubset<T, MihomeEnvSampleUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more MihomeEnvSamples and returns the data updated in the database.
* @param {MihomeEnvSampleUpdateManyAndReturnArgs} args - Arguments to update many MihomeEnvSamples.
* @example
* // Update many MihomeEnvSamples
* const mihomeEnvSample = await prisma.mihomeEnvSample.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more MihomeEnvSamples and only return the `id`
* const mihomeEnvSampleWithIdOnly = await prisma.mihomeEnvSample.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<T extends MihomeEnvSampleUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, MihomeEnvSampleUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$MihomeEnvSamplePayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one MihomeEnvSample. * Create or update one MihomeEnvSample.
* @param {MihomeEnvSampleUpsertArgs} args - Arguments to update or create a MihomeEnvSample. * @param {MihomeEnvSampleUpsertArgs} args - Arguments to update or create a MihomeEnvSample.
@@ -1525,6 +1614,29 @@ export type MihomeEnvSampleCreateManyArgs<ExtArgs extends runtime.Types.Extensio
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* MihomeEnvSample createManyAndReturn
*/
export type MihomeEnvSampleCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the MihomeEnvSample
*/
select?: Prisma.MihomeEnvSampleSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the MihomeEnvSample
*/
omit?: Prisma.MihomeEnvSampleOmit<ExtArgs> | null
/**
* The data used to create many MihomeEnvSamples.
*/
data: Prisma.MihomeEnvSampleCreateManyInput | Prisma.MihomeEnvSampleCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.MihomeEnvSampleIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* MihomeEnvSample update * MihomeEnvSample update
*/ */
@@ -1569,6 +1681,36 @@ export type MihomeEnvSampleUpdateManyArgs<ExtArgs extends runtime.Types.Extensio
limit?: number limit?: number
} }
/**
* MihomeEnvSample updateManyAndReturn
*/
export type MihomeEnvSampleUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the MihomeEnvSample
*/
select?: Prisma.MihomeEnvSampleSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the MihomeEnvSample
*/
omit?: Prisma.MihomeEnvSampleOmit<ExtArgs> | null
/**
* The data used to update MihomeEnvSamples.
*/
data: Prisma.XOR<Prisma.MihomeEnvSampleUpdateManyMutationInput, Prisma.MihomeEnvSampleUncheckedUpdateManyInput>
/**
* Filter which MihomeEnvSamples to update
*/
where?: Prisma.MihomeEnvSampleWhereInput
/**
* Limit how many MihomeEnvSamples to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.MihomeEnvSampleIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* MihomeEnvSample upsert * MihomeEnvSample upsert
*/ */
+113 -7
View File
@@ -217,7 +217,6 @@ export type MihomeHomeOrderByWithRelationInput = {
name?: Prisma.SortOrder name?: Prisma.SortOrder
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
devices?: Prisma.MihomeDeviceOrderByRelationAggregateInput devices?: Prisma.MihomeDeviceOrderByRelationAggregateInput
_relevance?: Prisma.MihomeHomeOrderByRelevanceInput
} }
export type MihomeHomeWhereUniqueInput = Prisma.AtLeast<{ export type MihomeHomeWhereUniqueInput = Prisma.AtLeast<{
@@ -303,12 +302,6 @@ export type MihomeHomeUncheckedUpdateManyInput = {
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type MihomeHomeOrderByRelevanceInput = {
fields: Prisma.MihomeHomeOrderByRelevanceFieldEnum | Prisma.MihomeHomeOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type MihomeHomeCountOrderByAggregateInput = { export type MihomeHomeCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
homeId?: Prisma.SortOrder homeId?: Prisma.SortOrder
@@ -439,7 +432,19 @@ export type MihomeHomeSelect<ExtArgs extends runtime.Types.Extensions.InternalAr
_count?: boolean | Prisma.MihomeHomeCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.MihomeHomeCountOutputTypeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["mihomeHome"]> }, ExtArgs["result"]["mihomeHome"]>
export type MihomeHomeSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
homeId?: boolean
name?: boolean
createdAt?: boolean
}, ExtArgs["result"]["mihomeHome"]>
export type MihomeHomeSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
homeId?: boolean
name?: boolean
createdAt?: boolean
}, ExtArgs["result"]["mihomeHome"]>
export type MihomeHomeSelectScalar = { export type MihomeHomeSelectScalar = {
id?: boolean id?: boolean
@@ -453,6 +458,8 @@ export type MihomeHomeInclude<ExtArgs extends runtime.Types.Extensions.InternalA
devices?: boolean | Prisma.MihomeHome$devicesArgs<ExtArgs> devices?: boolean | Prisma.MihomeHome$devicesArgs<ExtArgs>
_count?: boolean | Prisma.MihomeHomeCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.MihomeHomeCountOutputTypeDefaultArgs<ExtArgs>
} }
export type MihomeHomeIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {}
export type MihomeHomeIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {}
export type $MihomeHomePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $MihomeHomePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "MihomeHome" name: "MihomeHome"
@@ -581,6 +588,30 @@ export interface MihomeHomeDelegate<ExtArgs extends runtime.Types.Extensions.Int
*/ */
createMany<T extends MihomeHomeCreateManyArgs>(args?: Prisma.SelectSubset<T, MihomeHomeCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends MihomeHomeCreateManyArgs>(args?: Prisma.SelectSubset<T, MihomeHomeCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many MihomeHomes and returns the data saved in the database.
* @param {MihomeHomeCreateManyAndReturnArgs} args - Arguments to create many MihomeHomes.
* @example
* // Create many MihomeHomes
* const mihomeHome = await prisma.mihomeHome.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many MihomeHomes and only return the `id`
* const mihomeHomeWithIdOnly = await prisma.mihomeHome.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<T extends MihomeHomeCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, MihomeHomeCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$MihomeHomePayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a MihomeHome. * Delete a MihomeHome.
* @param {MihomeHomeDeleteArgs} args - Arguments to delete one MihomeHome. * @param {MihomeHomeDeleteArgs} args - Arguments to delete one MihomeHome.
@@ -645,6 +676,36 @@ export interface MihomeHomeDelegate<ExtArgs extends runtime.Types.Extensions.Int
*/ */
updateMany<T extends MihomeHomeUpdateManyArgs>(args: Prisma.SelectSubset<T, MihomeHomeUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends MihomeHomeUpdateManyArgs>(args: Prisma.SelectSubset<T, MihomeHomeUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more MihomeHomes and returns the data updated in the database.
* @param {MihomeHomeUpdateManyAndReturnArgs} args - Arguments to update many MihomeHomes.
* @example
* // Update many MihomeHomes
* const mihomeHome = await prisma.mihomeHome.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more MihomeHomes and only return the `id`
* const mihomeHomeWithIdOnly = await prisma.mihomeHome.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<T extends MihomeHomeUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, MihomeHomeUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$MihomeHomePayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one MihomeHome. * Create or update one MihomeHome.
* @param {MihomeHomeUpsertArgs} args - Arguments to update or create a MihomeHome. * @param {MihomeHomeUpsertArgs} args - Arguments to update or create a MihomeHome.
@@ -1075,6 +1136,25 @@ export type MihomeHomeCreateManyArgs<ExtArgs extends runtime.Types.Extensions.In
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* MihomeHome createManyAndReturn
*/
export type MihomeHomeCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the MihomeHome
*/
select?: Prisma.MihomeHomeSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the MihomeHome
*/
omit?: Prisma.MihomeHomeOmit<ExtArgs> | null
/**
* The data used to create many MihomeHomes.
*/
data: Prisma.MihomeHomeCreateManyInput | Prisma.MihomeHomeCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* MihomeHome update * MihomeHome update
*/ */
@@ -1119,6 +1199,32 @@ export type MihomeHomeUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.In
limit?: number limit?: number
} }
/**
* MihomeHome updateManyAndReturn
*/
export type MihomeHomeUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the MihomeHome
*/
select?: Prisma.MihomeHomeSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the MihomeHome
*/
omit?: Prisma.MihomeHomeOmit<ExtArgs> | null
/**
* The data used to update MihomeHomes.
*/
data: Prisma.XOR<Prisma.MihomeHomeUpdateManyMutationInput, Prisma.MihomeHomeUncheckedUpdateManyInput>
/**
* Filter which MihomeHomes to update
*/
where?: Prisma.MihomeHomeWhereInput
/**
* Limit how many MihomeHomes to update.
*/
limit?: number
}
/** /**
* MihomeHome upsert * MihomeHome upsert
*/ */
+121 -7
View File
@@ -264,7 +264,6 @@ export type NewsOrderByWithRelationInput = {
publishedAt?: Prisma.SortOrder publishedAt?: Prisma.SortOrder
impactRank?: Prisma.SortOrder impactRank?: Prisma.SortOrder
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
_relevance?: Prisma.NewsOrderByRelevanceInput
} }
export type NewsWhereUniqueInput = Prisma.AtLeast<{ export type NewsWhereUniqueInput = Prisma.AtLeast<{
@@ -396,12 +395,6 @@ export type NewsUncheckedUpdateManyInput = {
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type NewsOrderByRelevanceInput = {
fields: Prisma.NewsOrderByRelevanceFieldEnum | Prisma.NewsOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type NewsTitlePublishedAtCompoundUniqueInput = { export type NewsTitlePublishedAtCompoundUniqueInput = {
title: string title: string
publishedAt: Date | string publishedAt: Date | string
@@ -471,7 +464,29 @@ export type NewsSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = r
createdAt?: boolean createdAt?: boolean
}, ExtArgs["result"]["news"]> }, ExtArgs["result"]["news"]>
export type NewsSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
title?: boolean
summary?: boolean
content?: boolean
source?: boolean
url?: boolean
publishedAt?: boolean
impactRank?: boolean
createdAt?: boolean
}, ExtArgs["result"]["news"]>
export type NewsSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
title?: boolean
summary?: boolean
content?: boolean
source?: boolean
url?: boolean
publishedAt?: boolean
impactRank?: boolean
createdAt?: boolean
}, ExtArgs["result"]["news"]>
export type NewsSelectScalar = { export type NewsSelectScalar = {
id?: boolean id?: boolean
@@ -617,6 +632,30 @@ export interface NewsDelegate<ExtArgs extends runtime.Types.Extensions.InternalA
*/ */
createMany<T extends NewsCreateManyArgs>(args?: Prisma.SelectSubset<T, NewsCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends NewsCreateManyArgs>(args?: Prisma.SelectSubset<T, NewsCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many News and returns the data saved in the database.
* @param {NewsCreateManyAndReturnArgs} args - Arguments to create many News.
* @example
* // Create many News
* const news = await prisma.news.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many News and only return the `id`
* const newsWithIdOnly = await prisma.news.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<T extends NewsCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, NewsCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$NewsPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a News. * Delete a News.
* @param {NewsDeleteArgs} args - Arguments to delete one News. * @param {NewsDeleteArgs} args - Arguments to delete one News.
@@ -681,6 +720,36 @@ export interface NewsDelegate<ExtArgs extends runtime.Types.Extensions.InternalA
*/ */
updateMany<T extends NewsUpdateManyArgs>(args: Prisma.SelectSubset<T, NewsUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends NewsUpdateManyArgs>(args: Prisma.SelectSubset<T, NewsUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more News and returns the data updated in the database.
* @param {NewsUpdateManyAndReturnArgs} args - Arguments to update many News.
* @example
* // Update many News
* const news = await prisma.news.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more News and only return the `id`
* const newsWithIdOnly = await prisma.news.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<T extends NewsUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, NewsUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$NewsPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one News. * Create or update one News.
* @param {NewsUpsertArgs} args - Arguments to update or create a News. * @param {NewsUpsertArgs} args - Arguments to update or create a News.
@@ -1091,6 +1160,25 @@ export type NewsCreateManyArgs<ExtArgs extends runtime.Types.Extensions.Internal
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* News createManyAndReturn
*/
export type NewsCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the News
*/
select?: Prisma.NewsSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the News
*/
omit?: Prisma.NewsOmit<ExtArgs> | null
/**
* The data used to create many News.
*/
data: Prisma.NewsCreateManyInput | Prisma.NewsCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* News update * News update
*/ */
@@ -1131,6 +1219,32 @@ export type NewsUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.Internal
limit?: number limit?: number
} }
/**
* News updateManyAndReturn
*/
export type NewsUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the News
*/
select?: Prisma.NewsSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the News
*/
omit?: Prisma.NewsOmit<ExtArgs> | null
/**
* The data used to update News.
*/
data: Prisma.XOR<Prisma.NewsUpdateManyMutationInput, Prisma.NewsUncheckedUpdateManyInput>
/**
* Filter which News to update
*/
where?: Prisma.NewsWhereInput
/**
* Limit how many News to update.
*/
limit?: number
}
/** /**
* News upsert * News upsert
*/ */
+117 -7
View File
@@ -246,7 +246,6 @@ export type OilPriceHistoryOrderByWithRelationInput = {
price?: Prisma.SortOrder price?: Prisma.SortOrder
source?: Prisma.SortOrder source?: Prisma.SortOrder
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
_relevance?: Prisma.OilPriceHistoryOrderByRelevanceInput
} }
export type OilPriceHistoryWhereUniqueInput = Prisma.AtLeast<{ export type OilPriceHistoryWhereUniqueInput = Prisma.AtLeast<{
@@ -358,12 +357,6 @@ export type OilPriceHistoryUncheckedUpdateManyInput = {
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type OilPriceHistoryOrderByRelevanceInput = {
fields: Prisma.OilPriceHistoryOrderByRelevanceFieldEnum | Prisma.OilPriceHistoryOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type OilPriceHistoryDateProvinceFuelCompoundUniqueInput = { export type OilPriceHistoryDateProvinceFuelCompoundUniqueInput = {
date: Date | string date: Date | string
province: string province: string
@@ -422,7 +415,25 @@ export type OilPriceHistorySelect<ExtArgs extends runtime.Types.Extensions.Inter
createdAt?: boolean createdAt?: boolean
}, ExtArgs["result"]["oilPriceHistory"]> }, ExtArgs["result"]["oilPriceHistory"]>
export type OilPriceHistorySelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
date?: boolean
province?: boolean
fuel?: boolean
price?: boolean
source?: boolean
createdAt?: boolean
}, ExtArgs["result"]["oilPriceHistory"]>
export type OilPriceHistorySelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
date?: boolean
province?: boolean
fuel?: boolean
price?: boolean
source?: boolean
createdAt?: boolean
}, ExtArgs["result"]["oilPriceHistory"]>
export type OilPriceHistorySelectScalar = { export type OilPriceHistorySelectScalar = {
id?: boolean id?: boolean
@@ -564,6 +575,30 @@ export interface OilPriceHistoryDelegate<ExtArgs extends runtime.Types.Extension
*/ */
createMany<T extends OilPriceHistoryCreateManyArgs>(args?: Prisma.SelectSubset<T, OilPriceHistoryCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends OilPriceHistoryCreateManyArgs>(args?: Prisma.SelectSubset<T, OilPriceHistoryCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many OilPriceHistories and returns the data saved in the database.
* @param {OilPriceHistoryCreateManyAndReturnArgs} args - Arguments to create many OilPriceHistories.
* @example
* // Create many OilPriceHistories
* const oilPriceHistory = await prisma.oilPriceHistory.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many OilPriceHistories and only return the `id`
* const oilPriceHistoryWithIdOnly = await prisma.oilPriceHistory.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<T extends OilPriceHistoryCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, OilPriceHistoryCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$OilPriceHistoryPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a OilPriceHistory. * Delete a OilPriceHistory.
* @param {OilPriceHistoryDeleteArgs} args - Arguments to delete one OilPriceHistory. * @param {OilPriceHistoryDeleteArgs} args - Arguments to delete one OilPriceHistory.
@@ -628,6 +663,36 @@ export interface OilPriceHistoryDelegate<ExtArgs extends runtime.Types.Extension
*/ */
updateMany<T extends OilPriceHistoryUpdateManyArgs>(args: Prisma.SelectSubset<T, OilPriceHistoryUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends OilPriceHistoryUpdateManyArgs>(args: Prisma.SelectSubset<T, OilPriceHistoryUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more OilPriceHistories and returns the data updated in the database.
* @param {OilPriceHistoryUpdateManyAndReturnArgs} args - Arguments to update many OilPriceHistories.
* @example
* // Update many OilPriceHistories
* const oilPriceHistory = await prisma.oilPriceHistory.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more OilPriceHistories and only return the `id`
* const oilPriceHistoryWithIdOnly = await prisma.oilPriceHistory.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<T extends OilPriceHistoryUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, OilPriceHistoryUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$OilPriceHistoryPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one OilPriceHistory. * Create or update one OilPriceHistory.
* @param {OilPriceHistoryUpsertArgs} args - Arguments to update or create a OilPriceHistory. * @param {OilPriceHistoryUpsertArgs} args - Arguments to update or create a OilPriceHistory.
@@ -1036,6 +1101,25 @@ export type OilPriceHistoryCreateManyArgs<ExtArgs extends runtime.Types.Extensio
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* OilPriceHistory createManyAndReturn
*/
export type OilPriceHistoryCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the OilPriceHistory
*/
select?: Prisma.OilPriceHistorySelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the OilPriceHistory
*/
omit?: Prisma.OilPriceHistoryOmit<ExtArgs> | null
/**
* The data used to create many OilPriceHistories.
*/
data: Prisma.OilPriceHistoryCreateManyInput | Prisma.OilPriceHistoryCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* OilPriceHistory update * OilPriceHistory update
*/ */
@@ -1076,6 +1160,32 @@ export type OilPriceHistoryUpdateManyArgs<ExtArgs extends runtime.Types.Extensio
limit?: number limit?: number
} }
/**
* OilPriceHistory updateManyAndReturn
*/
export type OilPriceHistoryUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the OilPriceHistory
*/
select?: Prisma.OilPriceHistorySelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the OilPriceHistory
*/
omit?: Prisma.OilPriceHistoryOmit<ExtArgs> | null
/**
* The data used to update OilPriceHistories.
*/
data: Prisma.XOR<Prisma.OilPriceHistoryUpdateManyMutationInput, Prisma.OilPriceHistoryUncheckedUpdateManyInput>
/**
* Filter which OilPriceHistories to update
*/
where?: Prisma.OilPriceHistoryWhereInput
/**
* Limit how many OilPriceHistories to update.
*/
limit?: number
}
/** /**
* OilPriceHistory upsert * OilPriceHistory upsert
*/ */
+237 -9
View File
@@ -38,6 +38,8 @@ export type ProjectSumAggregateOutputType = {
export type ProjectMinAggregateOutputType = { export type ProjectMinAggregateOutputType = {
id: number | null id: number | null
uuid: string | null
code: string | null
name: string | null name: string | null
ownerId: number | null ownerId: number | null
isPersonal: boolean | null isPersonal: boolean | null
@@ -50,6 +52,8 @@ export type ProjectMinAggregateOutputType = {
export type ProjectMaxAggregateOutputType = { export type ProjectMaxAggregateOutputType = {
id: number | null id: number | null
uuid: string | null
code: string | null
name: string | null name: string | null
ownerId: number | null ownerId: number | null
isPersonal: boolean | null isPersonal: boolean | null
@@ -62,6 +66,8 @@ export type ProjectMaxAggregateOutputType = {
export type ProjectCountAggregateOutputType = { export type ProjectCountAggregateOutputType = {
id: number id: number
uuid: number
code: number
name: number name: number
ownerId: number ownerId: number
isPersonal: number isPersonal: number
@@ -88,6 +94,8 @@ export type ProjectSumAggregateInputType = {
export type ProjectMinAggregateInputType = { export type ProjectMinAggregateInputType = {
id?: true id?: true
uuid?: true
code?: true
name?: true name?: true
ownerId?: true ownerId?: true
isPersonal?: true isPersonal?: true
@@ -100,6 +108,8 @@ export type ProjectMinAggregateInputType = {
export type ProjectMaxAggregateInputType = { export type ProjectMaxAggregateInputType = {
id?: true id?: true
uuid?: true
code?: true
name?: true name?: true
ownerId?: true ownerId?: true
isPersonal?: true isPersonal?: true
@@ -112,6 +122,8 @@ export type ProjectMaxAggregateInputType = {
export type ProjectCountAggregateInputType = { export type ProjectCountAggregateInputType = {
id?: true id?: true
uuid?: true
code?: true
name?: true name?: true
ownerId?: true ownerId?: true
isPersonal?: true isPersonal?: true
@@ -213,6 +225,8 @@ export type ProjectGroupByArgs<ExtArgs extends runtime.Types.Extensions.Internal
export type ProjectGroupByOutputType = { export type ProjectGroupByOutputType = {
id: number id: number
uuid: string
code: string
name: string name: string
ownerId: number ownerId: number
isPersonal: boolean isPersonal: boolean
@@ -250,6 +264,8 @@ export type ProjectWhereInput = {
OR?: Prisma.ProjectWhereInput[] OR?: Prisma.ProjectWhereInput[]
NOT?: Prisma.ProjectWhereInput | Prisma.ProjectWhereInput[] NOT?: Prisma.ProjectWhereInput | Prisma.ProjectWhereInput[]
id?: Prisma.IntFilter<"Project"> | number id?: Prisma.IntFilter<"Project"> | number
uuid?: Prisma.StringFilter<"Project"> | string
code?: Prisma.StringFilter<"Project"> | string
name?: Prisma.StringFilter<"Project"> | string name?: Prisma.StringFilter<"Project"> | string
ownerId?: Prisma.IntFilter<"Project"> | number ownerId?: Prisma.IntFilter<"Project"> | number
isPersonal?: Prisma.BoolFilter<"Project"> | boolean isPersonal?: Prisma.BoolFilter<"Project"> | boolean
@@ -268,6 +284,8 @@ export type ProjectWhereInput = {
export type ProjectOrderByWithRelationInput = { export type ProjectOrderByWithRelationInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
code?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
ownerId?: Prisma.SortOrder ownerId?: Prisma.SortOrder
isPersonal?: Prisma.SortOrder isPersonal?: Prisma.SortOrder
@@ -282,11 +300,12 @@ export type ProjectOrderByWithRelationInput = {
members?: Prisma.ProjectMemberOrderByRelationAggregateInput members?: Prisma.ProjectMemberOrderByRelationAggregateInput
columns?: Prisma.BoardColumnOrderByRelationAggregateInput columns?: Prisma.BoardColumnOrderByRelationAggregateInput
tasks?: Prisma.TaskOrderByRelationAggregateInput tasks?: Prisma.TaskOrderByRelationAggregateInput
_relevance?: Prisma.ProjectOrderByRelevanceInput
} }
export type ProjectWhereUniqueInput = Prisma.AtLeast<{ export type ProjectWhereUniqueInput = Prisma.AtLeast<{
id?: number id?: number
uuid?: string
code?: string
AND?: Prisma.ProjectWhereInput | Prisma.ProjectWhereInput[] AND?: Prisma.ProjectWhereInput | Prisma.ProjectWhereInput[]
OR?: Prisma.ProjectWhereInput[] OR?: Prisma.ProjectWhereInput[]
NOT?: Prisma.ProjectWhereInput | Prisma.ProjectWhereInput[] NOT?: Prisma.ProjectWhereInput | Prisma.ProjectWhereInput[]
@@ -304,10 +323,12 @@ export type ProjectWhereUniqueInput = Prisma.AtLeast<{
members?: Prisma.ProjectMemberListRelationFilter members?: Prisma.ProjectMemberListRelationFilter
columns?: Prisma.BoardColumnListRelationFilter columns?: Prisma.BoardColumnListRelationFilter
tasks?: Prisma.TaskListRelationFilter tasks?: Prisma.TaskListRelationFilter
}, "id"> }, "id" | "uuid" | "code">
export type ProjectOrderByWithAggregationInput = { export type ProjectOrderByWithAggregationInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
code?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
ownerId?: Prisma.SortOrder ownerId?: Prisma.SortOrder
isPersonal?: Prisma.SortOrder isPersonal?: Prisma.SortOrder
@@ -330,6 +351,8 @@ export type ProjectScalarWhereWithAggregatesInput = {
OR?: Prisma.ProjectScalarWhereWithAggregatesInput[] OR?: Prisma.ProjectScalarWhereWithAggregatesInput[]
NOT?: Prisma.ProjectScalarWhereWithAggregatesInput | Prisma.ProjectScalarWhereWithAggregatesInput[] NOT?: Prisma.ProjectScalarWhereWithAggregatesInput | Prisma.ProjectScalarWhereWithAggregatesInput[]
id?: Prisma.IntWithAggregatesFilter<"Project"> | number id?: Prisma.IntWithAggregatesFilter<"Project"> | number
uuid?: Prisma.StringWithAggregatesFilter<"Project"> | string
code?: Prisma.StringWithAggregatesFilter<"Project"> | string
name?: Prisma.StringWithAggregatesFilter<"Project"> | string name?: Prisma.StringWithAggregatesFilter<"Project"> | string
ownerId?: Prisma.IntWithAggregatesFilter<"Project"> | number ownerId?: Prisma.IntWithAggregatesFilter<"Project"> | number
isPersonal?: Prisma.BoolWithAggregatesFilter<"Project"> | boolean isPersonal?: Prisma.BoolWithAggregatesFilter<"Project"> | boolean
@@ -343,6 +366,8 @@ export type ProjectScalarWhereWithAggregatesInput = {
} }
export type ProjectCreateInput = { export type ProjectCreateInput = {
uuid: string
code: string
name: string name: string
isPersonal?: boolean isPersonal?: boolean
archived?: boolean archived?: boolean
@@ -360,6 +385,8 @@ export type ProjectCreateInput = {
export type ProjectUncheckedCreateInput = { export type ProjectUncheckedCreateInput = {
id?: number id?: number
uuid: string
code: string
name: string name: string
ownerId: number ownerId: number
isPersonal?: boolean isPersonal?: boolean
@@ -376,6 +403,8 @@ export type ProjectUncheckedCreateInput = {
} }
export type ProjectUpdateInput = { export type ProjectUpdateInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
code?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean
archived?: Prisma.BoolFieldUpdateOperationsInput | boolean archived?: Prisma.BoolFieldUpdateOperationsInput | boolean
@@ -393,6 +422,8 @@ export type ProjectUpdateInput = {
export type ProjectUncheckedUpdateInput = { export type ProjectUncheckedUpdateInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
code?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
ownerId?: Prisma.IntFieldUpdateOperationsInput | number ownerId?: Prisma.IntFieldUpdateOperationsInput | number
isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean
@@ -410,6 +441,8 @@ export type ProjectUncheckedUpdateInput = {
export type ProjectCreateManyInput = { export type ProjectCreateManyInput = {
id?: number id?: number
uuid: string
code: string
name: string name: string
ownerId: number ownerId: number
isPersonal?: boolean isPersonal?: boolean
@@ -423,6 +456,8 @@ export type ProjectCreateManyInput = {
} }
export type ProjectUpdateManyMutationInput = { export type ProjectUpdateManyMutationInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
code?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean
archived?: Prisma.BoolFieldUpdateOperationsInput | boolean archived?: Prisma.BoolFieldUpdateOperationsInput | boolean
@@ -436,6 +471,8 @@ export type ProjectUpdateManyMutationInput = {
export type ProjectUncheckedUpdateManyInput = { export type ProjectUncheckedUpdateManyInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
code?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
ownerId?: Prisma.IntFieldUpdateOperationsInput | number ownerId?: Prisma.IntFieldUpdateOperationsInput | number
isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean
@@ -458,14 +495,10 @@ export type ProjectOrderByRelationAggregateInput = {
_count?: Prisma.SortOrder _count?: Prisma.SortOrder
} }
export type ProjectOrderByRelevanceInput = {
fields: Prisma.ProjectOrderByRelevanceFieldEnum | Prisma.ProjectOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type ProjectCountOrderByAggregateInput = { export type ProjectCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
code?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
ownerId?: Prisma.SortOrder ownerId?: Prisma.SortOrder
isPersonal?: Prisma.SortOrder isPersonal?: Prisma.SortOrder
@@ -485,6 +518,8 @@ export type ProjectAvgOrderByAggregateInput = {
export type ProjectMaxOrderByAggregateInput = { export type ProjectMaxOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
code?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
ownerId?: Prisma.SortOrder ownerId?: Prisma.SortOrder
isPersonal?: Prisma.SortOrder isPersonal?: Prisma.SortOrder
@@ -497,6 +532,8 @@ export type ProjectMaxOrderByAggregateInput = {
export type ProjectMinOrderByAggregateInput = { export type ProjectMinOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
code?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
ownerId?: Prisma.SortOrder ownerId?: Prisma.SortOrder
isPersonal?: Prisma.SortOrder isPersonal?: Prisma.SortOrder
@@ -602,6 +639,8 @@ export type ProjectUpdateOneRequiredWithoutTasksNestedInput = {
} }
export type ProjectCreateWithoutOwnerInput = { export type ProjectCreateWithoutOwnerInput = {
uuid: string
code: string
name: string name: string
isPersonal?: boolean isPersonal?: boolean
archived?: boolean archived?: boolean
@@ -618,6 +657,8 @@ export type ProjectCreateWithoutOwnerInput = {
export type ProjectUncheckedCreateWithoutOwnerInput = { export type ProjectUncheckedCreateWithoutOwnerInput = {
id?: number id?: number
uuid: string
code: string
name: string name: string
isPersonal?: boolean isPersonal?: boolean
archived?: boolean archived?: boolean
@@ -663,6 +704,8 @@ export type ProjectScalarWhereInput = {
OR?: Prisma.ProjectScalarWhereInput[] OR?: Prisma.ProjectScalarWhereInput[]
NOT?: Prisma.ProjectScalarWhereInput | Prisma.ProjectScalarWhereInput[] NOT?: Prisma.ProjectScalarWhereInput | Prisma.ProjectScalarWhereInput[]
id?: Prisma.IntFilter<"Project"> | number id?: Prisma.IntFilter<"Project"> | number
uuid?: Prisma.StringFilter<"Project"> | string
code?: Prisma.StringFilter<"Project"> | string
name?: Prisma.StringFilter<"Project"> | string name?: Prisma.StringFilter<"Project"> | string
ownerId?: Prisma.IntFilter<"Project"> | number ownerId?: Prisma.IntFilter<"Project"> | number
isPersonal?: Prisma.BoolFilter<"Project"> | boolean isPersonal?: Prisma.BoolFilter<"Project"> | boolean
@@ -676,6 +719,8 @@ export type ProjectScalarWhereInput = {
} }
export type ProjectCreateWithoutMembersInput = { export type ProjectCreateWithoutMembersInput = {
uuid: string
code: string
name: string name: string
isPersonal?: boolean isPersonal?: boolean
archived?: boolean archived?: boolean
@@ -692,6 +737,8 @@ export type ProjectCreateWithoutMembersInput = {
export type ProjectUncheckedCreateWithoutMembersInput = { export type ProjectUncheckedCreateWithoutMembersInput = {
id?: number id?: number
uuid: string
code: string
name: string name: string
ownerId: number ownerId: number
isPersonal?: boolean isPersonal?: boolean
@@ -723,6 +770,8 @@ export type ProjectUpdateToOneWithWhereWithoutMembersInput = {
} }
export type ProjectUpdateWithoutMembersInput = { export type ProjectUpdateWithoutMembersInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
code?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean
archived?: Prisma.BoolFieldUpdateOperationsInput | boolean archived?: Prisma.BoolFieldUpdateOperationsInput | boolean
@@ -739,6 +788,8 @@ export type ProjectUpdateWithoutMembersInput = {
export type ProjectUncheckedUpdateWithoutMembersInput = { export type ProjectUncheckedUpdateWithoutMembersInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
code?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
ownerId?: Prisma.IntFieldUpdateOperationsInput | number ownerId?: Prisma.IntFieldUpdateOperationsInput | number
isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean
@@ -754,6 +805,8 @@ export type ProjectUncheckedUpdateWithoutMembersInput = {
} }
export type ProjectCreateWithoutColumnsInput = { export type ProjectCreateWithoutColumnsInput = {
uuid: string
code: string
name: string name: string
isPersonal?: boolean isPersonal?: boolean
archived?: boolean archived?: boolean
@@ -770,6 +823,8 @@ export type ProjectCreateWithoutColumnsInput = {
export type ProjectUncheckedCreateWithoutColumnsInput = { export type ProjectUncheckedCreateWithoutColumnsInput = {
id?: number id?: number
uuid: string
code: string
name: string name: string
ownerId: number ownerId: number
isPersonal?: boolean isPersonal?: boolean
@@ -801,6 +856,8 @@ export type ProjectUpdateToOneWithWhereWithoutColumnsInput = {
} }
export type ProjectUpdateWithoutColumnsInput = { export type ProjectUpdateWithoutColumnsInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
code?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean
archived?: Prisma.BoolFieldUpdateOperationsInput | boolean archived?: Prisma.BoolFieldUpdateOperationsInput | boolean
@@ -817,6 +874,8 @@ export type ProjectUpdateWithoutColumnsInput = {
export type ProjectUncheckedUpdateWithoutColumnsInput = { export type ProjectUncheckedUpdateWithoutColumnsInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
code?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
ownerId?: Prisma.IntFieldUpdateOperationsInput | number ownerId?: Prisma.IntFieldUpdateOperationsInput | number
isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean
@@ -832,6 +891,8 @@ export type ProjectUncheckedUpdateWithoutColumnsInput = {
} }
export type ProjectCreateWithoutTasksInput = { export type ProjectCreateWithoutTasksInput = {
uuid: string
code: string
name: string name: string
isPersonal?: boolean isPersonal?: boolean
archived?: boolean archived?: boolean
@@ -848,6 +909,8 @@ export type ProjectCreateWithoutTasksInput = {
export type ProjectUncheckedCreateWithoutTasksInput = { export type ProjectUncheckedCreateWithoutTasksInput = {
id?: number id?: number
uuid: string
code: string
name: string name: string
ownerId: number ownerId: number
isPersonal?: boolean isPersonal?: boolean
@@ -879,6 +942,8 @@ export type ProjectUpdateToOneWithWhereWithoutTasksInput = {
} }
export type ProjectUpdateWithoutTasksInput = { export type ProjectUpdateWithoutTasksInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
code?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean
archived?: Prisma.BoolFieldUpdateOperationsInput | boolean archived?: Prisma.BoolFieldUpdateOperationsInput | boolean
@@ -895,6 +960,8 @@ export type ProjectUpdateWithoutTasksInput = {
export type ProjectUncheckedUpdateWithoutTasksInput = { export type ProjectUncheckedUpdateWithoutTasksInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
code?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
ownerId?: Prisma.IntFieldUpdateOperationsInput | number ownerId?: Prisma.IntFieldUpdateOperationsInput | number
isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean
@@ -911,6 +978,8 @@ export type ProjectUncheckedUpdateWithoutTasksInput = {
export type ProjectCreateManyOwnerInput = { export type ProjectCreateManyOwnerInput = {
id?: number id?: number
uuid: string
code: string
name: string name: string
isPersonal?: boolean isPersonal?: boolean
archived?: boolean archived?: boolean
@@ -923,6 +992,8 @@ export type ProjectCreateManyOwnerInput = {
} }
export type ProjectUpdateWithoutOwnerInput = { export type ProjectUpdateWithoutOwnerInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
code?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean
archived?: Prisma.BoolFieldUpdateOperationsInput | boolean archived?: Prisma.BoolFieldUpdateOperationsInput | boolean
@@ -939,6 +1010,8 @@ export type ProjectUpdateWithoutOwnerInput = {
export type ProjectUncheckedUpdateWithoutOwnerInput = { export type ProjectUncheckedUpdateWithoutOwnerInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
code?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean
archived?: Prisma.BoolFieldUpdateOperationsInput | boolean archived?: Prisma.BoolFieldUpdateOperationsInput | boolean
@@ -955,6 +1028,8 @@ export type ProjectUncheckedUpdateWithoutOwnerInput = {
export type ProjectUncheckedUpdateManyWithoutOwnerInput = { export type ProjectUncheckedUpdateManyWithoutOwnerInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
code?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean isPersonal?: Prisma.BoolFieldUpdateOperationsInput | boolean
archived?: Prisma.BoolFieldUpdateOperationsInput | boolean archived?: Prisma.BoolFieldUpdateOperationsInput | boolean
@@ -1017,6 +1092,8 @@ export type ProjectCountOutputTypeCountTasksArgs<ExtArgs extends runtime.Types.E
export type ProjectSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{ export type ProjectSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean id?: boolean
uuid?: boolean
code?: boolean
name?: boolean name?: boolean
ownerId?: boolean ownerId?: boolean
isPersonal?: boolean isPersonal?: boolean
@@ -1034,10 +1111,44 @@ export type ProjectSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs
_count?: boolean | Prisma.ProjectCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.ProjectCountOutputTypeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["project"]> }, ExtArgs["result"]["project"]>
export type ProjectSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
code?: boolean
name?: boolean
ownerId?: boolean
isPersonal?: boolean
archived?: boolean
notes?: boolean
taskKinds?: boolean
icon?: boolean
autoArchive?: boolean
createdAt?: boolean
updatedAt?: boolean
owner?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["project"]>
export type ProjectSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
code?: boolean
name?: boolean
ownerId?: boolean
isPersonal?: boolean
archived?: boolean
notes?: boolean
taskKinds?: boolean
icon?: boolean
autoArchive?: boolean
createdAt?: boolean
updatedAt?: boolean
owner?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["project"]>
export type ProjectSelectScalar = { export type ProjectSelectScalar = {
id?: boolean id?: boolean
uuid?: boolean
code?: boolean
name?: boolean name?: boolean
ownerId?: boolean ownerId?: boolean
isPersonal?: boolean isPersonal?: boolean
@@ -1050,7 +1161,7 @@ export type ProjectSelectScalar = {
updatedAt?: boolean updatedAt?: boolean
} }
export type ProjectOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "name" | "ownerId" | "isPersonal" | "archived" | "notes" | "taskKinds" | "icon" | "autoArchive" | "createdAt" | "updatedAt", ExtArgs["result"]["project"]> export type ProjectOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "uuid" | "code" | "name" | "ownerId" | "isPersonal" | "archived" | "notes" | "taskKinds" | "icon" | "autoArchive" | "createdAt" | "updatedAt", ExtArgs["result"]["project"]>
export type ProjectInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type ProjectInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
owner?: boolean | Prisma.UserDefaultArgs<ExtArgs> owner?: boolean | Prisma.UserDefaultArgs<ExtArgs>
members?: boolean | Prisma.Project$membersArgs<ExtArgs> members?: boolean | Prisma.Project$membersArgs<ExtArgs>
@@ -1058,6 +1169,12 @@ export type ProjectInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs
tasks?: boolean | Prisma.Project$tasksArgs<ExtArgs> tasks?: boolean | Prisma.Project$tasksArgs<ExtArgs>
_count?: boolean | Prisma.ProjectCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.ProjectCountOutputTypeDefaultArgs<ExtArgs>
} }
export type ProjectIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
owner?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}
export type ProjectIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
owner?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}
export type $ProjectPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $ProjectPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "Project" name: "Project"
@@ -1069,6 +1186,8 @@ export type $ProjectPayload<ExtArgs extends runtime.Types.Extensions.InternalArg
} }
scalars: runtime.Types.Extensions.GetPayloadResult<{ scalars: runtime.Types.Extensions.GetPayloadResult<{
id: number id: number
uuid: string
code: string
name: string name: string
ownerId: number ownerId: number
isPersonal: boolean isPersonal: boolean
@@ -1196,6 +1315,30 @@ export interface ProjectDelegate<ExtArgs extends runtime.Types.Extensions.Intern
*/ */
createMany<T extends ProjectCreateManyArgs>(args?: Prisma.SelectSubset<T, ProjectCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends ProjectCreateManyArgs>(args?: Prisma.SelectSubset<T, ProjectCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many Projects and returns the data saved in the database.
* @param {ProjectCreateManyAndReturnArgs} args - Arguments to create many Projects.
* @example
* // Create many Projects
* const project = await prisma.project.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many Projects and only return the `id`
* const projectWithIdOnly = await prisma.project.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<T extends ProjectCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, ProjectCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ProjectPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a Project. * Delete a Project.
* @param {ProjectDeleteArgs} args - Arguments to delete one Project. * @param {ProjectDeleteArgs} args - Arguments to delete one Project.
@@ -1260,6 +1403,36 @@ export interface ProjectDelegate<ExtArgs extends runtime.Types.Extensions.Intern
*/ */
updateMany<T extends ProjectUpdateManyArgs>(args: Prisma.SelectSubset<T, ProjectUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends ProjectUpdateManyArgs>(args: Prisma.SelectSubset<T, ProjectUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more Projects and returns the data updated in the database.
* @param {ProjectUpdateManyAndReturnArgs} args - Arguments to update many Projects.
* @example
* // Update many Projects
* const project = await prisma.project.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more Projects and only return the `id`
* const projectWithIdOnly = await prisma.project.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<T extends ProjectUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, ProjectUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ProjectPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one Project. * Create or update one Project.
* @param {ProjectUpsertArgs} args - Arguments to update or create a Project. * @param {ProjectUpsertArgs} args - Arguments to update or create a Project.
@@ -1453,6 +1626,8 @@ export interface Prisma__ProjectClient<T, Null = never, ExtArgs extends runtime.
*/ */
export interface ProjectFieldRefs { export interface ProjectFieldRefs {
readonly id: Prisma.FieldRef<"Project", 'Int'> readonly id: Prisma.FieldRef<"Project", 'Int'>
readonly uuid: Prisma.FieldRef<"Project", 'String'>
readonly code: Prisma.FieldRef<"Project", 'String'>
readonly name: Prisma.FieldRef<"Project", 'String'> readonly name: Prisma.FieldRef<"Project", 'String'>
readonly ownerId: Prisma.FieldRef<"Project", 'Int'> readonly ownerId: Prisma.FieldRef<"Project", 'Int'>
readonly isPersonal: Prisma.FieldRef<"Project", 'Boolean'> readonly isPersonal: Prisma.FieldRef<"Project", 'Boolean'>
@@ -1700,6 +1875,29 @@ export type ProjectCreateManyArgs<ExtArgs extends runtime.Types.Extensions.Inter
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* Project createManyAndReturn
*/
export type ProjectCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Project
*/
select?: Prisma.ProjectSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Project
*/
omit?: Prisma.ProjectOmit<ExtArgs> | null
/**
* The data used to create many Projects.
*/
data: Prisma.ProjectCreateManyInput | Prisma.ProjectCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.ProjectIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* Project update * Project update
*/ */
@@ -1744,6 +1942,36 @@ export type ProjectUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.Inter
limit?: number limit?: number
} }
/**
* Project updateManyAndReturn
*/
export type ProjectUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Project
*/
select?: Prisma.ProjectSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Project
*/
omit?: Prisma.ProjectOmit<ExtArgs> | null
/**
* The data used to update Projects.
*/
data: Prisma.XOR<Prisma.ProjectUpdateManyMutationInput, Prisma.ProjectUncheckedUpdateManyInput>
/**
* Filter which Projects to update
*/
where?: Prisma.ProjectWhereInput
/**
* Limit how many Projects to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.ProjectIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* Project upsert * Project upsert
*/ */
+217 -9
View File
@@ -40,6 +40,8 @@ export type ProjectMemberSumAggregateOutputType = {
export type ProjectMemberMinAggregateOutputType = { export type ProjectMemberMinAggregateOutputType = {
id: number | null id: number | null
uuid: string | null
projectUuid: string | null
projectId: number | null projectId: number | null
userId: number | null userId: number | null
permission: string | null permission: string | null
@@ -48,6 +50,8 @@ export type ProjectMemberMinAggregateOutputType = {
export type ProjectMemberMaxAggregateOutputType = { export type ProjectMemberMaxAggregateOutputType = {
id: number | null id: number | null
uuid: string | null
projectUuid: string | null
projectId: number | null projectId: number | null
userId: number | null userId: number | null
permission: string | null permission: string | null
@@ -56,6 +60,8 @@ export type ProjectMemberMaxAggregateOutputType = {
export type ProjectMemberCountAggregateOutputType = { export type ProjectMemberCountAggregateOutputType = {
id: number id: number
uuid: number
projectUuid: number
projectId: number projectId: number
userId: number userId: number
permission: number permission: number
@@ -78,6 +84,8 @@ export type ProjectMemberSumAggregateInputType = {
export type ProjectMemberMinAggregateInputType = { export type ProjectMemberMinAggregateInputType = {
id?: true id?: true
uuid?: true
projectUuid?: true
projectId?: true projectId?: true
userId?: true userId?: true
permission?: true permission?: true
@@ -86,6 +94,8 @@ export type ProjectMemberMinAggregateInputType = {
export type ProjectMemberMaxAggregateInputType = { export type ProjectMemberMaxAggregateInputType = {
id?: true id?: true
uuid?: true
projectUuid?: true
projectId?: true projectId?: true
userId?: true userId?: true
permission?: true permission?: true
@@ -94,6 +104,8 @@ export type ProjectMemberMaxAggregateInputType = {
export type ProjectMemberCountAggregateInputType = { export type ProjectMemberCountAggregateInputType = {
id?: true id?: true
uuid?: true
projectUuid?: true
projectId?: true projectId?: true
userId?: true userId?: true
permission?: true permission?: true
@@ -189,6 +201,8 @@ export type ProjectMemberGroupByArgs<ExtArgs extends runtime.Types.Extensions.In
export type ProjectMemberGroupByOutputType = { export type ProjectMemberGroupByOutputType = {
id: number id: number
uuid: string
projectUuid: string | null
projectId: number projectId: number
userId: number userId: number
permission: string permission: string
@@ -220,6 +234,8 @@ export type ProjectMemberWhereInput = {
OR?: Prisma.ProjectMemberWhereInput[] OR?: Prisma.ProjectMemberWhereInput[]
NOT?: Prisma.ProjectMemberWhereInput | Prisma.ProjectMemberWhereInput[] NOT?: Prisma.ProjectMemberWhereInput | Prisma.ProjectMemberWhereInput[]
id?: Prisma.IntFilter<"ProjectMember"> | number id?: Prisma.IntFilter<"ProjectMember"> | number
uuid?: Prisma.StringFilter<"ProjectMember"> | string
projectUuid?: Prisma.StringNullableFilter<"ProjectMember"> | string | null
projectId?: Prisma.IntFilter<"ProjectMember"> | number projectId?: Prisma.IntFilter<"ProjectMember"> | number
userId?: Prisma.IntFilter<"ProjectMember"> | number userId?: Prisma.IntFilter<"ProjectMember"> | number
permission?: Prisma.StringFilter<"ProjectMember"> | string permission?: Prisma.StringFilter<"ProjectMember"> | string
@@ -230,31 +246,36 @@ export type ProjectMemberWhereInput = {
export type ProjectMemberOrderByWithRelationInput = { export type ProjectMemberOrderByWithRelationInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
projectUuid?: Prisma.SortOrderInput | Prisma.SortOrder
projectId?: Prisma.SortOrder projectId?: Prisma.SortOrder
userId?: Prisma.SortOrder userId?: Prisma.SortOrder
permission?: Prisma.SortOrder permission?: Prisma.SortOrder
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
project?: Prisma.ProjectOrderByWithRelationInput project?: Prisma.ProjectOrderByWithRelationInput
user?: Prisma.UserOrderByWithRelationInput user?: Prisma.UserOrderByWithRelationInput
_relevance?: Prisma.ProjectMemberOrderByRelevanceInput
} }
export type ProjectMemberWhereUniqueInput = Prisma.AtLeast<{ export type ProjectMemberWhereUniqueInput = Prisma.AtLeast<{
id?: number id?: number
uuid?: string
projectId_userId?: Prisma.ProjectMemberProjectIdUserIdCompoundUniqueInput projectId_userId?: Prisma.ProjectMemberProjectIdUserIdCompoundUniqueInput
AND?: Prisma.ProjectMemberWhereInput | Prisma.ProjectMemberWhereInput[] AND?: Prisma.ProjectMemberWhereInput | Prisma.ProjectMemberWhereInput[]
OR?: Prisma.ProjectMemberWhereInput[] OR?: Prisma.ProjectMemberWhereInput[]
NOT?: Prisma.ProjectMemberWhereInput | Prisma.ProjectMemberWhereInput[] NOT?: Prisma.ProjectMemberWhereInput | Prisma.ProjectMemberWhereInput[]
projectUuid?: Prisma.StringNullableFilter<"ProjectMember"> | string | null
projectId?: Prisma.IntFilter<"ProjectMember"> | number projectId?: Prisma.IntFilter<"ProjectMember"> | number
userId?: Prisma.IntFilter<"ProjectMember"> | number userId?: Prisma.IntFilter<"ProjectMember"> | number
permission?: Prisma.StringFilter<"ProjectMember"> | string permission?: Prisma.StringFilter<"ProjectMember"> | string
createdAt?: Prisma.DateTimeFilter<"ProjectMember"> | Date | string createdAt?: Prisma.DateTimeFilter<"ProjectMember"> | Date | string
project?: Prisma.XOR<Prisma.ProjectScalarRelationFilter, Prisma.ProjectWhereInput> project?: Prisma.XOR<Prisma.ProjectScalarRelationFilter, Prisma.ProjectWhereInput>
user?: Prisma.XOR<Prisma.UserScalarRelationFilter, Prisma.UserWhereInput> user?: Prisma.XOR<Prisma.UserScalarRelationFilter, Prisma.UserWhereInput>
}, "id" | "projectId_userId"> }, "id" | "uuid" | "projectId_userId">
export type ProjectMemberOrderByWithAggregationInput = { export type ProjectMemberOrderByWithAggregationInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
projectUuid?: Prisma.SortOrderInput | Prisma.SortOrder
projectId?: Prisma.SortOrder projectId?: Prisma.SortOrder
userId?: Prisma.SortOrder userId?: Prisma.SortOrder
permission?: Prisma.SortOrder permission?: Prisma.SortOrder
@@ -271,6 +292,8 @@ export type ProjectMemberScalarWhereWithAggregatesInput = {
OR?: Prisma.ProjectMemberScalarWhereWithAggregatesInput[] OR?: Prisma.ProjectMemberScalarWhereWithAggregatesInput[]
NOT?: Prisma.ProjectMemberScalarWhereWithAggregatesInput | Prisma.ProjectMemberScalarWhereWithAggregatesInput[] NOT?: Prisma.ProjectMemberScalarWhereWithAggregatesInput | Prisma.ProjectMemberScalarWhereWithAggregatesInput[]
id?: Prisma.IntWithAggregatesFilter<"ProjectMember"> | number id?: Prisma.IntWithAggregatesFilter<"ProjectMember"> | number
uuid?: Prisma.StringWithAggregatesFilter<"ProjectMember"> | string
projectUuid?: Prisma.StringNullableWithAggregatesFilter<"ProjectMember"> | string | null
projectId?: Prisma.IntWithAggregatesFilter<"ProjectMember"> | number projectId?: Prisma.IntWithAggregatesFilter<"ProjectMember"> | number
userId?: Prisma.IntWithAggregatesFilter<"ProjectMember"> | number userId?: Prisma.IntWithAggregatesFilter<"ProjectMember"> | number
permission?: Prisma.StringWithAggregatesFilter<"ProjectMember"> | string permission?: Prisma.StringWithAggregatesFilter<"ProjectMember"> | string
@@ -278,6 +301,8 @@ export type ProjectMemberScalarWhereWithAggregatesInput = {
} }
export type ProjectMemberCreateInput = { export type ProjectMemberCreateInput = {
uuid: string
projectUuid?: string | null
permission?: string permission?: string
createdAt?: Date | string createdAt?: Date | string
project: Prisma.ProjectCreateNestedOneWithoutMembersInput project: Prisma.ProjectCreateNestedOneWithoutMembersInput
@@ -286,6 +311,8 @@ export type ProjectMemberCreateInput = {
export type ProjectMemberUncheckedCreateInput = { export type ProjectMemberUncheckedCreateInput = {
id?: number id?: number
uuid: string
projectUuid?: string | null
projectId: number projectId: number
userId: number userId: number
permission?: string permission?: string
@@ -293,6 +320,8 @@ export type ProjectMemberUncheckedCreateInput = {
} }
export type ProjectMemberUpdateInput = { export type ProjectMemberUpdateInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
permission?: Prisma.StringFieldUpdateOperationsInput | string permission?: Prisma.StringFieldUpdateOperationsInput | string
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
project?: Prisma.ProjectUpdateOneRequiredWithoutMembersNestedInput project?: Prisma.ProjectUpdateOneRequiredWithoutMembersNestedInput
@@ -301,6 +330,8 @@ export type ProjectMemberUpdateInput = {
export type ProjectMemberUncheckedUpdateInput = { export type ProjectMemberUncheckedUpdateInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
projectId?: Prisma.IntFieldUpdateOperationsInput | number projectId?: Prisma.IntFieldUpdateOperationsInput | number
userId?: Prisma.IntFieldUpdateOperationsInput | number userId?: Prisma.IntFieldUpdateOperationsInput | number
permission?: Prisma.StringFieldUpdateOperationsInput | string permission?: Prisma.StringFieldUpdateOperationsInput | string
@@ -309,6 +340,8 @@ export type ProjectMemberUncheckedUpdateInput = {
export type ProjectMemberCreateManyInput = { export type ProjectMemberCreateManyInput = {
id?: number id?: number
uuid: string
projectUuid?: string | null
projectId: number projectId: number
userId: number userId: number
permission?: string permission?: string
@@ -316,12 +349,16 @@ export type ProjectMemberCreateManyInput = {
} }
export type ProjectMemberUpdateManyMutationInput = { export type ProjectMemberUpdateManyMutationInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
permission?: Prisma.StringFieldUpdateOperationsInput | string permission?: Prisma.StringFieldUpdateOperationsInput | string
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type ProjectMemberUncheckedUpdateManyInput = { export type ProjectMemberUncheckedUpdateManyInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
projectId?: Prisma.IntFieldUpdateOperationsInput | number projectId?: Prisma.IntFieldUpdateOperationsInput | number
userId?: Prisma.IntFieldUpdateOperationsInput | number userId?: Prisma.IntFieldUpdateOperationsInput | number
permission?: Prisma.StringFieldUpdateOperationsInput | string permission?: Prisma.StringFieldUpdateOperationsInput | string
@@ -338,12 +375,6 @@ export type ProjectMemberOrderByRelationAggregateInput = {
_count?: Prisma.SortOrder _count?: Prisma.SortOrder
} }
export type ProjectMemberOrderByRelevanceInput = {
fields: Prisma.ProjectMemberOrderByRelevanceFieldEnum | Prisma.ProjectMemberOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type ProjectMemberProjectIdUserIdCompoundUniqueInput = { export type ProjectMemberProjectIdUserIdCompoundUniqueInput = {
projectId: number projectId: number
userId: number userId: number
@@ -351,6 +382,8 @@ export type ProjectMemberProjectIdUserIdCompoundUniqueInput = {
export type ProjectMemberCountOrderByAggregateInput = { export type ProjectMemberCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
projectUuid?: Prisma.SortOrder
projectId?: Prisma.SortOrder projectId?: Prisma.SortOrder
userId?: Prisma.SortOrder userId?: Prisma.SortOrder
permission?: Prisma.SortOrder permission?: Prisma.SortOrder
@@ -365,6 +398,8 @@ export type ProjectMemberAvgOrderByAggregateInput = {
export type ProjectMemberMaxOrderByAggregateInput = { export type ProjectMemberMaxOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
projectUuid?: Prisma.SortOrder
projectId?: Prisma.SortOrder projectId?: Prisma.SortOrder
userId?: Prisma.SortOrder userId?: Prisma.SortOrder
permission?: Prisma.SortOrder permission?: Prisma.SortOrder
@@ -373,6 +408,8 @@ export type ProjectMemberMaxOrderByAggregateInput = {
export type ProjectMemberMinOrderByAggregateInput = { export type ProjectMemberMinOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
projectUuid?: Prisma.SortOrder
projectId?: Prisma.SortOrder projectId?: Prisma.SortOrder
userId?: Prisma.SortOrder userId?: Prisma.SortOrder
permission?: Prisma.SortOrder permission?: Prisma.SortOrder
@@ -470,6 +507,8 @@ export type ProjectMemberUncheckedUpdateManyWithoutProjectNestedInput = {
} }
export type ProjectMemberCreateWithoutUserInput = { export type ProjectMemberCreateWithoutUserInput = {
uuid: string
projectUuid?: string | null
permission?: string permission?: string
createdAt?: Date | string createdAt?: Date | string
project: Prisma.ProjectCreateNestedOneWithoutMembersInput project: Prisma.ProjectCreateNestedOneWithoutMembersInput
@@ -477,6 +516,8 @@ export type ProjectMemberCreateWithoutUserInput = {
export type ProjectMemberUncheckedCreateWithoutUserInput = { export type ProjectMemberUncheckedCreateWithoutUserInput = {
id?: number id?: number
uuid: string
projectUuid?: string | null
projectId: number projectId: number
permission?: string permission?: string
createdAt?: Date | string createdAt?: Date | string
@@ -513,6 +554,8 @@ export type ProjectMemberScalarWhereInput = {
OR?: Prisma.ProjectMemberScalarWhereInput[] OR?: Prisma.ProjectMemberScalarWhereInput[]
NOT?: Prisma.ProjectMemberScalarWhereInput | Prisma.ProjectMemberScalarWhereInput[] NOT?: Prisma.ProjectMemberScalarWhereInput | Prisma.ProjectMemberScalarWhereInput[]
id?: Prisma.IntFilter<"ProjectMember"> | number id?: Prisma.IntFilter<"ProjectMember"> | number
uuid?: Prisma.StringFilter<"ProjectMember"> | string
projectUuid?: Prisma.StringNullableFilter<"ProjectMember"> | string | null
projectId?: Prisma.IntFilter<"ProjectMember"> | number projectId?: Prisma.IntFilter<"ProjectMember"> | number
userId?: Prisma.IntFilter<"ProjectMember"> | number userId?: Prisma.IntFilter<"ProjectMember"> | number
permission?: Prisma.StringFilter<"ProjectMember"> | string permission?: Prisma.StringFilter<"ProjectMember"> | string
@@ -520,6 +563,8 @@ export type ProjectMemberScalarWhereInput = {
} }
export type ProjectMemberCreateWithoutProjectInput = { export type ProjectMemberCreateWithoutProjectInput = {
uuid: string
projectUuid?: string | null
permission?: string permission?: string
createdAt?: Date | string createdAt?: Date | string
user: Prisma.UserCreateNestedOneWithoutProjectMembersInput user: Prisma.UserCreateNestedOneWithoutProjectMembersInput
@@ -527,6 +572,8 @@ export type ProjectMemberCreateWithoutProjectInput = {
export type ProjectMemberUncheckedCreateWithoutProjectInput = { export type ProjectMemberUncheckedCreateWithoutProjectInput = {
id?: number id?: number
uuid: string
projectUuid?: string | null
userId: number userId: number
permission?: string permission?: string
createdAt?: Date | string createdAt?: Date | string
@@ -560,12 +607,16 @@ export type ProjectMemberUpdateManyWithWhereWithoutProjectInput = {
export type ProjectMemberCreateManyUserInput = { export type ProjectMemberCreateManyUserInput = {
id?: number id?: number
uuid: string
projectUuid?: string | null
projectId: number projectId: number
permission?: string permission?: string
createdAt?: Date | string createdAt?: Date | string
} }
export type ProjectMemberUpdateWithoutUserInput = { export type ProjectMemberUpdateWithoutUserInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
permission?: Prisma.StringFieldUpdateOperationsInput | string permission?: Prisma.StringFieldUpdateOperationsInput | string
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
project?: Prisma.ProjectUpdateOneRequiredWithoutMembersNestedInput project?: Prisma.ProjectUpdateOneRequiredWithoutMembersNestedInput
@@ -573,6 +624,8 @@ export type ProjectMemberUpdateWithoutUserInput = {
export type ProjectMemberUncheckedUpdateWithoutUserInput = { export type ProjectMemberUncheckedUpdateWithoutUserInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
projectId?: Prisma.IntFieldUpdateOperationsInput | number projectId?: Prisma.IntFieldUpdateOperationsInput | number
permission?: Prisma.StringFieldUpdateOperationsInput | string permission?: Prisma.StringFieldUpdateOperationsInput | string
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
@@ -580,6 +633,8 @@ export type ProjectMemberUncheckedUpdateWithoutUserInput = {
export type ProjectMemberUncheckedUpdateManyWithoutUserInput = { export type ProjectMemberUncheckedUpdateManyWithoutUserInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
projectId?: Prisma.IntFieldUpdateOperationsInput | number projectId?: Prisma.IntFieldUpdateOperationsInput | number
permission?: Prisma.StringFieldUpdateOperationsInput | string permission?: Prisma.StringFieldUpdateOperationsInput | string
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
@@ -587,12 +642,16 @@ export type ProjectMemberUncheckedUpdateManyWithoutUserInput = {
export type ProjectMemberCreateManyProjectInput = { export type ProjectMemberCreateManyProjectInput = {
id?: number id?: number
uuid: string
projectUuid?: string | null
userId: number userId: number
permission?: string permission?: string
createdAt?: Date | string createdAt?: Date | string
} }
export type ProjectMemberUpdateWithoutProjectInput = { export type ProjectMemberUpdateWithoutProjectInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
permission?: Prisma.StringFieldUpdateOperationsInput | string permission?: Prisma.StringFieldUpdateOperationsInput | string
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
user?: Prisma.UserUpdateOneRequiredWithoutProjectMembersNestedInput user?: Prisma.UserUpdateOneRequiredWithoutProjectMembersNestedInput
@@ -600,6 +659,8 @@ export type ProjectMemberUpdateWithoutProjectInput = {
export type ProjectMemberUncheckedUpdateWithoutProjectInput = { export type ProjectMemberUncheckedUpdateWithoutProjectInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
userId?: Prisma.IntFieldUpdateOperationsInput | number userId?: Prisma.IntFieldUpdateOperationsInput | number
permission?: Prisma.StringFieldUpdateOperationsInput | string permission?: Prisma.StringFieldUpdateOperationsInput | string
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
@@ -607,6 +668,8 @@ export type ProjectMemberUncheckedUpdateWithoutProjectInput = {
export type ProjectMemberUncheckedUpdateManyWithoutProjectInput = { export type ProjectMemberUncheckedUpdateManyWithoutProjectInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
projectUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
userId?: Prisma.IntFieldUpdateOperationsInput | number userId?: Prisma.IntFieldUpdateOperationsInput | number
permission?: Prisma.StringFieldUpdateOperationsInput | string permission?: Prisma.StringFieldUpdateOperationsInput | string
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
@@ -616,6 +679,8 @@ export type ProjectMemberUncheckedUpdateManyWithoutProjectInput = {
export type ProjectMemberSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{ export type ProjectMemberSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean id?: boolean
uuid?: boolean
projectUuid?: boolean
projectId?: boolean projectId?: boolean
userId?: boolean userId?: boolean
permission?: boolean permission?: boolean
@@ -624,21 +689,53 @@ export type ProjectMemberSelect<ExtArgs extends runtime.Types.Extensions.Interna
user?: boolean | Prisma.UserDefaultArgs<ExtArgs> user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["projectMember"]> }, ExtArgs["result"]["projectMember"]>
export type ProjectMemberSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
projectUuid?: boolean
projectId?: boolean
userId?: boolean
permission?: boolean
createdAt?: boolean
project?: boolean | Prisma.ProjectDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["projectMember"]>
export type ProjectMemberSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
projectUuid?: boolean
projectId?: boolean
userId?: boolean
permission?: boolean
createdAt?: boolean
project?: boolean | Prisma.ProjectDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["projectMember"]>
export type ProjectMemberSelectScalar = { export type ProjectMemberSelectScalar = {
id?: boolean id?: boolean
uuid?: boolean
projectUuid?: boolean
projectId?: boolean projectId?: boolean
userId?: boolean userId?: boolean
permission?: boolean permission?: boolean
createdAt?: boolean createdAt?: boolean
} }
export type ProjectMemberOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "projectId" | "userId" | "permission" | "createdAt", ExtArgs["result"]["projectMember"]> export type ProjectMemberOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "uuid" | "projectUuid" | "projectId" | "userId" | "permission" | "createdAt", ExtArgs["result"]["projectMember"]>
export type ProjectMemberInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type ProjectMemberInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
project?: boolean | Prisma.ProjectDefaultArgs<ExtArgs> project?: boolean | Prisma.ProjectDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs> user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
} }
export type ProjectMemberIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
project?: boolean | Prisma.ProjectDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}
export type ProjectMemberIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
project?: boolean | Prisma.ProjectDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}
export type $ProjectMemberPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $ProjectMemberPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "ProjectMember" name: "ProjectMember"
@@ -648,6 +745,8 @@ export type $ProjectMemberPayload<ExtArgs extends runtime.Types.Extensions.Inter
} }
scalars: runtime.Types.Extensions.GetPayloadResult<{ scalars: runtime.Types.Extensions.GetPayloadResult<{
id: number id: number
uuid: string
projectUuid: string | null
projectId: number projectId: number
userId: number userId: number
permission: string permission: string
@@ -769,6 +868,30 @@ export interface ProjectMemberDelegate<ExtArgs extends runtime.Types.Extensions.
*/ */
createMany<T extends ProjectMemberCreateManyArgs>(args?: Prisma.SelectSubset<T, ProjectMemberCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends ProjectMemberCreateManyArgs>(args?: Prisma.SelectSubset<T, ProjectMemberCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many ProjectMembers and returns the data saved in the database.
* @param {ProjectMemberCreateManyAndReturnArgs} args - Arguments to create many ProjectMembers.
* @example
* // Create many ProjectMembers
* const projectMember = await prisma.projectMember.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many ProjectMembers and only return the `id`
* const projectMemberWithIdOnly = await prisma.projectMember.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<T extends ProjectMemberCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, ProjectMemberCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ProjectMemberPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a ProjectMember. * Delete a ProjectMember.
* @param {ProjectMemberDeleteArgs} args - Arguments to delete one ProjectMember. * @param {ProjectMemberDeleteArgs} args - Arguments to delete one ProjectMember.
@@ -833,6 +956,36 @@ export interface ProjectMemberDelegate<ExtArgs extends runtime.Types.Extensions.
*/ */
updateMany<T extends ProjectMemberUpdateManyArgs>(args: Prisma.SelectSubset<T, ProjectMemberUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends ProjectMemberUpdateManyArgs>(args: Prisma.SelectSubset<T, ProjectMemberUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more ProjectMembers and returns the data updated in the database.
* @param {ProjectMemberUpdateManyAndReturnArgs} args - Arguments to update many ProjectMembers.
* @example
* // Update many ProjectMembers
* const projectMember = await prisma.projectMember.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more ProjectMembers and only return the `id`
* const projectMemberWithIdOnly = await prisma.projectMember.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<T extends ProjectMemberUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, ProjectMemberUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ProjectMemberPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one ProjectMember. * Create or update one ProjectMember.
* @param {ProjectMemberUpsertArgs} args - Arguments to update or create a ProjectMember. * @param {ProjectMemberUpsertArgs} args - Arguments to update or create a ProjectMember.
@@ -1024,6 +1177,8 @@ export interface Prisma__ProjectMemberClient<T, Null = never, ExtArgs extends ru
*/ */
export interface ProjectMemberFieldRefs { export interface ProjectMemberFieldRefs {
readonly id: Prisma.FieldRef<"ProjectMember", 'Int'> readonly id: Prisma.FieldRef<"ProjectMember", 'Int'>
readonly uuid: Prisma.FieldRef<"ProjectMember", 'String'>
readonly projectUuid: Prisma.FieldRef<"ProjectMember", 'String'>
readonly projectId: Prisma.FieldRef<"ProjectMember", 'Int'> readonly projectId: Prisma.FieldRef<"ProjectMember", 'Int'>
readonly userId: Prisma.FieldRef<"ProjectMember", 'Int'> readonly userId: Prisma.FieldRef<"ProjectMember", 'Int'>
readonly permission: Prisma.FieldRef<"ProjectMember", 'String'> readonly permission: Prisma.FieldRef<"ProjectMember", 'String'>
@@ -1265,6 +1420,29 @@ export type ProjectMemberCreateManyArgs<ExtArgs extends runtime.Types.Extensions
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* ProjectMember createManyAndReturn
*/
export type ProjectMemberCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the ProjectMember
*/
select?: Prisma.ProjectMemberSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the ProjectMember
*/
omit?: Prisma.ProjectMemberOmit<ExtArgs> | null
/**
* The data used to create many ProjectMembers.
*/
data: Prisma.ProjectMemberCreateManyInput | Prisma.ProjectMemberCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.ProjectMemberIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* ProjectMember update * ProjectMember update
*/ */
@@ -1309,6 +1487,36 @@ export type ProjectMemberUpdateManyArgs<ExtArgs extends runtime.Types.Extensions
limit?: number limit?: number
} }
/**
* ProjectMember updateManyAndReturn
*/
export type ProjectMemberUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the ProjectMember
*/
select?: Prisma.ProjectMemberSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the ProjectMember
*/
omit?: Prisma.ProjectMemberOmit<ExtArgs> | null
/**
* The data used to update ProjectMembers.
*/
data: Prisma.XOR<Prisma.ProjectMemberUpdateManyMutationInput, Prisma.ProjectMemberUncheckedUpdateManyInput>
/**
* Filter which ProjectMembers to update
*/
where?: Prisma.ProjectMemberWhereInput
/**
* Limit how many ProjectMembers to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.ProjectMemberIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* ProjectMember upsert * ProjectMember upsert
*/ */
+117 -7
View File
@@ -238,7 +238,6 @@ export type ScraperCacheOrderByWithRelationInput = {
metadata?: Prisma.SortOrderInput | Prisma.SortOrder metadata?: Prisma.SortOrderInput | Prisma.SortOrder
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
_relevance?: Prisma.ScraperCacheOrderByRelevanceInput
} }
export type ScraperCacheWhereUniqueInput = Prisma.AtLeast<{ export type ScraperCacheWhereUniqueInput = Prisma.AtLeast<{
@@ -349,12 +348,6 @@ export type ScraperCacheUncheckedUpdateManyInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type ScraperCacheOrderByRelevanceInput = {
fields: Prisma.ScraperCacheOrderByRelevanceFieldEnum | Prisma.ScraperCacheOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type ScraperCacheCountOrderByAggregateInput = { export type ScraperCacheCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
scraperName?: Prisma.SortOrder scraperName?: Prisma.SortOrder
@@ -403,7 +396,25 @@ export type ScraperCacheSelect<ExtArgs extends runtime.Types.Extensions.Internal
updatedAt?: boolean updatedAt?: boolean
}, ExtArgs["result"]["scraperCache"]> }, ExtArgs["result"]["scraperCache"]>
export type ScraperCacheSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
scraperName?: boolean
lastDataHash?: boolean
lastUpdateAt?: boolean
metadata?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["scraperCache"]>
export type ScraperCacheSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
scraperName?: boolean
lastDataHash?: boolean
lastUpdateAt?: boolean
metadata?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["scraperCache"]>
export type ScraperCacheSelectScalar = { export type ScraperCacheSelectScalar = {
id?: boolean id?: boolean
@@ -545,6 +556,30 @@ export interface ScraperCacheDelegate<ExtArgs extends runtime.Types.Extensions.I
*/ */
createMany<T extends ScraperCacheCreateManyArgs>(args?: Prisma.SelectSubset<T, ScraperCacheCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends ScraperCacheCreateManyArgs>(args?: Prisma.SelectSubset<T, ScraperCacheCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many ScraperCaches and returns the data saved in the database.
* @param {ScraperCacheCreateManyAndReturnArgs} args - Arguments to create many ScraperCaches.
* @example
* // Create many ScraperCaches
* const scraperCache = await prisma.scraperCache.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many ScraperCaches and only return the `id`
* const scraperCacheWithIdOnly = await prisma.scraperCache.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<T extends ScraperCacheCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, ScraperCacheCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ScraperCachePayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a ScraperCache. * Delete a ScraperCache.
* @param {ScraperCacheDeleteArgs} args - Arguments to delete one ScraperCache. * @param {ScraperCacheDeleteArgs} args - Arguments to delete one ScraperCache.
@@ -609,6 +644,36 @@ export interface ScraperCacheDelegate<ExtArgs extends runtime.Types.Extensions.I
*/ */
updateMany<T extends ScraperCacheUpdateManyArgs>(args: Prisma.SelectSubset<T, ScraperCacheUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends ScraperCacheUpdateManyArgs>(args: Prisma.SelectSubset<T, ScraperCacheUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more ScraperCaches and returns the data updated in the database.
* @param {ScraperCacheUpdateManyAndReturnArgs} args - Arguments to update many ScraperCaches.
* @example
* // Update many ScraperCaches
* const scraperCache = await prisma.scraperCache.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more ScraperCaches and only return the `id`
* const scraperCacheWithIdOnly = await prisma.scraperCache.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<T extends ScraperCacheUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, ScraperCacheUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ScraperCachePayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one ScraperCache. * Create or update one ScraperCache.
* @param {ScraperCacheUpsertArgs} args - Arguments to update or create a ScraperCache. * @param {ScraperCacheUpsertArgs} args - Arguments to update or create a ScraperCache.
@@ -1017,6 +1082,25 @@ export type ScraperCacheCreateManyArgs<ExtArgs extends runtime.Types.Extensions.
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* ScraperCache createManyAndReturn
*/
export type ScraperCacheCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the ScraperCache
*/
select?: Prisma.ScraperCacheSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the ScraperCache
*/
omit?: Prisma.ScraperCacheOmit<ExtArgs> | null
/**
* The data used to create many ScraperCaches.
*/
data: Prisma.ScraperCacheCreateManyInput | Prisma.ScraperCacheCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* ScraperCache update * ScraperCache update
*/ */
@@ -1057,6 +1141,32 @@ export type ScraperCacheUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.
limit?: number limit?: number
} }
/**
* ScraperCache updateManyAndReturn
*/
export type ScraperCacheUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the ScraperCache
*/
select?: Prisma.ScraperCacheSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the ScraperCache
*/
omit?: Prisma.ScraperCacheOmit<ExtArgs> | null
/**
* The data used to update ScraperCaches.
*/
data: Prisma.XOR<Prisma.ScraperCacheUpdateManyMutationInput, Prisma.ScraperCacheUncheckedUpdateManyInput>
/**
* Filter which ScraperCaches to update
*/
where?: Prisma.ScraperCacheWhereInput
/**
* Limit how many ScraperCaches to update.
*/
limit?: number
}
/** /**
* ScraperCache upsert * ScraperCache upsert
*/ */
+153 -7
View File
@@ -464,7 +464,6 @@ export type ServerNodeOrderByWithRelationInput = {
recordedAt?: Prisma.SortOrder recordedAt?: Prisma.SortOrder
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
_relevance?: Prisma.ServerNodeOrderByRelevanceInput
} }
export type ServerNodeWhereUniqueInput = Prisma.AtLeast<{ export type ServerNodeWhereUniqueInput = Prisma.AtLeast<{
@@ -755,12 +754,6 @@ export type ServerNodeUncheckedUpdateManyInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type ServerNodeOrderByRelevanceInput = {
fields: Prisma.ServerNodeOrderByRelevanceFieldEnum | Prisma.ServerNodeOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type ServerNodeCountOrderByAggregateInput = { export type ServerNodeCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder uuid?: Prisma.SortOrder
@@ -921,7 +914,61 @@ export type ServerNodeSelect<ExtArgs extends runtime.Types.Extensions.InternalAr
updatedAt?: boolean updatedAt?: boolean
}, ExtArgs["result"]["serverNode"]> }, ExtArgs["result"]["serverNode"]>
export type ServerNodeSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
name?: boolean
cpuName?: boolean
os?: boolean
region?: boolean
memTotal?: boolean
diskTotal?: boolean
cpuCores?: boolean
cpuUsage?: boolean
ramUsed?: boolean
swapUsed?: boolean
load1?: boolean
load5?: boolean
load15?: boolean
diskUsed?: boolean
netIn?: boolean
netOut?: boolean
uptime?: boolean
process?: boolean
connections?: boolean
status?: boolean
recordedAt?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["serverNode"]>
export type ServerNodeSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
name?: boolean
cpuName?: boolean
os?: boolean
region?: boolean
memTotal?: boolean
diskTotal?: boolean
cpuCores?: boolean
cpuUsage?: boolean
ramUsed?: boolean
swapUsed?: boolean
load1?: boolean
load5?: boolean
load15?: boolean
diskUsed?: boolean
netIn?: boolean
netOut?: boolean
uptime?: boolean
process?: boolean
connections?: boolean
status?: boolean
recordedAt?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["serverNode"]>
export type ServerNodeSelectScalar = { export type ServerNodeSelectScalar = {
id?: boolean id?: boolean
@@ -1099,6 +1146,30 @@ export interface ServerNodeDelegate<ExtArgs extends runtime.Types.Extensions.Int
*/ */
createMany<T extends ServerNodeCreateManyArgs>(args?: Prisma.SelectSubset<T, ServerNodeCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends ServerNodeCreateManyArgs>(args?: Prisma.SelectSubset<T, ServerNodeCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many ServerNodes and returns the data saved in the database.
* @param {ServerNodeCreateManyAndReturnArgs} args - Arguments to create many ServerNodes.
* @example
* // Create many ServerNodes
* const serverNode = await prisma.serverNode.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many ServerNodes and only return the `id`
* const serverNodeWithIdOnly = await prisma.serverNode.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<T extends ServerNodeCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, ServerNodeCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ServerNodePayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a ServerNode. * Delete a ServerNode.
* @param {ServerNodeDeleteArgs} args - Arguments to delete one ServerNode. * @param {ServerNodeDeleteArgs} args - Arguments to delete one ServerNode.
@@ -1163,6 +1234,36 @@ export interface ServerNodeDelegate<ExtArgs extends runtime.Types.Extensions.Int
*/ */
updateMany<T extends ServerNodeUpdateManyArgs>(args: Prisma.SelectSubset<T, ServerNodeUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends ServerNodeUpdateManyArgs>(args: Prisma.SelectSubset<T, ServerNodeUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more ServerNodes and returns the data updated in the database.
* @param {ServerNodeUpdateManyAndReturnArgs} args - Arguments to update many ServerNodes.
* @example
* // Update many ServerNodes
* const serverNode = await prisma.serverNode.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more ServerNodes and only return the `id`
* const serverNodeWithIdOnly = await prisma.serverNode.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<T extends ServerNodeUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, ServerNodeUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ServerNodePayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one ServerNode. * Create or update one ServerNode.
* @param {ServerNodeUpsertArgs} args - Arguments to update or create a ServerNode. * @param {ServerNodeUpsertArgs} args - Arguments to update or create a ServerNode.
@@ -1589,6 +1690,25 @@ export type ServerNodeCreateManyArgs<ExtArgs extends runtime.Types.Extensions.In
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* ServerNode createManyAndReturn
*/
export type ServerNodeCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the ServerNode
*/
select?: Prisma.ServerNodeSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the ServerNode
*/
omit?: Prisma.ServerNodeOmit<ExtArgs> | null
/**
* The data used to create many ServerNodes.
*/
data: Prisma.ServerNodeCreateManyInput | Prisma.ServerNodeCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* ServerNode update * ServerNode update
*/ */
@@ -1629,6 +1749,32 @@ export type ServerNodeUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.In
limit?: number limit?: number
} }
/**
* ServerNode updateManyAndReturn
*/
export type ServerNodeUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the ServerNode
*/
select?: Prisma.ServerNodeSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the ServerNode
*/
omit?: Prisma.ServerNodeOmit<ExtArgs> | null
/**
* The data used to update ServerNodes.
*/
data: Prisma.XOR<Prisma.ServerNodeUpdateManyMutationInput, Prisma.ServerNodeUncheckedUpdateManyInput>
/**
* Filter which ServerNodes to update
*/
where?: Prisma.ServerNodeWhereInput
/**
* Limit how many ServerNodes to update.
*/
limit?: number
}
/** /**
* ServerNode upsert * ServerNode upsert
*/ */
+127 -7
View File
@@ -319,7 +319,6 @@ export type ServerNodeHistoryOrderByWithRelationInput = {
process?: Prisma.SortOrder process?: Prisma.SortOrder
connections?: Prisma.SortOrder connections?: Prisma.SortOrder
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
_relevance?: Prisma.ServerNodeHistoryOrderByRelevanceInput
} }
export type ServerNodeHistoryWhereUniqueInput = Prisma.AtLeast<{ export type ServerNodeHistoryWhereUniqueInput = Prisma.AtLeast<{
@@ -481,12 +480,6 @@ export type ServerNodeHistoryUncheckedUpdateManyInput = {
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type ServerNodeHistoryOrderByRelevanceInput = {
fields: Prisma.ServerNodeHistoryOrderByRelevanceFieldEnum | Prisma.ServerNodeHistoryOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type ServerNodeHistoryUuidPeriodCompoundUniqueInput = { export type ServerNodeHistoryUuidPeriodCompoundUniqueInput = {
uuid: string uuid: string
period: Date | string period: Date | string
@@ -578,7 +571,35 @@ export type ServerNodeHistorySelect<ExtArgs extends runtime.Types.Extensions.Int
createdAt?: boolean createdAt?: boolean
}, ExtArgs["result"]["serverNodeHistory"]> }, ExtArgs["result"]["serverNodeHistory"]>
export type ServerNodeHistorySelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
period?: boolean
cpu?: boolean
ram?: boolean
load?: boolean
disk?: boolean
netIn?: boolean
netOut?: boolean
process?: boolean
connections?: boolean
createdAt?: boolean
}, ExtArgs["result"]["serverNodeHistory"]>
export type ServerNodeHistorySelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
period?: boolean
cpu?: boolean
ram?: boolean
load?: boolean
disk?: boolean
netIn?: boolean
netOut?: boolean
process?: boolean
connections?: boolean
createdAt?: boolean
}, ExtArgs["result"]["serverNodeHistory"]>
export type ServerNodeHistorySelectScalar = { export type ServerNodeHistorySelectScalar = {
id?: boolean id?: boolean
@@ -730,6 +751,30 @@ export interface ServerNodeHistoryDelegate<ExtArgs extends runtime.Types.Extensi
*/ */
createMany<T extends ServerNodeHistoryCreateManyArgs>(args?: Prisma.SelectSubset<T, ServerNodeHistoryCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends ServerNodeHistoryCreateManyArgs>(args?: Prisma.SelectSubset<T, ServerNodeHistoryCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many ServerNodeHistories and returns the data saved in the database.
* @param {ServerNodeHistoryCreateManyAndReturnArgs} args - Arguments to create many ServerNodeHistories.
* @example
* // Create many ServerNodeHistories
* const serverNodeHistory = await prisma.serverNodeHistory.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many ServerNodeHistories and only return the `id`
* const serverNodeHistoryWithIdOnly = await prisma.serverNodeHistory.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<T extends ServerNodeHistoryCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, ServerNodeHistoryCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ServerNodeHistoryPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a ServerNodeHistory. * Delete a ServerNodeHistory.
* @param {ServerNodeHistoryDeleteArgs} args - Arguments to delete one ServerNodeHistory. * @param {ServerNodeHistoryDeleteArgs} args - Arguments to delete one ServerNodeHistory.
@@ -794,6 +839,36 @@ export interface ServerNodeHistoryDelegate<ExtArgs extends runtime.Types.Extensi
*/ */
updateMany<T extends ServerNodeHistoryUpdateManyArgs>(args: Prisma.SelectSubset<T, ServerNodeHistoryUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends ServerNodeHistoryUpdateManyArgs>(args: Prisma.SelectSubset<T, ServerNodeHistoryUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more ServerNodeHistories and returns the data updated in the database.
* @param {ServerNodeHistoryUpdateManyAndReturnArgs} args - Arguments to update many ServerNodeHistories.
* @example
* // Update many ServerNodeHistories
* const serverNodeHistory = await prisma.serverNodeHistory.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more ServerNodeHistories and only return the `id`
* const serverNodeHistoryWithIdOnly = await prisma.serverNodeHistory.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<T extends ServerNodeHistoryUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, ServerNodeHistoryUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ServerNodeHistoryPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one ServerNodeHistory. * Create or update one ServerNodeHistory.
* @param {ServerNodeHistoryUpsertArgs} args - Arguments to update or create a ServerNodeHistory. * @param {ServerNodeHistoryUpsertArgs} args - Arguments to update or create a ServerNodeHistory.
@@ -1207,6 +1282,25 @@ export type ServerNodeHistoryCreateManyArgs<ExtArgs extends runtime.Types.Extens
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* ServerNodeHistory createManyAndReturn
*/
export type ServerNodeHistoryCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the ServerNodeHistory
*/
select?: Prisma.ServerNodeHistorySelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the ServerNodeHistory
*/
omit?: Prisma.ServerNodeHistoryOmit<ExtArgs> | null
/**
* The data used to create many ServerNodeHistories.
*/
data: Prisma.ServerNodeHistoryCreateManyInput | Prisma.ServerNodeHistoryCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* ServerNodeHistory update * ServerNodeHistory update
*/ */
@@ -1247,6 +1341,32 @@ export type ServerNodeHistoryUpdateManyArgs<ExtArgs extends runtime.Types.Extens
limit?: number limit?: number
} }
/**
* ServerNodeHistory updateManyAndReturn
*/
export type ServerNodeHistoryUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the ServerNodeHistory
*/
select?: Prisma.ServerNodeHistorySelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the ServerNodeHistory
*/
omit?: Prisma.ServerNodeHistoryOmit<ExtArgs> | null
/**
* The data used to update ServerNodeHistories.
*/
data: Prisma.XOR<Prisma.ServerNodeHistoryUpdateManyMutationInput, Prisma.ServerNodeHistoryUncheckedUpdateManyInput>
/**
* Filter which ServerNodeHistories to update
*/
where?: Prisma.ServerNodeHistoryWhereInput
/**
* Limit how many ServerNodeHistories to update.
*/
limit?: number
}
/** /**
* ServerNodeHistory upsert * ServerNodeHistory upsert
*/ */
+121 -7
View File
@@ -264,7 +264,6 @@ export type ServiceCheckOrderByWithRelationInput = {
lastCheckAt?: Prisma.SortOrder lastCheckAt?: Prisma.SortOrder
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
_relevance?: Prisma.ServiceCheckOrderByRelevanceInput
} }
export type ServiceCheckWhereUniqueInput = Prisma.AtLeast<{ export type ServiceCheckWhereUniqueInput = Prisma.AtLeast<{
@@ -395,12 +394,6 @@ export type ServiceCheckUncheckedUpdateManyInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type ServiceCheckOrderByRelevanceInput = {
fields: Prisma.ServiceCheckOrderByRelevanceFieldEnum | Prisma.ServiceCheckOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type ServiceCheckCountOrderByAggregateInput = { export type ServiceCheckCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
@@ -461,7 +454,29 @@ export type ServiceCheckSelect<ExtArgs extends runtime.Types.Extensions.Internal
updatedAt?: boolean updatedAt?: boolean
}, ExtArgs["result"]["serviceCheck"]> }, ExtArgs["result"]["serviceCheck"]>
export type ServiceCheckSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
name?: boolean
url?: boolean
status?: boolean
latencyMs?: boolean
message?: boolean
lastCheckAt?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["serviceCheck"]>
export type ServiceCheckSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
name?: boolean
url?: boolean
status?: boolean
latencyMs?: boolean
message?: boolean
lastCheckAt?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["serviceCheck"]>
export type ServiceCheckSelectScalar = { export type ServiceCheckSelectScalar = {
id?: boolean id?: boolean
@@ -607,6 +622,30 @@ export interface ServiceCheckDelegate<ExtArgs extends runtime.Types.Extensions.I
*/ */
createMany<T extends ServiceCheckCreateManyArgs>(args?: Prisma.SelectSubset<T, ServiceCheckCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends ServiceCheckCreateManyArgs>(args?: Prisma.SelectSubset<T, ServiceCheckCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many ServiceChecks and returns the data saved in the database.
* @param {ServiceCheckCreateManyAndReturnArgs} args - Arguments to create many ServiceChecks.
* @example
* // Create many ServiceChecks
* const serviceCheck = await prisma.serviceCheck.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many ServiceChecks and only return the `id`
* const serviceCheckWithIdOnly = await prisma.serviceCheck.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<T extends ServiceCheckCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, ServiceCheckCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ServiceCheckPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a ServiceCheck. * Delete a ServiceCheck.
* @param {ServiceCheckDeleteArgs} args - Arguments to delete one ServiceCheck. * @param {ServiceCheckDeleteArgs} args - Arguments to delete one ServiceCheck.
@@ -671,6 +710,36 @@ export interface ServiceCheckDelegate<ExtArgs extends runtime.Types.Extensions.I
*/ */
updateMany<T extends ServiceCheckUpdateManyArgs>(args: Prisma.SelectSubset<T, ServiceCheckUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends ServiceCheckUpdateManyArgs>(args: Prisma.SelectSubset<T, ServiceCheckUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more ServiceChecks and returns the data updated in the database.
* @param {ServiceCheckUpdateManyAndReturnArgs} args - Arguments to update many ServiceChecks.
* @example
* // Update many ServiceChecks
* const serviceCheck = await prisma.serviceCheck.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more ServiceChecks and only return the `id`
* const serviceCheckWithIdOnly = await prisma.serviceCheck.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<T extends ServiceCheckUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, ServiceCheckUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ServiceCheckPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one ServiceCheck. * Create or update one ServiceCheck.
* @param {ServiceCheckUpsertArgs} args - Arguments to update or create a ServiceCheck. * @param {ServiceCheckUpsertArgs} args - Arguments to update or create a ServiceCheck.
@@ -1081,6 +1150,25 @@ export type ServiceCheckCreateManyArgs<ExtArgs extends runtime.Types.Extensions.
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* ServiceCheck createManyAndReturn
*/
export type ServiceCheckCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the ServiceCheck
*/
select?: Prisma.ServiceCheckSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the ServiceCheck
*/
omit?: Prisma.ServiceCheckOmit<ExtArgs> | null
/**
* The data used to create many ServiceChecks.
*/
data: Prisma.ServiceCheckCreateManyInput | Prisma.ServiceCheckCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* ServiceCheck update * ServiceCheck update
*/ */
@@ -1121,6 +1209,32 @@ export type ServiceCheckUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.
limit?: number limit?: number
} }
/**
* ServiceCheck updateManyAndReturn
*/
export type ServiceCheckUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the ServiceCheck
*/
select?: Prisma.ServiceCheckSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the ServiceCheck
*/
omit?: Prisma.ServiceCheckOmit<ExtArgs> | null
/**
* The data used to update ServiceChecks.
*/
data: Prisma.XOR<Prisma.ServiceCheckUpdateManyMutationInput, Prisma.ServiceCheckUncheckedUpdateManyInput>
/**
* Filter which ServiceChecks to update
*/
where?: Prisma.ServiceCheckWhereInput
/**
* Limit how many ServiceChecks to update.
*/
limit?: number
}
/** /**
* ServiceCheck upsert * ServiceCheck upsert
*/ */
+115 -7
View File
@@ -229,7 +229,6 @@ export type StrategyOrderByWithRelationInput = {
data?: Prisma.SortOrder data?: Prisma.SortOrder
createdAt?: Prisma.SortOrder createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder
_relevance?: Prisma.StrategyOrderByRelevanceInput
} }
export type StrategyWhereUniqueInput = Prisma.AtLeast<{ export type StrategyWhereUniqueInput = Prisma.AtLeast<{
@@ -330,12 +329,6 @@ export type StrategyUncheckedUpdateManyInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type StrategyOrderByRelevanceInput = {
fields: Prisma.StrategyOrderByRelevanceFieldEnum | Prisma.StrategyOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type StrategyCountOrderByAggregateInput = { export type StrategyCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
@@ -380,7 +373,23 @@ export type StrategySelect<ExtArgs extends runtime.Types.Extensions.InternalArgs
updatedAt?: boolean updatedAt?: boolean
}, ExtArgs["result"]["strategy"]> }, ExtArgs["result"]["strategy"]>
export type StrategySelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
name?: boolean
description?: boolean
data?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["strategy"]>
export type StrategySelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
name?: boolean
description?: boolean
data?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["strategy"]>
export type StrategySelectScalar = { export type StrategySelectScalar = {
id?: boolean id?: boolean
@@ -520,6 +529,30 @@ export interface StrategyDelegate<ExtArgs extends runtime.Types.Extensions.Inter
*/ */
createMany<T extends StrategyCreateManyArgs>(args?: Prisma.SelectSubset<T, StrategyCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends StrategyCreateManyArgs>(args?: Prisma.SelectSubset<T, StrategyCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many Strategies and returns the data saved in the database.
* @param {StrategyCreateManyAndReturnArgs} args - Arguments to create many Strategies.
* @example
* // Create many Strategies
* const strategy = await prisma.strategy.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many Strategies and only return the `id`
* const strategyWithIdOnly = await prisma.strategy.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<T extends StrategyCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, StrategyCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$StrategyPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a Strategy. * Delete a Strategy.
* @param {StrategyDeleteArgs} args - Arguments to delete one Strategy. * @param {StrategyDeleteArgs} args - Arguments to delete one Strategy.
@@ -584,6 +617,36 @@ export interface StrategyDelegate<ExtArgs extends runtime.Types.Extensions.Inter
*/ */
updateMany<T extends StrategyUpdateManyArgs>(args: Prisma.SelectSubset<T, StrategyUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends StrategyUpdateManyArgs>(args: Prisma.SelectSubset<T, StrategyUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more Strategies and returns the data updated in the database.
* @param {StrategyUpdateManyAndReturnArgs} args - Arguments to update many Strategies.
* @example
* // Update many Strategies
* const strategy = await prisma.strategy.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more Strategies and only return the `id`
* const strategyWithIdOnly = await prisma.strategy.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<T extends StrategyUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, StrategyUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$StrategyPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one Strategy. * Create or update one Strategy.
* @param {StrategyUpsertArgs} args - Arguments to update or create a Strategy. * @param {StrategyUpsertArgs} args - Arguments to update or create a Strategy.
@@ -991,6 +1054,25 @@ export type StrategyCreateManyArgs<ExtArgs extends runtime.Types.Extensions.Inte
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* Strategy createManyAndReturn
*/
export type StrategyCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Strategy
*/
select?: Prisma.StrategySelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Strategy
*/
omit?: Prisma.StrategyOmit<ExtArgs> | null
/**
* The data used to create many Strategies.
*/
data: Prisma.StrategyCreateManyInput | Prisma.StrategyCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* Strategy update * Strategy update
*/ */
@@ -1031,6 +1113,32 @@ export type StrategyUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.Inte
limit?: number limit?: number
} }
/**
* Strategy updateManyAndReturn
*/
export type StrategyUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Strategy
*/
select?: Prisma.StrategySelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the Strategy
*/
omit?: Prisma.StrategyOmit<ExtArgs> | null
/**
* The data used to update Strategies.
*/
data: Prisma.XOR<Prisma.StrategyUpdateManyMutationInput, Prisma.StrategyUncheckedUpdateManyInput>
/**
* Filter which Strategies to update
*/
where?: Prisma.StrategyWhereInput
/**
* Limit how many Strategies to update.
*/
limit?: number
}
/** /**
* Strategy upsert * Strategy upsert
*/ */
File diff suppressed because it is too large Load Diff
+213 -3
View File
@@ -40,18 +40,24 @@ export type TaskMemberSumAggregateOutputType = {
export type TaskMemberMinAggregateOutputType = { export type TaskMemberMinAggregateOutputType = {
id: number | null id: number | null
uuid: string | null
taskUuid: string | null
taskId: number | null taskId: number | null
userId: number | null userId: number | null
} }
export type TaskMemberMaxAggregateOutputType = { export type TaskMemberMaxAggregateOutputType = {
id: number | null id: number | null
uuid: string | null
taskUuid: string | null
taskId: number | null taskId: number | null
userId: number | null userId: number | null
} }
export type TaskMemberCountAggregateOutputType = { export type TaskMemberCountAggregateOutputType = {
id: number id: number
uuid: number
taskUuid: number
taskId: number taskId: number
userId: number userId: number
_all: number _all: number
@@ -72,18 +78,24 @@ export type TaskMemberSumAggregateInputType = {
export type TaskMemberMinAggregateInputType = { export type TaskMemberMinAggregateInputType = {
id?: true id?: true
uuid?: true
taskUuid?: true
taskId?: true taskId?: true
userId?: true userId?: true
} }
export type TaskMemberMaxAggregateInputType = { export type TaskMemberMaxAggregateInputType = {
id?: true id?: true
uuid?: true
taskUuid?: true
taskId?: true taskId?: true
userId?: true userId?: true
} }
export type TaskMemberCountAggregateInputType = { export type TaskMemberCountAggregateInputType = {
id?: true id?: true
uuid?: true
taskUuid?: true
taskId?: true taskId?: true
userId?: true userId?: true
_all?: true _all?: true
@@ -177,6 +189,8 @@ export type TaskMemberGroupByArgs<ExtArgs extends runtime.Types.Extensions.Inter
export type TaskMemberGroupByOutputType = { export type TaskMemberGroupByOutputType = {
id: number id: number
uuid: string
taskUuid: string | null
taskId: number taskId: number
userId: number userId: number
_count: TaskMemberCountAggregateOutputType | null _count: TaskMemberCountAggregateOutputType | null
@@ -206,6 +220,8 @@ export type TaskMemberWhereInput = {
OR?: Prisma.TaskMemberWhereInput[] OR?: Prisma.TaskMemberWhereInput[]
NOT?: Prisma.TaskMemberWhereInput | Prisma.TaskMemberWhereInput[] NOT?: Prisma.TaskMemberWhereInput | Prisma.TaskMemberWhereInput[]
id?: Prisma.IntFilter<"TaskMember"> | number id?: Prisma.IntFilter<"TaskMember"> | number
uuid?: Prisma.StringFilter<"TaskMember"> | string
taskUuid?: Prisma.StringNullableFilter<"TaskMember"> | string | null
taskId?: Prisma.IntFilter<"TaskMember"> | number taskId?: Prisma.IntFilter<"TaskMember"> | number
userId?: Prisma.IntFilter<"TaskMember"> | number userId?: Prisma.IntFilter<"TaskMember"> | number
task?: Prisma.XOR<Prisma.TaskScalarRelationFilter, Prisma.TaskWhereInput> task?: Prisma.XOR<Prisma.TaskScalarRelationFilter, Prisma.TaskWhereInput>
@@ -214,6 +230,8 @@ export type TaskMemberWhereInput = {
export type TaskMemberOrderByWithRelationInput = { export type TaskMemberOrderByWithRelationInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
taskUuid?: Prisma.SortOrderInput | Prisma.SortOrder
taskId?: Prisma.SortOrder taskId?: Prisma.SortOrder
userId?: Prisma.SortOrder userId?: Prisma.SortOrder
task?: Prisma.TaskOrderByWithRelationInput task?: Prisma.TaskOrderByWithRelationInput
@@ -222,18 +240,22 @@ export type TaskMemberOrderByWithRelationInput = {
export type TaskMemberWhereUniqueInput = Prisma.AtLeast<{ export type TaskMemberWhereUniqueInput = Prisma.AtLeast<{
id?: number id?: number
uuid?: string
taskId_userId?: Prisma.TaskMemberTaskIdUserIdCompoundUniqueInput taskId_userId?: Prisma.TaskMemberTaskIdUserIdCompoundUniqueInput
AND?: Prisma.TaskMemberWhereInput | Prisma.TaskMemberWhereInput[] AND?: Prisma.TaskMemberWhereInput | Prisma.TaskMemberWhereInput[]
OR?: Prisma.TaskMemberWhereInput[] OR?: Prisma.TaskMemberWhereInput[]
NOT?: Prisma.TaskMemberWhereInput | Prisma.TaskMemberWhereInput[] NOT?: Prisma.TaskMemberWhereInput | Prisma.TaskMemberWhereInput[]
taskUuid?: Prisma.StringNullableFilter<"TaskMember"> | string | null
taskId?: Prisma.IntFilter<"TaskMember"> | number taskId?: Prisma.IntFilter<"TaskMember"> | number
userId?: Prisma.IntFilter<"TaskMember"> | number userId?: Prisma.IntFilter<"TaskMember"> | number
task?: Prisma.XOR<Prisma.TaskScalarRelationFilter, Prisma.TaskWhereInput> task?: Prisma.XOR<Prisma.TaskScalarRelationFilter, Prisma.TaskWhereInput>
user?: Prisma.XOR<Prisma.UserScalarRelationFilter, Prisma.UserWhereInput> user?: Prisma.XOR<Prisma.UserScalarRelationFilter, Prisma.UserWhereInput>
}, "id" | "taskId_userId"> }, "id" | "uuid" | "taskId_userId">
export type TaskMemberOrderByWithAggregationInput = { export type TaskMemberOrderByWithAggregationInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
taskUuid?: Prisma.SortOrderInput | Prisma.SortOrder
taskId?: Prisma.SortOrder taskId?: Prisma.SortOrder
userId?: Prisma.SortOrder userId?: Prisma.SortOrder
_count?: Prisma.TaskMemberCountOrderByAggregateInput _count?: Prisma.TaskMemberCountOrderByAggregateInput
@@ -248,44 +270,59 @@ export type TaskMemberScalarWhereWithAggregatesInput = {
OR?: Prisma.TaskMemberScalarWhereWithAggregatesInput[] OR?: Prisma.TaskMemberScalarWhereWithAggregatesInput[]
NOT?: Prisma.TaskMemberScalarWhereWithAggregatesInput | Prisma.TaskMemberScalarWhereWithAggregatesInput[] NOT?: Prisma.TaskMemberScalarWhereWithAggregatesInput | Prisma.TaskMemberScalarWhereWithAggregatesInput[]
id?: Prisma.IntWithAggregatesFilter<"TaskMember"> | number id?: Prisma.IntWithAggregatesFilter<"TaskMember"> | number
uuid?: Prisma.StringWithAggregatesFilter<"TaskMember"> | string
taskUuid?: Prisma.StringNullableWithAggregatesFilter<"TaskMember"> | string | null
taskId?: Prisma.IntWithAggregatesFilter<"TaskMember"> | number taskId?: Prisma.IntWithAggregatesFilter<"TaskMember"> | number
userId?: Prisma.IntWithAggregatesFilter<"TaskMember"> | number userId?: Prisma.IntWithAggregatesFilter<"TaskMember"> | number
} }
export type TaskMemberCreateInput = { export type TaskMemberCreateInput = {
uuid: string
taskUuid?: string | null
task: Prisma.TaskCreateNestedOneWithoutMembersInput task: Prisma.TaskCreateNestedOneWithoutMembersInput
user: Prisma.UserCreateNestedOneWithoutTaskMembersInput user: Prisma.UserCreateNestedOneWithoutTaskMembersInput
} }
export type TaskMemberUncheckedCreateInput = { export type TaskMemberUncheckedCreateInput = {
id?: number id?: number
uuid: string
taskUuid?: string | null
taskId: number taskId: number
userId: number userId: number
} }
export type TaskMemberUpdateInput = { export type TaskMemberUpdateInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
task?: Prisma.TaskUpdateOneRequiredWithoutMembersNestedInput task?: Prisma.TaskUpdateOneRequiredWithoutMembersNestedInput
user?: Prisma.UserUpdateOneRequiredWithoutTaskMembersNestedInput user?: Prisma.UserUpdateOneRequiredWithoutTaskMembersNestedInput
} }
export type TaskMemberUncheckedUpdateInput = { export type TaskMemberUncheckedUpdateInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
taskId?: Prisma.IntFieldUpdateOperationsInput | number taskId?: Prisma.IntFieldUpdateOperationsInput | number
userId?: Prisma.IntFieldUpdateOperationsInput | number userId?: Prisma.IntFieldUpdateOperationsInput | number
} }
export type TaskMemberCreateManyInput = { export type TaskMemberCreateManyInput = {
id?: number id?: number
uuid: string
taskUuid?: string | null
taskId: number taskId: number
userId: number userId: number
} }
export type TaskMemberUpdateManyMutationInput = { export type TaskMemberUpdateManyMutationInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
} }
export type TaskMemberUncheckedUpdateManyInput = { export type TaskMemberUncheckedUpdateManyInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
taskId?: Prisma.IntFieldUpdateOperationsInput | number taskId?: Prisma.IntFieldUpdateOperationsInput | number
userId?: Prisma.IntFieldUpdateOperationsInput | number userId?: Prisma.IntFieldUpdateOperationsInput | number
} }
@@ -307,6 +344,8 @@ export type TaskMemberTaskIdUserIdCompoundUniqueInput = {
export type TaskMemberCountOrderByAggregateInput = { export type TaskMemberCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
taskUuid?: Prisma.SortOrder
taskId?: Prisma.SortOrder taskId?: Prisma.SortOrder
userId?: Prisma.SortOrder userId?: Prisma.SortOrder
} }
@@ -319,12 +358,16 @@ export type TaskMemberAvgOrderByAggregateInput = {
export type TaskMemberMaxOrderByAggregateInput = { export type TaskMemberMaxOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
taskUuid?: Prisma.SortOrder
taskId?: Prisma.SortOrder taskId?: Prisma.SortOrder
userId?: Prisma.SortOrder userId?: Prisma.SortOrder
} }
export type TaskMemberMinOrderByAggregateInput = { export type TaskMemberMinOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
taskUuid?: Prisma.SortOrder
taskId?: Prisma.SortOrder taskId?: Prisma.SortOrder
userId?: Prisma.SortOrder userId?: Prisma.SortOrder
} }
@@ -420,11 +463,15 @@ export type TaskMemberUncheckedUpdateManyWithoutTaskNestedInput = {
} }
export type TaskMemberCreateWithoutUserInput = { export type TaskMemberCreateWithoutUserInput = {
uuid: string
taskUuid?: string | null
task: Prisma.TaskCreateNestedOneWithoutMembersInput task: Prisma.TaskCreateNestedOneWithoutMembersInput
} }
export type TaskMemberUncheckedCreateWithoutUserInput = { export type TaskMemberUncheckedCreateWithoutUserInput = {
id?: number id?: number
uuid: string
taskUuid?: string | null
taskId: number taskId: number
} }
@@ -459,16 +506,22 @@ export type TaskMemberScalarWhereInput = {
OR?: Prisma.TaskMemberScalarWhereInput[] OR?: Prisma.TaskMemberScalarWhereInput[]
NOT?: Prisma.TaskMemberScalarWhereInput | Prisma.TaskMemberScalarWhereInput[] NOT?: Prisma.TaskMemberScalarWhereInput | Prisma.TaskMemberScalarWhereInput[]
id?: Prisma.IntFilter<"TaskMember"> | number id?: Prisma.IntFilter<"TaskMember"> | number
uuid?: Prisma.StringFilter<"TaskMember"> | string
taskUuid?: Prisma.StringNullableFilter<"TaskMember"> | string | null
taskId?: Prisma.IntFilter<"TaskMember"> | number taskId?: Prisma.IntFilter<"TaskMember"> | number
userId?: Prisma.IntFilter<"TaskMember"> | number userId?: Prisma.IntFilter<"TaskMember"> | number
} }
export type TaskMemberCreateWithoutTaskInput = { export type TaskMemberCreateWithoutTaskInput = {
uuid: string
taskUuid?: string | null
user: Prisma.UserCreateNestedOneWithoutTaskMembersInput user: Prisma.UserCreateNestedOneWithoutTaskMembersInput
} }
export type TaskMemberUncheckedCreateWithoutTaskInput = { export type TaskMemberUncheckedCreateWithoutTaskInput = {
id?: number id?: number
uuid: string
taskUuid?: string | null
userId: number userId: number
} }
@@ -500,39 +553,55 @@ export type TaskMemberUpdateManyWithWhereWithoutTaskInput = {
export type TaskMemberCreateManyUserInput = { export type TaskMemberCreateManyUserInput = {
id?: number id?: number
uuid: string
taskUuid?: string | null
taskId: number taskId: number
} }
export type TaskMemberUpdateWithoutUserInput = { export type TaskMemberUpdateWithoutUserInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
task?: Prisma.TaskUpdateOneRequiredWithoutMembersNestedInput task?: Prisma.TaskUpdateOneRequiredWithoutMembersNestedInput
} }
export type TaskMemberUncheckedUpdateWithoutUserInput = { export type TaskMemberUncheckedUpdateWithoutUserInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
taskId?: Prisma.IntFieldUpdateOperationsInput | number taskId?: Prisma.IntFieldUpdateOperationsInput | number
} }
export type TaskMemberUncheckedUpdateManyWithoutUserInput = { export type TaskMemberUncheckedUpdateManyWithoutUserInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
taskId?: Prisma.IntFieldUpdateOperationsInput | number taskId?: Prisma.IntFieldUpdateOperationsInput | number
} }
export type TaskMemberCreateManyTaskInput = { export type TaskMemberCreateManyTaskInput = {
id?: number id?: number
uuid: string
taskUuid?: string | null
userId: number userId: number
} }
export type TaskMemberUpdateWithoutTaskInput = { export type TaskMemberUpdateWithoutTaskInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
user?: Prisma.UserUpdateOneRequiredWithoutTaskMembersNestedInput user?: Prisma.UserUpdateOneRequiredWithoutTaskMembersNestedInput
} }
export type TaskMemberUncheckedUpdateWithoutTaskInput = { export type TaskMemberUncheckedUpdateWithoutTaskInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
userId?: Prisma.IntFieldUpdateOperationsInput | number userId?: Prisma.IntFieldUpdateOperationsInput | number
} }
export type TaskMemberUncheckedUpdateManyWithoutTaskInput = { export type TaskMemberUncheckedUpdateManyWithoutTaskInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
userId?: Prisma.IntFieldUpdateOperationsInput | number userId?: Prisma.IntFieldUpdateOperationsInput | number
} }
@@ -540,25 +609,55 @@ export type TaskMemberUncheckedUpdateManyWithoutTaskInput = {
export type TaskMemberSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{ export type TaskMemberSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean id?: boolean
uuid?: boolean
taskUuid?: boolean
taskId?: boolean taskId?: boolean
userId?: boolean userId?: boolean
task?: boolean | Prisma.TaskDefaultArgs<ExtArgs> task?: boolean | Prisma.TaskDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs> user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["taskMember"]> }, ExtArgs["result"]["taskMember"]>
export type TaskMemberSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
taskUuid?: boolean
taskId?: boolean
userId?: boolean
task?: boolean | Prisma.TaskDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["taskMember"]>
export type TaskMemberSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
taskUuid?: boolean
taskId?: boolean
userId?: boolean
task?: boolean | Prisma.TaskDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}, ExtArgs["result"]["taskMember"]>
export type TaskMemberSelectScalar = { export type TaskMemberSelectScalar = {
id?: boolean id?: boolean
uuid?: boolean
taskUuid?: boolean
taskId?: boolean taskId?: boolean
userId?: boolean userId?: boolean
} }
export type TaskMemberOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "taskId" | "userId", ExtArgs["result"]["taskMember"]> export type TaskMemberOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "uuid" | "taskUuid" | "taskId" | "userId", ExtArgs["result"]["taskMember"]>
export type TaskMemberInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type TaskMemberInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
task?: boolean | Prisma.TaskDefaultArgs<ExtArgs> task?: boolean | Prisma.TaskDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs> user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
} }
export type TaskMemberIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
task?: boolean | Prisma.TaskDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}
export type TaskMemberIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
task?: boolean | Prisma.TaskDefaultArgs<ExtArgs>
user?: boolean | Prisma.UserDefaultArgs<ExtArgs>
}
export type $TaskMemberPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $TaskMemberPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "TaskMember" name: "TaskMember"
@@ -568,6 +667,8 @@ export type $TaskMemberPayload<ExtArgs extends runtime.Types.Extensions.Internal
} }
scalars: runtime.Types.Extensions.GetPayloadResult<{ scalars: runtime.Types.Extensions.GetPayloadResult<{
id: number id: number
uuid: string
taskUuid: string | null
taskId: number taskId: number
userId: number userId: number
}, ExtArgs["result"]["taskMember"]> }, ExtArgs["result"]["taskMember"]>
@@ -687,6 +788,30 @@ export interface TaskMemberDelegate<ExtArgs extends runtime.Types.Extensions.Int
*/ */
createMany<T extends TaskMemberCreateManyArgs>(args?: Prisma.SelectSubset<T, TaskMemberCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends TaskMemberCreateManyArgs>(args?: Prisma.SelectSubset<T, TaskMemberCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many TaskMembers and returns the data saved in the database.
* @param {TaskMemberCreateManyAndReturnArgs} args - Arguments to create many TaskMembers.
* @example
* // Create many TaskMembers
* const taskMember = await prisma.taskMember.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many TaskMembers and only return the `id`
* const taskMemberWithIdOnly = await prisma.taskMember.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<T extends TaskMemberCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, TaskMemberCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$TaskMemberPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a TaskMember. * Delete a TaskMember.
* @param {TaskMemberDeleteArgs} args - Arguments to delete one TaskMember. * @param {TaskMemberDeleteArgs} args - Arguments to delete one TaskMember.
@@ -751,6 +876,36 @@ export interface TaskMemberDelegate<ExtArgs extends runtime.Types.Extensions.Int
*/ */
updateMany<T extends TaskMemberUpdateManyArgs>(args: Prisma.SelectSubset<T, TaskMemberUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends TaskMemberUpdateManyArgs>(args: Prisma.SelectSubset<T, TaskMemberUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more TaskMembers and returns the data updated in the database.
* @param {TaskMemberUpdateManyAndReturnArgs} args - Arguments to update many TaskMembers.
* @example
* // Update many TaskMembers
* const taskMember = await prisma.taskMember.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more TaskMembers and only return the `id`
* const taskMemberWithIdOnly = await prisma.taskMember.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<T extends TaskMemberUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, TaskMemberUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$TaskMemberPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one TaskMember. * Create or update one TaskMember.
* @param {TaskMemberUpsertArgs} args - Arguments to update or create a TaskMember. * @param {TaskMemberUpsertArgs} args - Arguments to update or create a TaskMember.
@@ -942,6 +1097,8 @@ export interface Prisma__TaskMemberClient<T, Null = never, ExtArgs extends runti
*/ */
export interface TaskMemberFieldRefs { export interface TaskMemberFieldRefs {
readonly id: Prisma.FieldRef<"TaskMember", 'Int'> readonly id: Prisma.FieldRef<"TaskMember", 'Int'>
readonly uuid: Prisma.FieldRef<"TaskMember", 'String'>
readonly taskUuid: Prisma.FieldRef<"TaskMember", 'String'>
readonly taskId: Prisma.FieldRef<"TaskMember", 'Int'> readonly taskId: Prisma.FieldRef<"TaskMember", 'Int'>
readonly userId: Prisma.FieldRef<"TaskMember", 'Int'> readonly userId: Prisma.FieldRef<"TaskMember", 'Int'>
} }
@@ -1181,6 +1338,29 @@ export type TaskMemberCreateManyArgs<ExtArgs extends runtime.Types.Extensions.In
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* TaskMember createManyAndReturn
*/
export type TaskMemberCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the TaskMember
*/
select?: Prisma.TaskMemberSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the TaskMember
*/
omit?: Prisma.TaskMemberOmit<ExtArgs> | null
/**
* The data used to create many TaskMembers.
*/
data: Prisma.TaskMemberCreateManyInput | Prisma.TaskMemberCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.TaskMemberIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* TaskMember update * TaskMember update
*/ */
@@ -1225,6 +1405,36 @@ export type TaskMemberUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.In
limit?: number limit?: number
} }
/**
* TaskMember updateManyAndReturn
*/
export type TaskMemberUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the TaskMember
*/
select?: Prisma.TaskMemberSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the TaskMember
*/
omit?: Prisma.TaskMemberOmit<ExtArgs> | null
/**
* The data used to update TaskMembers.
*/
data: Prisma.XOR<Prisma.TaskMemberUpdateManyMutationInput, Prisma.TaskMemberUncheckedUpdateManyInput>
/**
* Filter which TaskMembers to update
*/
where?: Prisma.TaskMemberWhereInput
/**
* Limit how many TaskMembers to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.TaskMemberIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* TaskMember upsert * TaskMember upsert
*/ */
+197 -9
View File
@@ -38,18 +38,24 @@ export type TaskTagSumAggregateOutputType = {
export type TaskTagMinAggregateOutputType = { export type TaskTagMinAggregateOutputType = {
id: number | null id: number | null
uuid: string | null
taskUuid: string | null
taskId: number | null taskId: number | null
name: string | null name: string | null
} }
export type TaskTagMaxAggregateOutputType = { export type TaskTagMaxAggregateOutputType = {
id: number | null id: number | null
uuid: string | null
taskUuid: string | null
taskId: number | null taskId: number | null
name: string | null name: string | null
} }
export type TaskTagCountAggregateOutputType = { export type TaskTagCountAggregateOutputType = {
id: number id: number
uuid: number
taskUuid: number
taskId: number taskId: number
name: number name: number
_all: number _all: number
@@ -68,18 +74,24 @@ export type TaskTagSumAggregateInputType = {
export type TaskTagMinAggregateInputType = { export type TaskTagMinAggregateInputType = {
id?: true id?: true
uuid?: true
taskUuid?: true
taskId?: true taskId?: true
name?: true name?: true
} }
export type TaskTagMaxAggregateInputType = { export type TaskTagMaxAggregateInputType = {
id?: true id?: true
uuid?: true
taskUuid?: true
taskId?: true taskId?: true
name?: true name?: true
} }
export type TaskTagCountAggregateInputType = { export type TaskTagCountAggregateInputType = {
id?: true id?: true
uuid?: true
taskUuid?: true
taskId?: true taskId?: true
name?: true name?: true
_all?: true _all?: true
@@ -173,6 +185,8 @@ export type TaskTagGroupByArgs<ExtArgs extends runtime.Types.Extensions.Internal
export type TaskTagGroupByOutputType = { export type TaskTagGroupByOutputType = {
id: number id: number
uuid: string
taskUuid: string | null
taskId: number taskId: number
name: string name: string
_count: TaskTagCountAggregateOutputType | null _count: TaskTagCountAggregateOutputType | null
@@ -202,6 +216,8 @@ export type TaskTagWhereInput = {
OR?: Prisma.TaskTagWhereInput[] OR?: Prisma.TaskTagWhereInput[]
NOT?: Prisma.TaskTagWhereInput | Prisma.TaskTagWhereInput[] NOT?: Prisma.TaskTagWhereInput | Prisma.TaskTagWhereInput[]
id?: Prisma.IntFilter<"TaskTag"> | number id?: Prisma.IntFilter<"TaskTag"> | number
uuid?: Prisma.StringFilter<"TaskTag"> | string
taskUuid?: Prisma.StringNullableFilter<"TaskTag"> | string | null
taskId?: Prisma.IntFilter<"TaskTag"> | number taskId?: Prisma.IntFilter<"TaskTag"> | number
name?: Prisma.StringFilter<"TaskTag"> | string name?: Prisma.StringFilter<"TaskTag"> | string
task?: Prisma.XOR<Prisma.TaskScalarRelationFilter, Prisma.TaskWhereInput> task?: Prisma.XOR<Prisma.TaskScalarRelationFilter, Prisma.TaskWhereInput>
@@ -209,24 +225,29 @@ export type TaskTagWhereInput = {
export type TaskTagOrderByWithRelationInput = { export type TaskTagOrderByWithRelationInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
taskUuid?: Prisma.SortOrderInput | Prisma.SortOrder
taskId?: Prisma.SortOrder taskId?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
task?: Prisma.TaskOrderByWithRelationInput task?: Prisma.TaskOrderByWithRelationInput
_relevance?: Prisma.TaskTagOrderByRelevanceInput
} }
export type TaskTagWhereUniqueInput = Prisma.AtLeast<{ export type TaskTagWhereUniqueInput = Prisma.AtLeast<{
id?: number id?: number
uuid?: string
AND?: Prisma.TaskTagWhereInput | Prisma.TaskTagWhereInput[] AND?: Prisma.TaskTagWhereInput | Prisma.TaskTagWhereInput[]
OR?: Prisma.TaskTagWhereInput[] OR?: Prisma.TaskTagWhereInput[]
NOT?: Prisma.TaskTagWhereInput | Prisma.TaskTagWhereInput[] NOT?: Prisma.TaskTagWhereInput | Prisma.TaskTagWhereInput[]
taskUuid?: Prisma.StringNullableFilter<"TaskTag"> | string | null
taskId?: Prisma.IntFilter<"TaskTag"> | number taskId?: Prisma.IntFilter<"TaskTag"> | number
name?: Prisma.StringFilter<"TaskTag"> | string name?: Prisma.StringFilter<"TaskTag"> | string
task?: Prisma.XOR<Prisma.TaskScalarRelationFilter, Prisma.TaskWhereInput> task?: Prisma.XOR<Prisma.TaskScalarRelationFilter, Prisma.TaskWhereInput>
}, "id"> }, "id" | "uuid">
export type TaskTagOrderByWithAggregationInput = { export type TaskTagOrderByWithAggregationInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
taskUuid?: Prisma.SortOrderInput | Prisma.SortOrder
taskId?: Prisma.SortOrder taskId?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
_count?: Prisma.TaskTagCountOrderByAggregateInput _count?: Prisma.TaskTagCountOrderByAggregateInput
@@ -241,44 +262,60 @@ export type TaskTagScalarWhereWithAggregatesInput = {
OR?: Prisma.TaskTagScalarWhereWithAggregatesInput[] OR?: Prisma.TaskTagScalarWhereWithAggregatesInput[]
NOT?: Prisma.TaskTagScalarWhereWithAggregatesInput | Prisma.TaskTagScalarWhereWithAggregatesInput[] NOT?: Prisma.TaskTagScalarWhereWithAggregatesInput | Prisma.TaskTagScalarWhereWithAggregatesInput[]
id?: Prisma.IntWithAggregatesFilter<"TaskTag"> | number id?: Prisma.IntWithAggregatesFilter<"TaskTag"> | number
uuid?: Prisma.StringWithAggregatesFilter<"TaskTag"> | string
taskUuid?: Prisma.StringNullableWithAggregatesFilter<"TaskTag"> | string | null
taskId?: Prisma.IntWithAggregatesFilter<"TaskTag"> | number taskId?: Prisma.IntWithAggregatesFilter<"TaskTag"> | number
name?: Prisma.StringWithAggregatesFilter<"TaskTag"> | string name?: Prisma.StringWithAggregatesFilter<"TaskTag"> | string
} }
export type TaskTagCreateInput = { export type TaskTagCreateInput = {
uuid: string
taskUuid?: string | null
name: string name: string
task: Prisma.TaskCreateNestedOneWithoutTagsInput task: Prisma.TaskCreateNestedOneWithoutTagsInput
} }
export type TaskTagUncheckedCreateInput = { export type TaskTagUncheckedCreateInput = {
id?: number id?: number
uuid: string
taskUuid?: string | null
taskId: number taskId: number
name: string name: string
} }
export type TaskTagUpdateInput = { export type TaskTagUpdateInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
task?: Prisma.TaskUpdateOneRequiredWithoutTagsNestedInput task?: Prisma.TaskUpdateOneRequiredWithoutTagsNestedInput
} }
export type TaskTagUncheckedUpdateInput = { export type TaskTagUncheckedUpdateInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
taskId?: Prisma.IntFieldUpdateOperationsInput | number taskId?: Prisma.IntFieldUpdateOperationsInput | number
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
} }
export type TaskTagCreateManyInput = { export type TaskTagCreateManyInput = {
id?: number id?: number
uuid: string
taskUuid?: string | null
taskId: number taskId: number
name: string name: string
} }
export type TaskTagUpdateManyMutationInput = { export type TaskTagUpdateManyMutationInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
} }
export type TaskTagUncheckedUpdateManyInput = { export type TaskTagUncheckedUpdateManyInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
taskId?: Prisma.IntFieldUpdateOperationsInput | number taskId?: Prisma.IntFieldUpdateOperationsInput | number
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
} }
@@ -293,14 +330,10 @@ export type TaskTagOrderByRelationAggregateInput = {
_count?: Prisma.SortOrder _count?: Prisma.SortOrder
} }
export type TaskTagOrderByRelevanceInput = {
fields: Prisma.TaskTagOrderByRelevanceFieldEnum | Prisma.TaskTagOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type TaskTagCountOrderByAggregateInput = { export type TaskTagCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
taskUuid?: Prisma.SortOrder
taskId?: Prisma.SortOrder taskId?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
} }
@@ -312,12 +345,16 @@ export type TaskTagAvgOrderByAggregateInput = {
export type TaskTagMaxOrderByAggregateInput = { export type TaskTagMaxOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
taskUuid?: Prisma.SortOrder
taskId?: Prisma.SortOrder taskId?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
} }
export type TaskTagMinOrderByAggregateInput = { export type TaskTagMinOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
uuid?: Prisma.SortOrder
taskUuid?: Prisma.SortOrder
taskId?: Prisma.SortOrder taskId?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
} }
@@ -370,11 +407,15 @@ export type TaskTagUncheckedUpdateManyWithoutTaskNestedInput = {
} }
export type TaskTagCreateWithoutTaskInput = { export type TaskTagCreateWithoutTaskInput = {
uuid: string
taskUuid?: string | null
name: string name: string
} }
export type TaskTagUncheckedCreateWithoutTaskInput = { export type TaskTagUncheckedCreateWithoutTaskInput = {
id?: number id?: number
uuid: string
taskUuid?: string | null
name: string name: string
} }
@@ -409,26 +450,36 @@ export type TaskTagScalarWhereInput = {
OR?: Prisma.TaskTagScalarWhereInput[] OR?: Prisma.TaskTagScalarWhereInput[]
NOT?: Prisma.TaskTagScalarWhereInput | Prisma.TaskTagScalarWhereInput[] NOT?: Prisma.TaskTagScalarWhereInput | Prisma.TaskTagScalarWhereInput[]
id?: Prisma.IntFilter<"TaskTag"> | number id?: Prisma.IntFilter<"TaskTag"> | number
uuid?: Prisma.StringFilter<"TaskTag"> | string
taskUuid?: Prisma.StringNullableFilter<"TaskTag"> | string | null
taskId?: Prisma.IntFilter<"TaskTag"> | number taskId?: Prisma.IntFilter<"TaskTag"> | number
name?: Prisma.StringFilter<"TaskTag"> | string name?: Prisma.StringFilter<"TaskTag"> | string
} }
export type TaskTagCreateManyTaskInput = { export type TaskTagCreateManyTaskInput = {
id?: number id?: number
uuid: string
taskUuid?: string | null
name: string name: string
} }
export type TaskTagUpdateWithoutTaskInput = { export type TaskTagUpdateWithoutTaskInput = {
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
} }
export type TaskTagUncheckedUpdateWithoutTaskInput = { export type TaskTagUncheckedUpdateWithoutTaskInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
} }
export type TaskTagUncheckedUpdateManyWithoutTaskInput = { export type TaskTagUncheckedUpdateManyWithoutTaskInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number id?: Prisma.IntFieldUpdateOperationsInput | number
uuid?: Prisma.StringFieldUpdateOperationsInput | string
taskUuid?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
name?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string
} }
@@ -436,23 +487,49 @@ export type TaskTagUncheckedUpdateManyWithoutTaskInput = {
export type TaskTagSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{ export type TaskTagSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean id?: boolean
uuid?: boolean
taskUuid?: boolean
taskId?: boolean taskId?: boolean
name?: boolean name?: boolean
task?: boolean | Prisma.TaskDefaultArgs<ExtArgs> task?: boolean | Prisma.TaskDefaultArgs<ExtArgs>
}, ExtArgs["result"]["taskTag"]> }, ExtArgs["result"]["taskTag"]>
export type TaskTagSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
taskUuid?: boolean
taskId?: boolean
name?: boolean
task?: boolean | Prisma.TaskDefaultArgs<ExtArgs>
}, ExtArgs["result"]["taskTag"]>
export type TaskTagSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
uuid?: boolean
taskUuid?: boolean
taskId?: boolean
name?: boolean
task?: boolean | Prisma.TaskDefaultArgs<ExtArgs>
}, ExtArgs["result"]["taskTag"]>
export type TaskTagSelectScalar = { export type TaskTagSelectScalar = {
id?: boolean id?: boolean
uuid?: boolean
taskUuid?: boolean
taskId?: boolean taskId?: boolean
name?: boolean name?: boolean
} }
export type TaskTagOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "taskId" | "name", ExtArgs["result"]["taskTag"]> export type TaskTagOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "uuid" | "taskUuid" | "taskId" | "name", ExtArgs["result"]["taskTag"]>
export type TaskTagInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type TaskTagInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
task?: boolean | Prisma.TaskDefaultArgs<ExtArgs> task?: boolean | Prisma.TaskDefaultArgs<ExtArgs>
} }
export type TaskTagIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
task?: boolean | Prisma.TaskDefaultArgs<ExtArgs>
}
export type TaskTagIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
task?: boolean | Prisma.TaskDefaultArgs<ExtArgs>
}
export type $TaskTagPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $TaskTagPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "TaskTag" name: "TaskTag"
@@ -461,6 +538,8 @@ export type $TaskTagPayload<ExtArgs extends runtime.Types.Extensions.InternalArg
} }
scalars: runtime.Types.Extensions.GetPayloadResult<{ scalars: runtime.Types.Extensions.GetPayloadResult<{
id: number id: number
uuid: string
taskUuid: string | null
taskId: number taskId: number
name: string name: string
}, ExtArgs["result"]["taskTag"]> }, ExtArgs["result"]["taskTag"]>
@@ -580,6 +659,30 @@ export interface TaskTagDelegate<ExtArgs extends runtime.Types.Extensions.Intern
*/ */
createMany<T extends TaskTagCreateManyArgs>(args?: Prisma.SelectSubset<T, TaskTagCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends TaskTagCreateManyArgs>(args?: Prisma.SelectSubset<T, TaskTagCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Create many TaskTags and returns the data saved in the database.
* @param {TaskTagCreateManyAndReturnArgs} args - Arguments to create many TaskTags.
* @example
* // Create many TaskTags
* const taskTag = await prisma.taskTag.createManyAndReturn({
* data: [
* // ... provide data here
* ]
* })
*
* // Create many TaskTags and only return the `id`
* const taskTagWithIdOnly = await prisma.taskTag.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<T extends TaskTagCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, TaskTagCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$TaskTagPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a TaskTag. * Delete a TaskTag.
* @param {TaskTagDeleteArgs} args - Arguments to delete one TaskTag. * @param {TaskTagDeleteArgs} args - Arguments to delete one TaskTag.
@@ -644,6 +747,36 @@ export interface TaskTagDelegate<ExtArgs extends runtime.Types.Extensions.Intern
*/ */
updateMany<T extends TaskTagUpdateManyArgs>(args: Prisma.SelectSubset<T, TaskTagUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends TaskTagUpdateManyArgs>(args: Prisma.SelectSubset<T, TaskTagUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* Update zero or more TaskTags and returns the data updated in the database.
* @param {TaskTagUpdateManyAndReturnArgs} args - Arguments to update many TaskTags.
* @example
* // Update many TaskTags
* const taskTag = await prisma.taskTag.updateManyAndReturn({
* where: {
* // ... provide filter here
* },
* data: [
* // ... provide data here
* ]
* })
*
* // Update zero or more TaskTags and only return the `id`
* const taskTagWithIdOnly = await prisma.taskTag.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<T extends TaskTagUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, TaskTagUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$TaskTagPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one TaskTag. * Create or update one TaskTag.
* @param {TaskTagUpsertArgs} args - Arguments to update or create a TaskTag. * @param {TaskTagUpsertArgs} args - Arguments to update or create a TaskTag.
@@ -834,6 +967,8 @@ export interface Prisma__TaskTagClient<T, Null = never, ExtArgs extends runtime.
*/ */
export interface TaskTagFieldRefs { export interface TaskTagFieldRefs {
readonly id: Prisma.FieldRef<"TaskTag", 'Int'> readonly id: Prisma.FieldRef<"TaskTag", 'Int'>
readonly uuid: Prisma.FieldRef<"TaskTag", 'String'>
readonly taskUuid: Prisma.FieldRef<"TaskTag", 'String'>
readonly taskId: Prisma.FieldRef<"TaskTag", 'Int'> readonly taskId: Prisma.FieldRef<"TaskTag", 'Int'>
readonly name: Prisma.FieldRef<"TaskTag", 'String'> readonly name: Prisma.FieldRef<"TaskTag", 'String'>
} }
@@ -1073,6 +1208,29 @@ export type TaskTagCreateManyArgs<ExtArgs extends runtime.Types.Extensions.Inter
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* TaskTag createManyAndReturn
*/
export type TaskTagCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the TaskTag
*/
select?: Prisma.TaskTagSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the TaskTag
*/
omit?: Prisma.TaskTagOmit<ExtArgs> | null
/**
* The data used to create many TaskTags.
*/
data: Prisma.TaskTagCreateManyInput | Prisma.TaskTagCreateManyInput[]
skipDuplicates?: boolean
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.TaskTagIncludeCreateManyAndReturn<ExtArgs> | null
}
/** /**
* TaskTag update * TaskTag update
*/ */
@@ -1117,6 +1275,36 @@ export type TaskTagUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.Inter
limit?: number limit?: number
} }
/**
* TaskTag updateManyAndReturn
*/
export type TaskTagUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the TaskTag
*/
select?: Prisma.TaskTagSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the TaskTag
*/
omit?: Prisma.TaskTagOmit<ExtArgs> | null
/**
* The data used to update TaskTags.
*/
data: Prisma.XOR<Prisma.TaskTagUpdateManyMutationInput, Prisma.TaskTagUncheckedUpdateManyInput>
/**
* Filter which TaskTags to update
*/
where?: Prisma.TaskTagWhereInput
/**
* Limit how many TaskTags to update.
*/
limit?: number
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.TaskTagIncludeUpdateManyAndReturn<ExtArgs> | null
}
/** /**
* TaskTag upsert * TaskTag upsert
*/ */
+117 -7
View File
@@ -251,7 +251,6 @@ export type UserOrderByWithRelationInput = {
assignedTasks?: Prisma.TaskOrderByRelationAggregateInput assignedTasks?: Prisma.TaskOrderByRelationAggregateInput
createdTasks?: Prisma.TaskOrderByRelationAggregateInput createdTasks?: Prisma.TaskOrderByRelationAggregateInput
taskMembers?: Prisma.TaskMemberOrderByRelationAggregateInput taskMembers?: Prisma.TaskMemberOrderByRelationAggregateInput
_relevance?: Prisma.UserOrderByRelevanceInput
} }
export type UserWhereUniqueInput = Prisma.AtLeast<{ export type UserWhereUniqueInput = Prisma.AtLeast<{
@@ -397,12 +396,6 @@ export type UserUncheckedUpdateManyInput = {
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
} }
export type UserOrderByRelevanceInput = {
fields: Prisma.UserOrderByRelevanceFieldEnum | Prisma.UserOrderByRelevanceFieldEnum[]
sort: Prisma.SortOrder
search: string
}
export type UserCountOrderByAggregateInput = { export type UserCountOrderByAggregateInput = {
id?: Prisma.SortOrder id?: Prisma.SortOrder
name?: Prisma.SortOrder name?: Prisma.SortOrder
@@ -1454,7 +1447,23 @@ export type UserSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = r
_count?: boolean | Prisma.UserCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.UserCountOutputTypeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["user"]> }, ExtArgs["result"]["user"]>
export type UserSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
name?: boolean
email?: boolean
password?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["user"]>
export type UserSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
name?: boolean
email?: boolean
password?: boolean
createdAt?: boolean
updatedAt?: boolean
}, ExtArgs["result"]["user"]>
export type UserSelectScalar = { export type UserSelectScalar = {
id?: boolean id?: boolean
@@ -1478,6 +1487,8 @@ export type UserInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs =
taskMembers?: boolean | Prisma.User$taskMembersArgs<ExtArgs> taskMembers?: boolean | Prisma.User$taskMembersArgs<ExtArgs>
_count?: boolean | Prisma.UserCountOutputTypeDefaultArgs<ExtArgs> _count?: boolean | Prisma.UserCountOutputTypeDefaultArgs<ExtArgs>
} }
export type UserIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {}
export type UserIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {}
export type $UserPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = { export type $UserPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "User" name: "User"
@@ -1616,6 +1627,30 @@ export interface UserDelegate<ExtArgs extends runtime.Types.Extensions.InternalA
*/ */
createMany<T extends UserCreateManyArgs>(args?: Prisma.SelectSubset<T, UserCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> createMany<T extends UserCreateManyArgs>(args?: Prisma.SelectSubset<T, UserCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* 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<T extends UserCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, UserCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>
/** /**
* Delete a User. * Delete a User.
* @param {UserDeleteArgs} args - Arguments to delete one User. * @param {UserDeleteArgs} args - Arguments to delete one User.
@@ -1680,6 +1715,36 @@ export interface UserDelegate<ExtArgs extends runtime.Types.Extensions.InternalA
*/ */
updateMany<T extends UserUpdateManyArgs>(args: Prisma.SelectSubset<T, UserUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload> updateMany<T extends UserUpdateManyArgs>(args: Prisma.SelectSubset<T, UserUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>
/**
* 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<T extends UserUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, UserUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$UserPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>
/** /**
* Create or update one User. * Create or update one User.
* @param {UserUpsertArgs} args - Arguments to update or create a User. * @param {UserUpsertArgs} args - Arguments to update or create a User.
@@ -2120,6 +2185,25 @@ export type UserCreateManyArgs<ExtArgs extends runtime.Types.Extensions.Internal
skipDuplicates?: boolean skipDuplicates?: boolean
} }
/**
* User createManyAndReturn
*/
export type UserCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the User
*/
select?: Prisma.UserSelectCreateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the User
*/
omit?: Prisma.UserOmit<ExtArgs> | null
/**
* The data used to create many Users.
*/
data: Prisma.UserCreateManyInput | Prisma.UserCreateManyInput[]
skipDuplicates?: boolean
}
/** /**
* User update * User update
*/ */
@@ -2164,6 +2248,32 @@ export type UserUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.Internal
limit?: number limit?: number
} }
/**
* User updateManyAndReturn
*/
export type UserUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the User
*/
select?: Prisma.UserSelectUpdateManyAndReturn<ExtArgs> | null
/**
* Omit specific fields from the User
*/
omit?: Prisma.UserOmit<ExtArgs> | null
/**
* The data used to update Users.
*/
data: Prisma.XOR<Prisma.UserUpdateManyMutationInput, Prisma.UserUncheckedUpdateManyInput>
/**
* Filter which Users to update
*/
where?: Prisma.UserWhereInput
/**
* Limit how many Users to update.
*/
limit?: number
}
/** /**
* User upsert * User upsert
*/ */
+287 -70
View File
@@ -1,14 +1,17 @@
{ {
"name": "iboard", "name": "iboard",
"version": "1.0.0", "version": "0.2.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "iboard", "name": "iboard",
"version": "1.0.0", "version": "0.2.0",
"dependencies": { "dependencies": {
"@prisma/adapter-mariadb": "^7.9.1", "@journeyapps/wa-sqlite": "^2.0.7",
"@powersync/react": "^2.1.0",
"@powersync/web": "^2.5.0",
"@prisma/adapter-pg": "^7.9.1",
"@prisma/client": "^7.7.0", "@prisma/client": "^7.7.0",
"@zythum02/mijia-api": "^0.1.4", "@zythum02/mijia-api": "^0.1.4",
"antd-mobile": "^5.42.3", "antd-mobile": "^5.42.3",
@@ -1187,6 +1190,11 @@
"url": "https://opencollective.com/libvips" "url": "https://opencollective.com/libvips"
} }
}, },
"node_modules/@journeyapps/wa-sqlite": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/@journeyapps/wa-sqlite/-/wa-sqlite-2.0.8.tgz",
"integrity": "sha512-WRXEms2515S/0DFSWzmlggHu9hSJomhugDUO17rWkL6VpokV/hfjIDLs954Egx/eqrk3WADmiOMzOc7MuJbznQ=="
},
"node_modules/@jridgewell/gen-mapping": { "node_modules/@jridgewell/gen-mapping": {
"version": "0.3.13", "version": "0.3.13",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
@@ -1615,64 +1623,91 @@
"node": "^22.20 || ^24.12 || >=25" "node": "^22.20 || ^24.12 || >=25"
} }
}, },
"node_modules/@prisma/adapter-mariadb": { "node_modules/@powersync/common": {
"version": "7.9.1", "version": "2.4.0",
"resolved": "https://registry.npmjs.org/@prisma/adapter-mariadb/-/adapter-mariadb-7.9.1.tgz", "resolved": "https://registry.npmjs.org/@powersync/common/-/common-2.4.0.tgz",
"integrity": "sha512-4aZUbIg2av7XFSQyM9cQeAp9YP9HiPr8H7ehe2rDo375IZXILEzQrNXZ/zLetgRQ2ojlaUl/brArFdOVS3n1xA==", "integrity": "sha512-ngVogy+B8NQeI5l+0Es8qMxnGozUie8Q6R4+0/AHA3oBAhDG5UmeYw/LquTzZJSOPnCmvGgFSqovblV+JKzxKQ==",
"license": "Apache-2.0"
},
"node_modules/@powersync/react": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@powersync/react/-/react-2.1.0.tgz",
"integrity": "sha512-ADIpakSLhstv0F9xrUIF+oCArFnAQPrcB9mNql6xH0Nup9EgBug38Ks+mv3yqbc33z60pBm9tuHs8uSIbkhuqg==",
"license": "Apache-2.0",
"peerDependencies": {
"@powersync/common": "^2.4.0",
"react": "*"
}
},
"node_modules/@powersync/shared-internals": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@powersync/shared-internals/-/shared-internals-1.4.0.tgz",
"integrity": "sha512-OiqqDuW6tePW4Ed7C5IWutBKrtcqKuTMlVMQNwUZtKtqr7ZrqKlb+YP5l4niuz8mpqDYo3/HNU0dpc+3mneSBQ==",
"license": "Apache-2.0",
"peerDependencies": {
"@powersync/common": "^2.4.0"
}
},
"node_modules/@powersync/web": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/@powersync/web/-/web-2.5.0.tgz",
"integrity": "sha512-/K2ZUjIdqvtFeoLfPetPcE+uioShBWzrTrOa8hpoZ7i62S8wgj47i+VPnKTXI7WQmXuxTGGZFUFnahinf6wjPg==",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@prisma/driver-adapter-utils": "7.9.1", "@journeyapps/wa-sqlite": "2.0.7",
"mariadb": "3.4.5" "@powersync/common": "2.4.0",
} "@powersync/shared-internals": "1.4.0",
}, "comlink": "^4.4.2",
"node_modules/@prisma/adapter-mariadb/node_modules/@types/node": { "commander": "^12.1.0"
"version": "24.13.3",
"resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz",
"integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==",
"license": "MIT",
"dependencies": {
"undici-types": "~7.18.0"
}
},
"node_modules/@prisma/adapter-mariadb/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": { "bin": {
"node": ">=0.10.0" "powersync-web": "bin/powersync.cjs"
}
},
"node_modules/@prisma/adapter-mariadb/node_modules/lru-cache": {
"version": "10.4.3",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
"integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
"license": "ISC"
},
"node_modules/@prisma/adapter-mariadb/node_modules/mariadb": {
"version": "3.4.5",
"resolved": "https://registry.npmjs.org/mariadb/-/mariadb-3.4.5.tgz",
"integrity": "sha512-gThTYkhIS5rRqkVr+Y0cIdzr+GRqJ9sA2Q34e0yzmyhMCwyApf3OKAC1jnF23aSlIOqJuyaUFUcj7O1qZslmmQ==",
"license": "LGPL-2.1-or-later",
"dependencies": {
"@types/geojson": "^7946.0.16",
"@types/node": "^24.0.13",
"denque": "^2.1.0",
"iconv-lite": "^0.6.3",
"lru-cache": "^10.4.3"
}, },
"engines": { "peerDependencies": {
"node": ">= 14" "@powersync/common": "^2.4.0",
"@powersync/shared-internals": "^1.4.0"
} }
}, },
"node_modules/@prisma/adapter-mariadb/node_modules/undici-types": { "node_modules/@powersync/web/node_modules/@journeyapps/wa-sqlite": {
"version": "7.18.2", "version": "2.0.7",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", "resolved": "https://registry.npmjs.org/@journeyapps/wa-sqlite/-/wa-sqlite-2.0.7.tgz",
"integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", "integrity": "sha512-mc6xUricl4QB2s8QTRGS+FofSr1cjwDtf6dPXAdMBuGWodjfEgkSJGDPWQ7zVqgc7hMfXYLT7WIfEBAxara8YA=="
"license": "MIT" },
"node_modules/@powersync/web/node_modules/commander": {
"version": "12.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz",
"integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==",
"license": "MIT",
"engines": {
"node": ">=18"
}
},
"node_modules/@prisma/adapter-pg": {
"version": "7.10.1",
"resolved": "https://registry.npmjs.org/@prisma/adapter-pg/-/adapter-pg-7.10.1.tgz",
"integrity": "sha512-EP9ruPYHjKP80WZlb5qVaEXKgZjJieBFjAxcBtQnDAHD6+16UN4keVmBh6L/RUpuDQT2FQRbvKNgq5d4Ix+IkQ==",
"license": "Apache-2.0",
"dependencies": {
"@prisma/driver-adapter-utils": "7.10.1",
"@types/pg": "^8.16.0",
"pg": "^8.16.3",
"postgres-array": "3.0.4"
}
},
"node_modules/@prisma/adapter-pg/node_modules/@prisma/debug": {
"version": "7.10.1",
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.10.1.tgz",
"integrity": "sha512-eFCAkGZ13D/qPg48JBlG5IWi9cSBBOC7oG3abDPcAkYioDWlIjh0YJJLK2J7qo5S+xWWD8I6egAN/8KbCaiMCA==",
"license": "Apache-2.0"
},
"node_modules/@prisma/adapter-pg/node_modules/@prisma/driver-adapter-utils": {
"version": "7.10.1",
"resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.10.1.tgz",
"integrity": "sha512-DJ4c6xvVnm3s9ZUyql9nCUicADSqyvH+CjXRCM9L6m5zJxCNmebCElG6X4irICq3rosBwlX+S19Dxq/4IrZk3A==",
"license": "Apache-2.0",
"dependencies": {
"@prisma/debug": "7.10.1"
}
}, },
"node_modules/@prisma/client": { "node_modules/@prisma/client": {
"version": "7.7.0", "version": "7.7.0",
@@ -1747,21 +1782,6 @@
"zeptomatch": "2.1.0" "zeptomatch": "2.1.0"
} }
}, },
"node_modules/@prisma/driver-adapter-utils": {
"version": "7.9.1",
"resolved": "https://registry.npmjs.org/@prisma/driver-adapter-utils/-/driver-adapter-utils-7.9.1.tgz",
"integrity": "sha512-vmHehG7nn/heW32DXXpp13DxxAxVVe6n250oEt3dOL2E/4bt3olktKZN0mzSuxMMronyMSkbeW2uCOn3F4g8RQ==",
"license": "Apache-2.0",
"dependencies": {
"@prisma/debug": "7.9.1"
}
},
"node_modules/@prisma/driver-adapter-utils/node_modules/@prisma/debug": {
"version": "7.9.1",
"resolved": "https://registry.npmjs.org/@prisma/debug/-/debug-7.9.1.tgz",
"integrity": "sha512-/cpVZ4itxtcgB8GHBvZtcmuEjq+lWsLrRJxFMbwZrT1RIdtuKmUm7PPGo/wzfbYpBrk+9WmmBE8CHJw2rybKDQ==",
"license": "Apache-2.0"
},
"node_modules/@prisma/engines": { "node_modules/@prisma/engines": {
"version": "7.7.0", "version": "7.7.0",
"resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.7.0.tgz", "resolved": "https://registry.npmjs.org/@prisma/engines/-/engines-7.7.0.tgz",
@@ -2867,6 +2887,17 @@
"undici-types": "~8.3.0" "undici-types": "~8.3.0"
} }
}, },
"node_modules/@types/pg": {
"version": "8.23.1",
"resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.23.1.tgz",
"integrity": "sha512-fKVHpikPdg4GKks3JuLEhvwSyvwzF23hnabPy6DD8ljVbC7+6J5dQzdv4arV6jqq57djnMgs1HKBxX4P8aBI3A==",
"license": "MIT",
"dependencies": {
"@types/node": "*",
"pg-protocol": "*",
"pg-types": "^2.2.0"
}
},
"node_modules/@types/react": { "node_modules/@types/react": {
"version": "19.2.14", "version": "19.2.14",
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz",
@@ -3193,6 +3224,20 @@
"integrity": "sha512-YOf0VSj5nUPI27doTtXF+BBnsiRq3qY7avHqfIWnppxTLGyvkLq1QV2RTxkwoZwJ60ywLfZ0raFF4J/G886i7A==", "integrity": "sha512-YOf0VSj5nUPI27doTtXF+BBnsiRq3qY7avHqfIWnppxTLGyvkLq1QV2RTxkwoZwJ60ywLfZ0raFF4J/G886i7A==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/better-sqlite3": {
"version": "13.0.3",
"resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-13.0.3.tgz",
"integrity": "sha512-RbOBxmLBG8uvFUc15X9+9SFemKcQ0WBuISBVkpuiaUB2qblC8UWlHEjdWVoZ8AdhSwmoEgsiXKfopX0CQxaACQ==",
"license": "MIT",
"optional": true,
"peer": true,
"dependencies": {
"node-addon-api": "^8.0.0"
},
"engines": {
"node": ">=22"
}
},
"node_modules/body-parser": { "node_modules/body-parser": {
"version": "1.20.6", "version": "1.20.6",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.6.tgz", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.6.tgz",
@@ -3575,6 +3620,12 @@
"node": ">= 0.8" "node": ">= 0.8"
} }
}, },
"node_modules/comlink": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz",
"integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==",
"license": "Apache-2.0"
},
"node_modules/commander": { "node_modules/commander": {
"version": "13.1.0", "version": "13.1.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz",
@@ -5362,6 +5413,17 @@
"node": ">= 0.6" "node": ">= 0.6"
} }
}, },
"node_modules/node-addon-api": {
"version": "8.9.2",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.9.2.tgz",
"integrity": "sha512-VijLXbi3UACN69I0JVXJsX4tjACjNoQDgv2gTF6sx2wWEi8tkSg2eX8p5gSIFi8z2+DL3oHmY6OyKce38SDolg==",
"license": "MIT",
"optional": true,
"peer": true,
"engines": {
"node": "^18 || ^20 || >= 21"
}
},
"node_modules/node-cron": { "node_modules/node-cron": {
"version": "3.0.3", "version": "3.0.3",
"resolved": "https://registry.npmjs.org/node-cron/-/node-cron-3.0.3.tgz", "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-3.0.3.tgz",
@@ -5579,6 +5641,104 @@
"integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==",
"license": "MIT" "license": "MIT"
}, },
"node_modules/pg": {
"version": "8.23.1",
"resolved": "https://registry.npmjs.org/pg/-/pg-8.23.1.tgz",
"integrity": "sha512-aL96AHANtWjPLDOLqnhx+ngp9+UK7ETEU8VJrDCGvsSSi/mGLcWYsS6Herg7lmaBJe4uwrfqsa7gTEFaSizDoQ==",
"license": "MIT",
"dependencies": {
"pg-connection-string": "^2.14.1",
"pg-pool": "^3.14.0",
"pg-protocol": "^1.16.1",
"pg-types": "2.2.0",
"pgpass": "1.0.5"
},
"engines": {
"node": ">= 16.0.0"
},
"optionalDependencies": {
"pg-cloudflare": "^1.4.1"
},
"peerDependencies": {
"pg-native": ">=3.0.1"
},
"peerDependenciesMeta": {
"pg-native": {
"optional": true
}
}
},
"node_modules/pg-cloudflare": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.4.1.tgz",
"integrity": "sha512-6PQbsFWZcp9EmJEwy5cGQ2La+AMWpP46lgbb8X+U/XsHIUweYDNCpeuKck5RxL2MdVFi7krbbEi5nX4Zh7JhrQ==",
"license": "MIT",
"optional": true
},
"node_modules/pg-connection-string": {
"version": "2.14.1",
"resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.14.1.tgz",
"integrity": "sha512-qR3kGNPBLpCNtz0evbKA0Y/MRFXwSSdT+pTJvYp/bXTcReZbvX1kzF0IyTc1QnxqF7AZbOeBhNL8R5mYQZV/MA==",
"license": "MIT"
},
"node_modules/pg-int8": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/pg-int8/-/pg-int8-1.0.1.tgz",
"integrity": "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==",
"license": "ISC",
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/pg-pool": {
"version": "3.14.0",
"resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.14.0.tgz",
"integrity": "sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==",
"license": "MIT",
"peerDependencies": {
"pg": ">=8.0"
}
},
"node_modules/pg-protocol": {
"version": "1.16.1",
"resolved": "https://registry.npmjs.org/pg-protocol/-/pg-protocol-1.16.1.tgz",
"integrity": "sha512-p9VOFMiHB/ZbJATetbg+99PxssTVSQRnyuPSQ67mN1+1KBOjZaZ83ZQzltnxPhJwSsC3nwVjJ10DVJlerbFzLg==",
"license": "MIT"
},
"node_modules/pg-types": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/pg-types/-/pg-types-2.2.0.tgz",
"integrity": "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==",
"license": "MIT",
"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"
},
"engines": {
"node": ">=4"
}
},
"node_modules/pg-types/node_modules/postgres-array": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz",
"integrity": "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==",
"license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/pgpass": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/pgpass/-/pgpass-1.0.5.tgz",
"integrity": "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==",
"license": "MIT",
"dependencies": {
"split2": "^4.1.0"
}
},
"node_modules/picocolors": { "node_modules/picocolors": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -5619,6 +5779,45 @@
"url": "https://github.com/sponsors/porsager" "url": "https://github.com/sponsors/porsager"
} }
}, },
"node_modules/postgres-array": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/postgres-array/-/postgres-array-3.0.4.tgz",
"integrity": "sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==",
"license": "MIT",
"engines": {
"node": ">=12"
}
},
"node_modules/postgres-bytea": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/postgres-bytea/-/postgres-bytea-1.0.1.tgz",
"integrity": "sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/postgres-date": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/postgres-date/-/postgres-date-1.0.7.tgz",
"integrity": "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/postgres-interval": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/postgres-interval/-/postgres-interval-1.2.0.tgz",
"integrity": "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==",
"license": "MIT",
"dependencies": {
"xtend": "^4.0.0"
},
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/prisma": { "node_modules/prisma": {
"version": "7.7.0", "version": "7.7.0",
"resolved": "https://registry.npmjs.org/prisma/-/prisma-7.7.0.tgz", "resolved": "https://registry.npmjs.org/prisma/-/prisma-7.7.0.tgz",
@@ -6470,6 +6669,15 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/split2": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz",
"integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==",
"license": "ISC",
"engines": {
"node": ">= 10.x"
}
},
"node_modules/sprintf-js": { "node_modules/sprintf-js": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
@@ -6938,6 +7146,15 @@
} }
} }
}, },
"node_modules/xtend": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
"license": "MIT",
"engines": {
"node": ">=0.4"
}
},
"node_modules/y18n": { "node_modules/y18n": {
"version": "5.0.8", "version": "5.0.8",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+4 -1
View File
@@ -30,7 +30,10 @@
"publish": "bash scripts/wsl/build-apk.sh release" "publish": "bash scripts/wsl/build-apk.sh release"
}, },
"dependencies": { "dependencies": {
"@prisma/adapter-mariadb": "^7.9.1", "@journeyapps/wa-sqlite": "^2.0.7",
"@powersync/react": "^2.1.0",
"@powersync/web": "^2.5.0",
"@prisma/adapter-pg": "^7.9.1",
"@prisma/client": "^7.7.0", "@prisma/client": "^7.7.0",
"@zythum02/mijia-api": "^0.1.4", "@zythum02/mijia-api": "^0.1.4",
"antd-mobile": "^5.42.3", "antd-mobile": "^5.42.3",
@@ -1,62 +0,0 @@
-- CreateTable
CREATE TABLE `User` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`name` VARCHAR(191) NOT NULL,
`email` VARCHAR(191) NOT NULL,
`password` VARCHAR(191) NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `User_email_key`(`email`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Article` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`title` VARCHAR(191) NOT NULL,
`slug` VARCHAR(191) NOT NULL,
`content` VARCHAR(191) NOT NULL,
`date` VARCHAR(191) NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `Article_slug_key`(`slug`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Strategy` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`name` VARCHAR(191) NOT NULL,
`description` VARCHAR(191) NOT NULL,
`data` JSON NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Indicator` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`name` VARCHAR(191) NOT NULL,
`groupName` VARCHAR(191) NOT NULL,
`data` JSON NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `SowInventory` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`month` VARCHAR(191) NOT NULL,
`inventory` INTEGER NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `SowInventory_month_key`(`month`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -1,20 +0,0 @@
/*
Warnings:
- You are about to drop the `SowInventory` table. If the table is not empty, all the data it contains will be lost.
*/
-- DropTable
DROP TABLE `SowInventory`;
-- CreateTable
CREATE TABLE `Econ_SowInventory` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`month` VARCHAR(191) NOT NULL,
`inventory` INTEGER NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `Econ_SowInventory_month_key`(`month`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -1,13 +0,0 @@
-- CreateTable
CREATE TABLE `ScraperCache` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`scraperName` VARCHAR(191) NOT NULL,
`lastDataHash` VARCHAR(191) NULL,
`lastUpdateAt` DATETIME(3) NOT NULL,
`metadata` JSON NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `ScraperCache_scraperName_key`(`scraperName`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -1,5 +0,0 @@
-- Add unique constraint on Strategy.name to enable idempotent upsert in seed script
ALTER TABLE `Strategy` ADD UNIQUE INDEX `Strategy_name_key`(`name`);
-- Add unique constraint on Indicator.name to enable idempotent upsert in seed script
ALTER TABLE `Indicator` ADD UNIQUE INDEX `Indicator_name_key`(`name`);
@@ -1,24 +0,0 @@
-- 经济指标: 明细数据拆到独立表, 兼容年/季/月/日频率
-- 第一步: 建 IndicatorPoint 表 + Indicator 加元数据列 (data 列暂保留, 由迁移脚本搬运后删除)
-- CreateTable
CREATE TABLE `IndicatorPoint` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`indicatorId` INTEGER NOT NULL,
`period` VARCHAR(191) NOT NULL,
`value` DOUBLE NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `IndicatorPoint_indicatorId_period_key`(`indicatorId`, `period`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AlterTable: 元数据列 (data JSON 拆出)
ALTER TABLE `Indicator` ADD COLUMN `title` VARCHAR(191) NOT NULL DEFAULT '',
ADD COLUMN `unit` VARCHAR(191) NOT NULL DEFAULT '',
ADD COLUMN `source` VARCHAR(191) NOT NULL DEFAULT '',
ADD COLUMN `frequency` VARCHAR(191) NOT NULL DEFAULT 'month';
-- AddForeignKey
ALTER TABLE `IndicatorPoint` ADD CONSTRAINT `IndicatorPoint_indicatorId_fkey` FOREIGN KEY (`indicatorId`) REFERENCES `Indicator`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,3 +0,0 @@
-- 第二步: 明细数据已迁移到 IndicatorPoint, 删除 Indicator.data JSON 列
-- AlterTable
ALTER TABLE `Indicator` DROP COLUMN `data`;
@@ -1,2 +0,0 @@
-- 指标隐藏标记: 数据与获取脚本保留, 前端展示过滤 hidden=true
ALTER TABLE `Indicator` ADD COLUMN `hidden` BOOLEAN NOT NULL DEFAULT false;
@@ -1,32 +0,0 @@
-- CreateTable
CREATE TABLE `News` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`title` VARCHAR(191) NOT NULL,
`summary` VARCHAR(191) NOT NULL DEFAULT '',
`source` VARCHAR(191) NOT NULL DEFAULT '',
`url` VARCHAR(191) NOT NULL DEFAULT '',
`publishedAt` DATETIME(3) NOT NULL,
`impactRank` INTEGER NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
UNIQUE INDEX `News_title_publishedAt_key`(`title`, `publishedAt`),
INDEX `News_publishedAt_idx`(`publishedAt`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Alert` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`indicatorName` VARCHAR(191) NOT NULL,
`period` VARCHAR(191) NOT NULL,
`valueA` DOUBLE NOT NULL,
`valueB` DOUBLE NOT NULL,
`sourceA` VARCHAR(191) NOT NULL,
`sourceB` VARCHAR(191) NOT NULL,
`diff` DOUBLE NOT NULL,
`diffRatio` DOUBLE NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
INDEX `Alert_createdAt_idx`(`createdAt`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -1,68 +0,0 @@
-- 服务器监控 + 服务健康检查
-- CreateTable
CREATE TABLE `ServerNode` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`uuid` VARCHAR(191) NOT NULL,
`name` VARCHAR(191) NOT NULL,
`cpuName` VARCHAR(191) NOT NULL DEFAULT '',
`os` VARCHAR(191) NOT NULL DEFAULT '',
`region` VARCHAR(191) NOT NULL DEFAULT '',
`memTotal` BIGINT NOT NULL DEFAULT 0,
`diskTotal` BIGINT NOT NULL DEFAULT 0,
`cpuCores` INTEGER NOT NULL DEFAULT 0,
`cpuUsage` DOUBLE NOT NULL DEFAULT 0,
`ramUsed` BIGINT NOT NULL DEFAULT 0,
`swapUsed` BIGINT NOT NULL DEFAULT 0,
`load1` DOUBLE NOT NULL DEFAULT 0,
`load5` DOUBLE NOT NULL DEFAULT 0,
`load15` DOUBLE NOT NULL DEFAULT 0,
`diskUsed` BIGINT NOT NULL DEFAULT 0,
`netIn` BIGINT NOT NULL DEFAULT 0,
`netOut` BIGINT NOT NULL DEFAULT 0,
`uptime` BIGINT NOT NULL DEFAULT 0,
`process` INTEGER NOT NULL DEFAULT 0,
`connections` INTEGER NOT NULL DEFAULT 0,
`status` VARCHAR(191) NOT NULL DEFAULT 'unknown',
`recordedAt` DATETIME(3) NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `ServerNode_uuid_key`(`uuid`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `ServerNodeHistory` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`uuid` VARCHAR(191) NOT NULL,
`period` DATETIME(3) NOT NULL,
`cpu` DOUBLE NOT NULL DEFAULT 0,
`ram` BIGINT NOT NULL DEFAULT 0,
`load` DOUBLE NOT NULL DEFAULT 0,
`disk` BIGINT NOT NULL DEFAULT 0,
`netIn` BIGINT NOT NULL DEFAULT 0,
`netOut` BIGINT NOT NULL DEFAULT 0,
`process` INTEGER NOT NULL DEFAULT 0,
`connections` INTEGER NOT NULL DEFAULT 0,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
UNIQUE INDEX `ServerNodeHistory_uuid_period_key`(`uuid`, `period`),
INDEX `ServerNodeHistory_uuid_period_idx`(`uuid`, `period`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `ServiceCheck` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`name` VARCHAR(191) NOT NULL,
`url` VARCHAR(191) NOT NULL,
`status` VARCHAR(191) NOT NULL DEFAULT 'unknown',
`latencyMs` INTEGER NOT NULL DEFAULT 0,
`message` VARCHAR(191) NOT NULL DEFAULT '',
`lastCheckAt` DATETIME(3) NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `ServiceCheck_name_key`(`name`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -1,2 +0,0 @@
-- AlterTable (news.content 全文, 须在 news_and_alerts 建表之后执行)
ALTER TABLE `News` ADD COLUMN `content` TEXT NULL;
@@ -1,17 +0,0 @@
-- 浙江省油价历史表
-- - date: 调价日次日 (即数据实际抓取日, 便于按时间排序)
-- - province + fuel: 浙江 / 92/95/0
-- - unique (date, province, fuel): 防 cron 重复入库
-- - DOUBLE 容纳 999.999 元/升
CREATE TABLE OilPriceHistory (
id INT NOT NULL AUTO_INCREMENT,
date DATETIME(3) NOT NULL,
province VARCHAR(191) NOT NULL,
fuel VARCHAR(8) NOT NULL,
price DOUBLE NOT NULL,
source VARCHAR(191) NOT NULL DEFAULT 'apizero',
createdAt DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
PRIMARY KEY (id),
UNIQUE INDEX OilPriceHistory_date_province_fuel_key(date, province, fuel),
INDEX OilPriceHistory_province_fuel_date_idx(province, fuel, date)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
@@ -1,95 +0,0 @@
-- CreateTable
CREATE TABLE `MihomeAccount` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`key` VARCHAR(191) NOT NULL DEFAULT 'default',
`userId` VARCHAR(191) NOT NULL DEFAULT '',
`status` VARCHAR(191) NOT NULL DEFAULT 'unknown',
`lastError` VARCHAR(191) NOT NULL DEFAULT '',
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `MihomeAccount_key_key`(`key`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `MihomeHome` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`homeId` VARCHAR(191) NOT NULL,
`name` VARCHAR(191) NOT NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
UNIQUE INDEX `MihomeHome_homeId_key`(`homeId`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `MihomeDevice` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`did` VARCHAR(191) NOT NULL,
`homeId` VARCHAR(191) NOT NULL,
`model` VARCHAR(191) NOT NULL,
`name` VARCHAR(191) NOT NULL,
`alias` VARCHAR(191) NULL,
`tempSiid` INTEGER NOT NULL,
`tempPiid` INTEGER NOT NULL,
`humSiid` INTEGER NOT NULL,
`humPiid` INTEGER NOT NULL,
`battSiid` INTEGER NOT NULL,
`battPiid` INTEGER NOT NULL,
`battery` INTEGER NULL,
`batteryAt` DATETIME(3) NULL,
`enabled` BOOLEAN NOT NULL DEFAULT true,
`lastSyncAt` DATETIME(3) NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
UNIQUE INDEX `MihomeDevice_did_key`(`did`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `MihomeEnvSample` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`deviceId` INTEGER NOT NULL,
`date` DATETIME(3) NOT NULL,
`temperature` DOUBLE NULL,
`humidity` DOUBLE NULL,
`temperatureAvg` DOUBLE NULL,
`humidityAvg` DOUBLE NULL,
`temperatureMin` DOUBLE NULL,
`temperatureMax` DOUBLE NULL,
`humidityMin` DOUBLE NULL,
`humidityMax` DOUBLE NULL,
`origin` VARCHAR(191) NOT NULL DEFAULT 'live',
`sampledAt` DATETIME(3) NULL,
`raw` JSON NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
INDEX `MihomeEnvSample_deviceId_date_idx`(`deviceId`, `date`),
UNIQUE INDEX `MihomeEnvSample_deviceId_date_key`(`deviceId`, `date`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `MihomeEnvHour` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`deviceId` INTEGER NOT NULL,
`hour` DATETIME(3) NOT NULL,
`temperatureAvg` DOUBLE NULL,
`humidityAvg` DOUBLE NULL,
`raw` JSON NULL,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
INDEX `MihomeEnvHour_deviceId_hour_idx`(`deviceId`, `hour`),
UNIQUE INDEX `MihomeEnvHour_deviceId_hour_key`(`deviceId`, `hour`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `MihomeDevice` ADD CONSTRAINT `MihomeDevice_homeId_fkey` FOREIGN KEY (`homeId`) REFERENCES `MihomeHome`(`homeId`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `MihomeEnvSample` ADD CONSTRAINT `MihomeEnvSample_deviceId_fkey` FOREIGN KEY (`deviceId`) REFERENCES `MihomeDevice`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `MihomeEnvHour` ADD CONSTRAINT `MihomeEnvHour_deviceId_fkey` FOREIGN KEY (`deviceId`) REFERENCES `MihomeDevice`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,99 +0,0 @@
-- CreateTable
CREATE TABLE `Habit` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`userId` INTEGER NOT NULL,
`name` VARCHAR(191) NOT NULL,
`period` VARCHAR(191) NOT NULL DEFAULT 'day',
`target` INTEGER NOT NULL DEFAULT 1,
`color` VARCHAR(191) NOT NULL DEFAULT '#1677ff',
`icon` VARCHAR(191) NOT NULL DEFAULT '',
`note` VARCHAR(191) NOT NULL DEFAULT '',
`archived` BOOLEAN NOT NULL DEFAULT false,
`sortOrder` INTEGER NOT NULL DEFAULT 0,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
INDEX `Habit_userId_archived_sortOrder_idx`(`userId`, `archived`, `sortOrder`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `CheckIn` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`habitId` INTEGER NOT NULL,
`userId` INTEGER NOT NULL,
`date` VARCHAR(10) NOT NULL,
`seq` INTEGER NOT NULL DEFAULT 1,
`note` VARCHAR(191) NOT NULL DEFAULT '',
`source` VARCHAR(191) NOT NULL DEFAULT 'user',
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
UNIQUE INDEX `CheckIn_habitId_date_seq_key`(`habitId`, `date`, `seq`),
INDEX `CheckIn_userId_date_idx`(`userId`, `date`),
INDEX `CheckIn_habitId_date_idx`(`habitId`, `date`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `CheckList` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`userId` INTEGER NOT NULL,
`title` VARCHAR(191) NOT NULL,
`scene` VARCHAR(191) NOT NULL DEFAULT '',
`note` VARCHAR(191) NOT NULL DEFAULT '',
`archived` BOOLEAN NOT NULL DEFAULT false,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
INDEX `CheckList_userId_archived_idx`(`userId`, `archived`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `CheckListItem` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`listId` INTEGER NOT NULL,
`title` VARCHAR(191) NOT NULL,
`note` VARCHAR(191) NOT NULL DEFAULT '',
`done` BOOLEAN NOT NULL DEFAULT false,
`doneAt` DATETIME(3) NULL,
`sortOrder` INTEGER NOT NULL DEFAULT 0,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
INDEX `CheckListItem_listId_sortOrder_idx`(`listId`, `sortOrder`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `CheckListTemplate` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`userId` INTEGER NULL,
`name` VARCHAR(191) NOT NULL,
`scene` VARCHAR(191) NOT NULL DEFAULT '',
`items` JSON NOT NULL,
`builtin` BOOLEAN NOT NULL DEFAULT false,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
INDEX `CheckListTemplate_userId_builtin_idx`(`userId`, `builtin`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `Habit` ADD CONSTRAINT `Habit_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `CheckIn` ADD CONSTRAINT `CheckIn_habitId_fkey` FOREIGN KEY (`habitId`) REFERENCES `Habit`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `CheckIn` ADD CONSTRAINT `CheckIn_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `CheckList` ADD CONSTRAINT `CheckList_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `CheckListItem` ADD CONSTRAINT `CheckListItem_listId_fkey` FOREIGN KEY (`listId`) REFERENCES `CheckList`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `CheckListTemplate` ADD CONSTRAINT `CheckListTemplate_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,126 +0,0 @@
-- 任务模块 (V0.2): 项目 / 成员 / 看板列 / 任务 / 任务成员 / 标签
-- 设计口径见 docs/V0.2/任务模块/任务模块数据库设计文档.md
-- CreateTable
CREATE TABLE `Project` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`ownerId` INTEGER NOT NULL,
`isPersonal` BOOLEAN NOT NULL DEFAULT false,
`archived` BOOLEAN NOT NULL DEFAULT false,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
INDEX `Project_ownerId_idx`(`ownerId`),
INDEX `Project_archived_idx`(`archived`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `ProjectMember` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`projectId` INTEGER NOT NULL,
`userId` INTEGER NOT NULL,
`permission` VARCHAR(191) NOT NULL DEFAULT 'member',
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
UNIQUE INDEX `ProjectMember_projectId_userId_key`(`projectId`, `userId`),
INDEX `ProjectMember_userId_idx`(`userId`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `BoardColumn` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`projectId` INTEGER NOT NULL,
`name` VARCHAR(20) NOT NULL,
`sortOrder` INTEGER NOT NULL DEFAULT 0,
`boundStatus` VARCHAR(8) NULL,
`retention` VARCHAR(8) NOT NULL DEFAULT 'forever',
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
UNIQUE INDEX `BoardColumn_projectId_name_key`(`projectId`, `name`),
INDEX `BoardColumn_projectId_sortOrder_idx`(`projectId`, `sortOrder`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `Task` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`projectId` INTEGER NOT NULL,
`columnId` INTEGER NOT NULL,
`parentId` INTEGER NULL,
`title` VARCHAR(200) NOT NULL,
`description` TEXT NOT NULL,
`status` VARCHAR(8) NOT NULL DEFAULT 'todo',
`doneAt` DATETIME(3) NULL,
`assigneeId` INTEGER NULL,
`creatorId` INTEGER NOT NULL,
`extras` JSON NOT NULL,
`sortOrder` INTEGER NOT NULL DEFAULT 0,
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
`updatedAt` DATETIME(3) NOT NULL,
INDEX `Task_projectId_columnId_idx`(`projectId`, `columnId`),
INDEX `Task_projectId_status_idx`(`projectId`, `status`),
INDEX `Task_parentId_idx`(`parentId`),
INDEX `Task_projectId_doneAt_idx`(`projectId`, `doneAt`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `TaskMember` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`taskId` INTEGER NOT NULL,
`userId` INTEGER NOT NULL,
UNIQUE INDEX `TaskMember_taskId_userId_key`(`taskId`, `userId`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- CreateTable
CREATE TABLE `TaskTag` (
`id` INTEGER NOT NULL AUTO_INCREMENT,
`taskId` INTEGER NOT NULL,
`name` VARCHAR(20) NOT NULL,
INDEX `TaskTag_taskId_idx`(`taskId`),
PRIMARY KEY (`id`)
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- AddForeignKey
ALTER TABLE `Project` ADD CONSTRAINT `Project_ownerId_fkey` FOREIGN KEY (`ownerId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `ProjectMember` ADD CONSTRAINT `ProjectMember_projectId_fkey` FOREIGN KEY (`projectId`) REFERENCES `Project`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `ProjectMember` ADD CONSTRAINT `ProjectMember_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `BoardColumn` ADD CONSTRAINT `BoardColumn_projectId_fkey` FOREIGN KEY (`projectId`) REFERENCES `Project`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `Task` ADD CONSTRAINT `Task_projectId_fkey` FOREIGN KEY (`projectId`) REFERENCES `Project`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `Task` ADD CONSTRAINT `Task_columnId_fkey` FOREIGN KEY (`columnId`) REFERENCES `BoardColumn`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `Task` ADD CONSTRAINT `Task_parentId_fkey` FOREIGN KEY (`parentId`) REFERENCES `Task`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `Task` ADD CONSTRAINT `Task_assigneeId_fkey` FOREIGN KEY (`assigneeId`) REFERENCES `User`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `Task` ADD CONSTRAINT `Task_creatorId_fkey` FOREIGN KEY (`creatorId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `TaskMember` ADD CONSTRAINT `TaskMember_taskId_fkey` FOREIGN KEY (`taskId`) REFERENCES `Task`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `TaskMember` ADD CONSTRAINT `TaskMember_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `User`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE `TaskTag` ADD CONSTRAINT `TaskTag_taskId_fkey` FOREIGN KEY (`taskId`) REFERENCES `Task`(`id`) ON DELETE CASCADE ON UPDATE CASCADE;
@@ -1,7 +0,0 @@
-- 项目信息块 (T-PJ-13): Project 增加 notes JSON, 存 [{ title, content }] 任意多个长文本块
-- 分三步保证存量行安全: 先可空加列 -> 回填 '[]' -> 收紧为 NOT NULL
ALTER TABLE `Project` ADD COLUMN `notes` JSON NULL;
UPDATE `Project` SET `notes` = '[]' WHERE `notes` IS NULL;
ALTER TABLE `Project` MODIFY `notes` JSON NOT NULL;
@@ -1,3 +0,0 @@
-- 任务类型标签: 项目级自定义列表 + 任务上的类型
ALTER TABLE `Project` ADD COLUMN `taskKinds` JSON NULL;
ALTER TABLE `Task` ADD COLUMN `kind` VARCHAR(20) NULL;
@@ -1,2 +0,0 @@
-- 任务时间标记: 完整日期存储, 前端展示 MM-dd
ALTER TABLE `Task` ADD COLUMN `markDate` DATETIME(3) NULL;
@@ -1,2 +0,0 @@
-- 项目图标: data URL (客户端裁剪 96x96 JPEG, 约 10-20KB)
ALTER TABLE `Project` ADD COLUMN `icon` TEXT NULL;
@@ -0,0 +1,655 @@
-- CreateSchema
CREATE SCHEMA IF NOT EXISTS "public";
-- CreateTable
CREATE TABLE "User" (
"id" SERIAL NOT NULL,
"name" TEXT NOT NULL,
"email" TEXT NOT NULL,
"password" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Article" (
"id" SERIAL NOT NULL,
"title" TEXT NOT NULL,
"slug" TEXT NOT NULL,
"content" TEXT NOT NULL,
"date" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "Article_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Strategy" (
"id" SERIAL NOT NULL,
"name" TEXT NOT NULL,
"description" TEXT NOT NULL,
"data" JSONB NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "Strategy_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Indicator" (
"id" SERIAL NOT NULL,
"name" TEXT NOT NULL,
"groupName" TEXT NOT NULL,
"title" TEXT NOT NULL DEFAULT '',
"unit" TEXT NOT NULL DEFAULT '',
"source" TEXT NOT NULL DEFAULT '',
"frequency" TEXT NOT NULL DEFAULT 'month',
"hidden" BOOLEAN NOT NULL DEFAULT false,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "Indicator_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "IndicatorPoint" (
"id" SERIAL NOT NULL,
"indicatorId" INTEGER NOT NULL,
"period" TEXT NOT NULL,
"value" DOUBLE PRECISION NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "IndicatorPoint_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "News" (
"id" SERIAL NOT NULL,
"title" TEXT NOT NULL,
"summary" TEXT NOT NULL DEFAULT '',
"content" TEXT,
"source" TEXT NOT NULL DEFAULT '',
"url" TEXT NOT NULL DEFAULT '',
"publishedAt" TIMESTAMP(3) NOT NULL,
"impactRank" INTEGER NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "News_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Alert" (
"id" SERIAL NOT NULL,
"indicatorName" TEXT NOT NULL,
"period" TEXT NOT NULL,
"valueA" DOUBLE PRECISION NOT NULL,
"valueB" DOUBLE PRECISION NOT NULL,
"sourceA" TEXT NOT NULL,
"sourceB" TEXT NOT NULL,
"diff" DOUBLE PRECISION NOT NULL,
"diffRatio" DOUBLE PRECISION NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "Alert_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "ServerNode" (
"id" SERIAL NOT NULL,
"uuid" TEXT NOT NULL,
"name" TEXT NOT NULL,
"cpuName" TEXT NOT NULL DEFAULT '',
"os" TEXT NOT NULL DEFAULT '',
"region" TEXT NOT NULL DEFAULT '',
"memTotal" BIGINT NOT NULL DEFAULT 0,
"diskTotal" BIGINT NOT NULL DEFAULT 0,
"cpuCores" INTEGER NOT NULL DEFAULT 0,
"cpuUsage" DOUBLE PRECISION NOT NULL DEFAULT 0,
"ramUsed" BIGINT NOT NULL DEFAULT 0,
"swapUsed" BIGINT NOT NULL DEFAULT 0,
"load1" DOUBLE PRECISION NOT NULL DEFAULT 0,
"load5" DOUBLE PRECISION NOT NULL DEFAULT 0,
"load15" DOUBLE PRECISION NOT NULL DEFAULT 0,
"diskUsed" BIGINT NOT NULL DEFAULT 0,
"netIn" BIGINT NOT NULL DEFAULT 0,
"netOut" BIGINT NOT NULL DEFAULT 0,
"uptime" BIGINT NOT NULL DEFAULT 0,
"process" INTEGER NOT NULL DEFAULT 0,
"connections" INTEGER NOT NULL DEFAULT 0,
"status" TEXT NOT NULL DEFAULT 'unknown',
"recordedAt" TIMESTAMP(3) NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "ServerNode_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "ServerNodeHistory" (
"id" SERIAL NOT NULL,
"uuid" TEXT NOT NULL,
"period" TIMESTAMP(3) NOT NULL,
"cpu" DOUBLE PRECISION NOT NULL DEFAULT 0,
"ram" BIGINT NOT NULL DEFAULT 0,
"load" DOUBLE PRECISION NOT NULL DEFAULT 0,
"disk" BIGINT NOT NULL DEFAULT 0,
"netIn" BIGINT NOT NULL DEFAULT 0,
"netOut" BIGINT NOT NULL DEFAULT 0,
"process" INTEGER NOT NULL DEFAULT 0,
"connections" INTEGER NOT NULL DEFAULT 0,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "ServerNodeHistory_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "ServiceCheck" (
"id" SERIAL NOT NULL,
"name" TEXT NOT NULL,
"url" TEXT NOT NULL,
"status" TEXT NOT NULL DEFAULT 'unknown',
"latencyMs" INTEGER NOT NULL DEFAULT 0,
"message" TEXT NOT NULL DEFAULT '',
"lastCheckAt" TIMESTAMP(3) NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "ServiceCheck_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Econ_SowInventory" (
"id" SERIAL NOT NULL,
"month" TEXT NOT NULL,
"inventory" INTEGER NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "Econ_SowInventory_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "ScraperCache" (
"id" SERIAL NOT NULL,
"scraperName" TEXT NOT NULL,
"lastDataHash" TEXT,
"lastUpdateAt" TIMESTAMP(3) NOT NULL,
"metadata" JSONB,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "ScraperCache_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "OilPriceHistory" (
"id" SERIAL NOT NULL,
"date" TIMESTAMP(3) NOT NULL,
"province" TEXT NOT NULL,
"fuel" TEXT NOT NULL,
"price" DOUBLE PRECISION NOT NULL,
"source" TEXT NOT NULL DEFAULT 'apizero',
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "OilPriceHistory_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "MihomeAccount" (
"id" SERIAL NOT NULL,
"key" TEXT NOT NULL DEFAULT 'default',
"userId" TEXT NOT NULL DEFAULT '',
"status" TEXT NOT NULL DEFAULT 'unknown',
"lastError" TEXT NOT NULL DEFAULT '',
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "MihomeAccount_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "MihomeHome" (
"id" SERIAL NOT NULL,
"homeId" TEXT NOT NULL,
"name" TEXT NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "MihomeHome_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "MihomeDevice" (
"id" SERIAL NOT NULL,
"did" TEXT NOT NULL,
"homeId" TEXT NOT NULL,
"model" TEXT NOT NULL,
"name" TEXT NOT NULL,
"alias" TEXT,
"tempSiid" INTEGER NOT NULL,
"tempPiid" INTEGER NOT NULL,
"humSiid" INTEGER NOT NULL,
"humPiid" INTEGER NOT NULL,
"battSiid" INTEGER NOT NULL,
"battPiid" INTEGER NOT NULL,
"battery" INTEGER,
"batteryAt" TIMESTAMP(3),
"enabled" BOOLEAN NOT NULL DEFAULT true,
"lastSyncAt" TIMESTAMP(3),
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "MihomeDevice_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "MihomeEnvSample" (
"id" SERIAL NOT NULL,
"deviceId" INTEGER NOT NULL,
"date" TIMESTAMP(3) NOT NULL,
"temperature" DOUBLE PRECISION,
"humidity" DOUBLE PRECISION,
"temperatureAvg" DOUBLE PRECISION,
"humidityAvg" DOUBLE PRECISION,
"temperatureMin" DOUBLE PRECISION,
"temperatureMax" DOUBLE PRECISION,
"humidityMin" DOUBLE PRECISION,
"humidityMax" DOUBLE PRECISION,
"origin" TEXT NOT NULL DEFAULT 'live',
"sampledAt" TIMESTAMP(3),
"raw" JSONB,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "MihomeEnvSample_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "MihomeEnvHour" (
"id" SERIAL NOT NULL,
"deviceId" INTEGER NOT NULL,
"hour" TIMESTAMP(3) NOT NULL,
"temperatureAvg" DOUBLE PRECISION,
"humidityAvg" DOUBLE PRECISION,
"raw" JSONB,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "MihomeEnvHour_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Habit" (
"id" SERIAL NOT NULL,
"userId" INTEGER NOT NULL,
"name" TEXT NOT NULL,
"period" TEXT NOT NULL DEFAULT 'day',
"target" INTEGER NOT NULL DEFAULT 1,
"color" TEXT NOT NULL DEFAULT '#1677ff',
"icon" TEXT NOT NULL DEFAULT '',
"note" TEXT NOT NULL DEFAULT '',
"archived" BOOLEAN NOT NULL DEFAULT false,
"sortOrder" INTEGER NOT NULL DEFAULT 0,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "Habit_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "CheckIn" (
"id" SERIAL NOT NULL,
"habitId" INTEGER NOT NULL,
"userId" INTEGER NOT NULL,
"date" VARCHAR(10) NOT NULL,
"seq" INTEGER NOT NULL DEFAULT 1,
"note" TEXT NOT NULL DEFAULT '',
"source" TEXT NOT NULL DEFAULT 'user',
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "CheckIn_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "CheckList" (
"id" SERIAL NOT NULL,
"userId" INTEGER NOT NULL,
"title" TEXT NOT NULL,
"scene" TEXT NOT NULL DEFAULT '',
"note" TEXT NOT NULL DEFAULT '',
"archived" BOOLEAN NOT NULL DEFAULT false,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "CheckList_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "CheckListItem" (
"id" SERIAL NOT NULL,
"listId" INTEGER NOT NULL,
"title" TEXT NOT NULL,
"note" TEXT NOT NULL DEFAULT '',
"done" BOOLEAN NOT NULL DEFAULT false,
"doneAt" TIMESTAMP(3),
"sortOrder" INTEGER NOT NULL DEFAULT 0,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "CheckListItem_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "CheckListTemplate" (
"id" SERIAL NOT NULL,
"userId" INTEGER,
"name" TEXT NOT NULL,
"scene" TEXT NOT NULL DEFAULT '',
"items" JSONB NOT NULL,
"builtin" BOOLEAN NOT NULL DEFAULT false,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "CheckListTemplate_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Project" (
"id" SERIAL NOT NULL,
"uuid" VARCHAR(36) NOT NULL,
"code" VARCHAR(8) NOT NULL,
"name" VARCHAR(50) NOT NULL,
"ownerId" INTEGER NOT NULL,
"isPersonal" BOOLEAN NOT NULL DEFAULT false,
"archived" BOOLEAN NOT NULL DEFAULT false,
"notes" JSONB NOT NULL DEFAULT '[]',
"taskKinds" JSONB,
"icon" TEXT,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "Project_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "ProjectMember" (
"id" SERIAL NOT NULL,
"uuid" VARCHAR(36) NOT NULL,
"projectId" INTEGER NOT NULL,
"userId" INTEGER NOT NULL,
"permission" TEXT NOT NULL DEFAULT 'member',
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "ProjectMember_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "BoardColumn" (
"id" SERIAL NOT NULL,
"uuid" VARCHAR(36) NOT NULL,
"projectId" INTEGER NOT NULL,
"name" VARCHAR(20) NOT NULL,
"sortOrder" INTEGER NOT NULL DEFAULT 0,
"boundStatus" VARCHAR(8),
"retention" VARCHAR(8) NOT NULL DEFAULT 'forever',
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
CONSTRAINT "BoardColumn_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "Task" (
"id" SERIAL NOT NULL,
"uuid" VARCHAR(36) NOT NULL,
"projectId" INTEGER NOT NULL,
"columnId" INTEGER NOT NULL,
"parentId" INTEGER,
"title" VARCHAR(200) NOT NULL,
"description" TEXT NOT NULL DEFAULT '',
"kind" VARCHAR(20),
"markDate" TIMESTAMP(3),
"status" VARCHAR(8) NOT NULL DEFAULT 'todo',
"doneAt" TIMESTAMP(3),
"assigneeId" INTEGER,
"creatorId" INTEGER NOT NULL,
"extras" JSONB NOT NULL DEFAULT '[]',
"sortOrder" INTEGER NOT NULL DEFAULT 0,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,
"number" INTEGER,
CONSTRAINT "Task_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "TaskMember" (
"id" SERIAL NOT NULL,
"uuid" VARCHAR(36) NOT NULL,
"taskId" INTEGER NOT NULL,
"userId" INTEGER NOT NULL,
CONSTRAINT "TaskMember_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "TaskTag" (
"id" SERIAL NOT NULL,
"uuid" VARCHAR(36) NOT NULL,
"taskId" INTEGER NOT NULL,
"name" VARCHAR(20) NOT NULL,
CONSTRAINT "TaskTag_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE UNIQUE INDEX "User_email_key" ON "User"("email");
-- CreateIndex
CREATE UNIQUE INDEX "Article_slug_key" ON "Article"("slug");
-- CreateIndex
CREATE UNIQUE INDEX "Indicator_name_key" ON "Indicator"("name");
-- CreateIndex
CREATE UNIQUE INDEX "IndicatorPoint_indicatorId_period_key" ON "IndicatorPoint"("indicatorId", "period");
-- CreateIndex
CREATE INDEX "News_publishedAt_idx" ON "News"("publishedAt");
-- CreateIndex
CREATE UNIQUE INDEX "News_title_publishedAt_key" ON "News"("title", "publishedAt");
-- CreateIndex
CREATE INDEX "Alert_createdAt_idx" ON "Alert"("createdAt");
-- CreateIndex
CREATE UNIQUE INDEX "ServerNode_uuid_key" ON "ServerNode"("uuid");
-- CreateIndex
CREATE INDEX "ServerNodeHistory_uuid_period_idx" ON "ServerNodeHistory"("uuid", "period");
-- CreateIndex
CREATE UNIQUE INDEX "ServerNodeHistory_uuid_period_key" ON "ServerNodeHistory"("uuid", "period");
-- CreateIndex
CREATE UNIQUE INDEX "ServiceCheck_name_key" ON "ServiceCheck"("name");
-- CreateIndex
CREATE UNIQUE INDEX "Econ_SowInventory_month_key" ON "Econ_SowInventory"("month");
-- CreateIndex
CREATE UNIQUE INDEX "ScraperCache_scraperName_key" ON "ScraperCache"("scraperName");
-- CreateIndex
CREATE INDEX "OilPriceHistory_province_fuel_date_idx" ON "OilPriceHistory"("province", "fuel", "date");
-- CreateIndex
CREATE UNIQUE INDEX "OilPriceHistory_date_province_fuel_key" ON "OilPriceHistory"("date", "province", "fuel");
-- CreateIndex
CREATE UNIQUE INDEX "MihomeAccount_key_key" ON "MihomeAccount"("key");
-- CreateIndex
CREATE UNIQUE INDEX "MihomeHome_homeId_key" ON "MihomeHome"("homeId");
-- CreateIndex
CREATE UNIQUE INDEX "MihomeDevice_did_key" ON "MihomeDevice"("did");
-- CreateIndex
CREATE INDEX "MihomeEnvSample_deviceId_date_idx" ON "MihomeEnvSample"("deviceId", "date");
-- CreateIndex
CREATE UNIQUE INDEX "MihomeEnvSample_deviceId_date_key" ON "MihomeEnvSample"("deviceId", "date");
-- CreateIndex
CREATE INDEX "MihomeEnvHour_deviceId_hour_idx" ON "MihomeEnvHour"("deviceId", "hour");
-- CreateIndex
CREATE UNIQUE INDEX "MihomeEnvHour_deviceId_hour_key" ON "MihomeEnvHour"("deviceId", "hour");
-- CreateIndex
CREATE INDEX "Habit_userId_archived_sortOrder_idx" ON "Habit"("userId", "archived", "sortOrder");
-- CreateIndex
CREATE INDEX "CheckIn_userId_date_idx" ON "CheckIn"("userId", "date");
-- CreateIndex
CREATE INDEX "CheckIn_habitId_date_idx" ON "CheckIn"("habitId", "date");
-- CreateIndex
CREATE UNIQUE INDEX "CheckIn_habitId_date_seq_key" ON "CheckIn"("habitId", "date", "seq");
-- CreateIndex
CREATE INDEX "CheckList_userId_archived_idx" ON "CheckList"("userId", "archived");
-- CreateIndex
CREATE INDEX "CheckListItem_listId_sortOrder_idx" ON "CheckListItem"("listId", "sortOrder");
-- CreateIndex
CREATE INDEX "CheckListTemplate_userId_builtin_idx" ON "CheckListTemplate"("userId", "builtin");
-- CreateIndex
CREATE UNIQUE INDEX "Project_uuid_key" ON "Project"("uuid");
-- CreateIndex
CREATE UNIQUE INDEX "Project_code_key" ON "Project"("code");
-- CreateIndex
CREATE INDEX "Project_ownerId_idx" ON "Project"("ownerId");
-- CreateIndex
CREATE INDEX "Project_archived_idx" ON "Project"("archived");
-- CreateIndex
CREATE UNIQUE INDEX "ProjectMember_uuid_key" ON "ProjectMember"("uuid");
-- CreateIndex
CREATE INDEX "ProjectMember_userId_idx" ON "ProjectMember"("userId");
-- CreateIndex
CREATE UNIQUE INDEX "ProjectMember_projectId_userId_key" ON "ProjectMember"("projectId", "userId");
-- CreateIndex
CREATE UNIQUE INDEX "BoardColumn_uuid_key" ON "BoardColumn"("uuid");
-- CreateIndex
CREATE INDEX "BoardColumn_projectId_sortOrder_idx" ON "BoardColumn"("projectId", "sortOrder");
-- CreateIndex
CREATE UNIQUE INDEX "BoardColumn_projectId_name_key" ON "BoardColumn"("projectId", "name");
-- CreateIndex
CREATE UNIQUE INDEX "Task_uuid_key" ON "Task"("uuid");
-- CreateIndex
CREATE INDEX "Task_projectId_columnId_idx" ON "Task"("projectId", "columnId");
-- CreateIndex
CREATE INDEX "Task_projectId_status_idx" ON "Task"("projectId", "status");
-- CreateIndex
CREATE INDEX "Task_parentId_idx" ON "Task"("parentId");
-- CreateIndex
CREATE INDEX "Task_projectId_doneAt_idx" ON "Task"("projectId", "doneAt");
-- CreateIndex
CREATE UNIQUE INDEX "Task_projectId_number_key" ON "Task"("projectId", "number");
-- CreateIndex
CREATE UNIQUE INDEX "TaskMember_uuid_key" ON "TaskMember"("uuid");
-- CreateIndex
CREATE UNIQUE INDEX "TaskMember_taskId_userId_key" ON "TaskMember"("taskId", "userId");
-- CreateIndex
CREATE UNIQUE INDEX "TaskTag_uuid_key" ON "TaskTag"("uuid");
-- CreateIndex
CREATE INDEX "TaskTag_taskId_idx" ON "TaskTag"("taskId");
-- AddForeignKey
ALTER TABLE "IndicatorPoint" ADD CONSTRAINT "IndicatorPoint_indicatorId_fkey" FOREIGN KEY ("indicatorId") REFERENCES "Indicator"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "MihomeDevice" ADD CONSTRAINT "MihomeDevice_homeId_fkey" FOREIGN KEY ("homeId") REFERENCES "MihomeHome"("homeId") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "MihomeEnvSample" ADD CONSTRAINT "MihomeEnvSample_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "MihomeDevice"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "MihomeEnvHour" ADD CONSTRAINT "MihomeEnvHour_deviceId_fkey" FOREIGN KEY ("deviceId") REFERENCES "MihomeDevice"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Habit" ADD CONSTRAINT "Habit_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "CheckIn" ADD CONSTRAINT "CheckIn_habitId_fkey" FOREIGN KEY ("habitId") REFERENCES "Habit"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "CheckIn" ADD CONSTRAINT "CheckIn_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "CheckList" ADD CONSTRAINT "CheckList_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "CheckListItem" ADD CONSTRAINT "CheckListItem_listId_fkey" FOREIGN KEY ("listId") REFERENCES "CheckList"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "CheckListTemplate" ADD CONSTRAINT "CheckListTemplate_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Project" ADD CONSTRAINT "Project_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "ProjectMember" ADD CONSTRAINT "ProjectMember_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "ProjectMember" ADD CONSTRAINT "ProjectMember_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "BoardColumn" ADD CONSTRAINT "BoardColumn_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Task" ADD CONSTRAINT "Task_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Task" ADD CONSTRAINT "Task_columnId_fkey" FOREIGN KEY ("columnId") REFERENCES "BoardColumn"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Task" ADD CONSTRAINT "Task_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Task" ADD CONSTRAINT "Task_assigneeId_fkey" FOREIGN KEY ("assigneeId") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "Task" ADD CONSTRAINT "Task_creatorId_fkey" FOREIGN KEY ("creatorId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "TaskMember" ADD CONSTRAINT "TaskMember_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "TaskMember" ADD CONSTRAINT "TaskMember_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "TaskTag" ADD CONSTRAINT "TaskTag_taskId_fkey" FOREIGN KEY ("taskId") REFERENCES "Task"("id") ON DELETE CASCADE ON UPDATE CASCADE;
@@ -0,0 +1,96 @@
-- uuid 外键镜像 (PowerSync Sequential ID Mapping, 见 docs/V0.2/离线编辑模块/0.2.1实施方案.md §3)
-- 目的: 同步流以 uuid 作为客户端主键 (离线新建行同步回填后本地 id 稳定不变),
-- 外键列同步输出 uuid 镜像 (别名回 projectId/columnId/parentId/taskId), 客户端零改动。
-- 镜像列由触发器维护: REST/Prisma 写 int 外键 -> 触发器回填 uuid; upload 端在应用层解析 uuid -> int。
-- 1) 加列 (先可空)
ALTER TABLE "BoardColumn" ADD COLUMN "projectUuid" VARCHAR(36);
ALTER TABLE "Task" ADD COLUMN "projectUuid" VARCHAR(36), ADD COLUMN "columnUuid" VARCHAR(36), ADD COLUMN "parentUuid" VARCHAR(36);
ALTER TABLE "ProjectMember" ADD COLUMN "projectUuid" VARCHAR(36);
ALTER TABLE "TaskMember" ADD COLUMN "taskUuid" VARCHAR(36);
ALTER TABLE "TaskTag" ADD COLUMN "taskUuid" VARCHAR(36);
-- 2) 存量回填
UPDATE "BoardColumn" c SET "projectUuid" = p."uuid" FROM "Project" p WHERE c."projectId" = p."id";
UPDATE "Task" t SET "projectUuid" = p."uuid" FROM "Project" p WHERE t."projectId" = p."id";
UPDATE "Task" t SET "columnUuid" = c."uuid" FROM "BoardColumn" c WHERE t."columnId" = c."id";
UPDATE "Task" t SET "parentUuid" = pt."uuid" FROM "Task" pt WHERE t."parentId" = pt."id";
UPDATE "ProjectMember" pm SET "projectUuid" = p."uuid" FROM "Project" p WHERE pm."projectId" = p."id";
UPDATE "TaskMember" tm SET "taskUuid" = t."uuid" FROM "Task" t WHERE tm."taskId" = t."id";
UPDATE "TaskTag" tt SET "taskUuid" = t."uuid" FROM "Task" t WHERE tt."taskId" = t."id";
-- 3) 非空约束
ALTER TABLE "BoardColumn" ALTER COLUMN "projectUuid" SET NOT NULL;
ALTER TABLE "Task" ALTER COLUMN "projectUuid" SET NOT NULL;
ALTER TABLE "Task" ALTER COLUMN "columnUuid" SET NOT NULL;
ALTER TABLE "ProjectMember" ALTER COLUMN "projectUuid" SET NOT NULL;
ALTER TABLE "TaskMember" ALTER COLUMN "taskUuid" SET NOT NULL;
ALTER TABLE "TaskTag" ALTER COLUMN "taskUuid" SET NOT NULL;
-- 4) 外键 (级联与 int 外键一致)
ALTER TABLE "BoardColumn" ADD CONSTRAINT "BoardColumn_projectUuid_fkey" FOREIGN KEY ("projectUuid") REFERENCES "Project"("uuid") ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "Task" ADD CONSTRAINT "Task_projectUuid_fkey" FOREIGN KEY ("projectUuid") REFERENCES "Project"("uuid") ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "Task" ADD CONSTRAINT "Task_columnUuid_fkey" FOREIGN KEY ("columnUuid") REFERENCES "BoardColumn"("uuid") ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "Task" ADD CONSTRAINT "Task_parentUuid_fkey" FOREIGN KEY ("parentUuid") REFERENCES "Task"("uuid") ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "ProjectMember" ADD CONSTRAINT "ProjectMember_projectUuid_fkey" FOREIGN KEY ("projectUuid") REFERENCES "Project"("uuid") ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "TaskMember" ADD CONSTRAINT "TaskMember_taskUuid_fkey" FOREIGN KEY ("taskUuid") REFERENCES "Task"("uuid") ON DELETE CASCADE ON UPDATE CASCADE;
ALTER TABLE "TaskTag" ADD CONSTRAINT "TaskTag_taskUuid_fkey" FOREIGN KEY ("taskUuid") REFERENCES "Task"("uuid") ON DELETE CASCADE ON UPDATE CASCADE;
-- 5) 触发器: 写入时按 int 外键回填 uuid 镜像
CREATE OR REPLACE FUNCTION "func_projectmember_uuid_map"() RETURNS TRIGGER AS $$
BEGIN
SELECT "uuid" INTO NEW."projectUuid" FROM "Project" WHERE "id" = NEW."projectId";
IF NOT FOUND THEN RAISE EXCEPTION 'Project % 不存在', NEW."projectId"; END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER "trg_projectmember_uuid_map" BEFORE INSERT OR UPDATE ON "ProjectMember"
FOR EACH ROW EXECUTE FUNCTION "func_projectmember_uuid_map"();
CREATE OR REPLACE FUNCTION "func_boardcolumn_uuid_map"() RETURNS TRIGGER AS $$
BEGIN
SELECT "uuid" INTO NEW."projectUuid" FROM "Project" WHERE "id" = NEW."projectId";
IF NOT FOUND THEN RAISE EXCEPTION 'Project % 不存在', NEW."projectId"; END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER "trg_boardcolumn_uuid_map" BEFORE INSERT OR UPDATE ON "BoardColumn"
FOR EACH ROW EXECUTE FUNCTION "func_boardcolumn_uuid_map"();
CREATE OR REPLACE FUNCTION "func_task_uuid_map"() RETURNS TRIGGER AS $$
BEGIN
SELECT "uuid" INTO NEW."projectUuid" FROM "Project" WHERE "id" = NEW."projectId";
IF NOT FOUND THEN RAISE EXCEPTION 'Project % 不存在', NEW."projectId"; END IF;
SELECT "uuid" INTO NEW."columnUuid" FROM "BoardColumn" WHERE "id" = NEW."columnId";
IF NOT FOUND THEN RAISE EXCEPTION 'BoardColumn % 不存在', NEW."columnId"; END IF;
IF NEW."parentId" IS NULL THEN
NEW."parentUuid" := NULL;
ELSE
SELECT "uuid" INTO NEW."parentUuid" FROM "Task" WHERE "id" = NEW."parentId";
IF NOT FOUND THEN RAISE EXCEPTION 'Task % 不存在', NEW."parentId"; END IF;
END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER "trg_task_uuid_map" BEFORE INSERT OR UPDATE ON "Task"
FOR EACH ROW EXECUTE FUNCTION "func_task_uuid_map"();
CREATE OR REPLACE FUNCTION "func_taskmember_uuid_map"() RETURNS TRIGGER AS $$
BEGIN
SELECT "uuid" INTO NEW."taskUuid" FROM "Task" WHERE "id" = NEW."taskId";
IF NOT FOUND THEN RAISE EXCEPTION 'Task % 不存在', NEW."taskId"; END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER "trg_taskmember_uuid_map" BEFORE INSERT OR UPDATE ON "TaskMember"
FOR EACH ROW EXECUTE FUNCTION "func_taskmember_uuid_map"();
CREATE OR REPLACE FUNCTION "func_tasktag_uuid_map"() RETURNS TRIGGER AS $$
BEGIN
SELECT "uuid" INTO NEW."taskUuid" FROM "Task" WHERE "id" = NEW."taskId";
IF NOT FOUND THEN RAISE EXCEPTION 'Task % 不存在', NEW."taskId"; END IF;
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER "trg_tasktag_uuid_map" BEFORE INSERT OR UPDATE ON "TaskTag"
FOR EACH ROW EXECUTE FUNCTION "func_tasktag_uuid_map"();
+1 -1
View File
@@ -1,3 +1,3 @@
# Please do not edit this file manually # Please do not edit this file manually
# It should be added in your version-control system (e.g., Git) # It should be added in your version-control system (e.g., Git)
provider = "mysql" provider = "postgresql"
+23 -6
View File
@@ -9,7 +9,7 @@ generator client {
} }
datasource db { datasource db {
provider = "mysql" provider = "postgresql"
} }
model User { model User {
@@ -388,6 +388,8 @@ model CheckListTemplate {
model Project { model Project {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
uuid String @unique @db.VarChar(36) // 同步标识: 客户端生成 (0.2.1 离线编辑, 见 docs/V0.2/离线编辑模块)
code String @unique @db.VarChar(8) // 项目短编号: 用户自拟 2~8 位前缀, 全局唯一, 服务端分配
name String @db.VarChar(50) name String @db.VarChar(50)
ownerId Int ownerId Int
owner User @relation("ProjectOwner", fields: [ownerId], references: [id], onDelete: Cascade) owner User @relation("ProjectOwner", fields: [ownerId], references: [id], onDelete: Cascade)
@@ -409,8 +411,10 @@ model Project {
} }
model ProjectMember { model ProjectMember {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
projectId Int uuid String @unique @db.VarChar(36) // 同步标识: 客户端生成 (0.2.1 离线编辑)
projectUuid String? @db.VarChar(36) // 外键 uuid 镜像 (触发器维护, 库级 NOT NULL)
projectId Int
project Project @relation(fields: [projectId], references: [id], onDelete: Cascade) project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)
userId Int userId Int
user User @relation(fields: [userId], references: [id], onDelete: Cascade) user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@ -423,6 +427,8 @@ model ProjectMember {
model BoardColumn { model BoardColumn {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
uuid String @unique @db.VarChar(36) // 同步标识: 客户端生成 (0.2.1 离线编辑)
projectUuid String? @db.VarChar(36) // projectId 的 uuid 镜像 (触发器维护, 库级 NOT NULL; Prisma 侧可空以便触发器填充)
projectId Int projectId Int
project Project @relation(fields: [projectId], references: [id], onDelete: Cascade) project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)
name String @db.VarChar(20) name String @db.VarChar(20)
@@ -440,6 +446,10 @@ model BoardColumn {
model Task { model Task {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
uuid String @unique @db.VarChar(36) // 同步标识: 客户端生成 (0.2.1 离线编辑)
projectUuid String? @db.VarChar(36) // 外键 uuid 镜像 (触发器维护, 库级 NOT NULL)
columnUuid String? @db.VarChar(36)
parentUuid String? @db.VarChar(36)
projectId Int projectId Int
project Project @relation(fields: [projectId], references: [id], onDelete: Cascade) project Project @relation(fields: [projectId], references: [id], onDelete: Cascade)
columnId Int columnId Int
@@ -471,6 +481,9 @@ model Task {
members TaskMember[] members TaskMember[]
tags TaskTag[] tags TaskTag[]
number Int? // 项目内自增编号 (服务端分配, 展示为 `code-number`); 本地未定号的离线新建任务为空
@@unique([projectId, number])
@@index([projectId, columnId]) @@index([projectId, columnId])
@@index([projectId, status]) @@index([projectId, status])
@@index([parentId]) @@index([parentId])
@@ -480,7 +493,9 @@ model Task {
} }
model TaskMember { model TaskMember {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
uuid String @unique @db.VarChar(36) // 同步标识: 客户端生成 (0.2.1 离线编辑)
taskUuid String? @db.VarChar(36) // 外键 uuid 镜像 (触发器维护, 库级 NOT NULL)
taskId Int taskId Int
task Task @relation(fields: [taskId], references: [id], onDelete: Cascade) task Task @relation(fields: [taskId], references: [id], onDelete: Cascade)
userId Int userId Int
@@ -490,8 +505,10 @@ model TaskMember {
} }
model TaskTag { model TaskTag {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
taskId Int uuid String @unique @db.VarChar(36) // 同步标识: 客户端生成 (0.2.1 离线编辑)
taskUuid String? @db.VarChar(36) // 外键 uuid 镜像 (触发器维护, 库级 NOT NULL)
taskId Int
task Task @relation(fields: [taskId], references: [id], onDelete: Cascade) task Task @relation(fields: [taskId], references: [id], onDelete: Cascade)
name String @db.VarChar(20) name String @db.VarChar(20)
+201
View File
@@ -0,0 +1,201 @@
// 一次性数据迁移: 现网 MariaDB 只读快照 -> 0.2.1 PostgreSQL
// 运行 (在 app 容器内, 具备 mariadb 驱动与 PG 客户端):
// SRC_DATABASE_URL=mysql://... node scripts/etl-mariadb-to-pg.mjs
// 约束: 源库仅 SELECT; 目标库须为空 (Project 计数为 0), 除非 ETL_FORCE=1
// 迁移内容见 docs/V0.2/离线编辑模块/0.2.1实施方案.md §6:
// - 任务域 6 表回填 uuid; Project 回填短编号 code; Task 按项目内 (createdAt,id) 顺序回填 number
// - 时序大表 (ServerNodeHistory/MihomeEnv*) 仅取最近 N 条
// - 显式 id 插入后逐表 setval 校准序列
import 'dotenv/config'
import crypto from 'node:crypto'
import mariadb from 'mariadb'
import { PrismaPg } from '@prisma/adapter-pg'
import { PrismaClient } from '../generated/prisma/client.ts'
// 顺序: 先父后子
const TABLES = [
['User', 'user'],
['Project', 'project'],
['ProjectMember', 'projectMember'],
['BoardColumn', 'boardColumn'],
['Habit', 'habit'],
['CheckList', 'checkList'],
['CheckListTemplate', 'checkListTemplate'],
['CheckListItem', 'checkListItem'],
['CheckIn', 'checkIn'],
['Task', 'task'],
['TaskMember', 'taskMember'],
['TaskTag', 'taskTag'],
['Article', 'article'],
['Strategy', 'strategy'],
['Indicator', 'indicator'],
['IndicatorPoint', 'indicatorPoint'],
['News', 'news'],
['Alert', 'alert'],
['ServerNode', 'serverNode'],
['ServerNodeHistory', 'serverNodeHistory'],
['ServiceCheck', 'serviceCheck'],
['Econ_SowInventory', 'econ_SowInventory'],
['ScraperCache', 'scraperCache'],
['OilPriceHistory', 'oilPriceHistory'],
['MihomeAccount', 'mihomeAccount'],
['MihomeHome', 'mihomeHome'],
['MihomeDevice', 'mihomeDevice'],
['MihomeEnvSample', 'mihomeEnvSample'],
['MihomeEnvHour', 'mihomeEnvHour'],
]
const ROW_CAP = { ServerNodeHistory: 20000, MihomeEnvSample: 20000, MihomeEnvHour: 20000 }
const UUID_TABLES = new Set(['Project', 'ProjectMember', 'BoardColumn', 'Task', 'TaskMember', 'TaskTag'])
function parseUrl(url) {
const u = new URL(url)
return {
host: u.hostname,
port: Number(u.port) || 3306,
user: decodeURIComponent(u.username),
password: decodeURIComponent(u.password),
database: u.pathname.replace(/^\//, ''),
}
}
function parseJson(v) {
if (v === null || v === undefined || typeof v !== 'string') return v
try { return JSON.parse(v) } catch { return v }
}
function toBigInt(v) {
if (v === null || v === undefined || typeof v === 'bigint') return v
return BigInt(v)
}
// MariaDB TINYINT(1) 返回 0/1, Prisma Boolean 需要 true/false
function toBoolean(v) {
if (v === null || v === undefined) return v
return !!v
}
function randCode(len) {
return crypto.randomBytes(len * 2).toString('hex').toUpperCase().replace(/[^A-Z0-9]/g, '').padEnd(len, 'X').slice(0, len)
}
async function main() {
const src = process.env.SRC_DATABASE_URL
if (!src) throw new Error('SRC_DATABASE_URL 未配置')
const cfg = parseUrl(src)
const conn = await mariadb.createConnection({
host: cfg.host, port: cfg.port, user: cfg.user, password: cfg.password, database: cfg.database, connectTimeout: 8000,
})
console.log('[etl] 源库已连接 (只读):', `${cfg.host}:${cfg.port}/${cfg.database}`)
const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL })
const prisma = new PrismaClient({ adapter })
const existing = await prisma.project.count()
if (existing > 0 && process.env.ETL_FORCE !== '1') {
console.log(`[etl] 目标库已有 ${existing} 个项目, 跳过 (ETL_FORCE=1 可强制)`)
await conn.end()
return
}
// 目标 PG 列清单 (类型感知转换 + 源库多余列丢弃): 现网库可能比本分支 schema 新
const targetColumns = new Map()
for (const [table] of TABLES) {
const cols = await prisma.$queryRawUnsafe(
`SELECT column_name, data_type FROM information_schema.columns WHERE table_schema = 'public' AND table_name = $1`,
table,
)
targetColumns.set(table, new Map(cols.map((c) => [c.column_name, c.data_type])))
}
function adaptRow(table, r) {
const cols = targetColumns.get(table)
const out = {}
for (const [name, dataType] of cols) {
let v = r[name]
if (v === undefined) v = null
if (dataType === 'boolean') v = toBoolean(v)
else if (dataType === 'bigint') v = toBigInt(v)
else if (dataType === 'json' || dataType === 'jsonb') v = parseJson(v)
out[name] = v
}
return out
}
// Project.code 回填: 优先按名称推导字母, 冲突加随机尾缀
const projectRows = await conn.query('SELECT * FROM `Project`')
const usedCodes = new Set()
for (const p of projectRows) {
const letters = String(p.name || '').toUpperCase().replace(/[^A-Z0-9]/g, '')
let cand = ''
for (let i = 0; i < 30 && !cand; i++) {
const base = i === 0
? (letters.length >= 2 ? letters.slice(0, 8) : ('P' + String(p.id) + randCode(4)).slice(0, 8))
: (letters.slice(0, 5) + randCode(3)).slice(0, 8)
if (base.length >= 2 && !usedCodes.has(base)) cand = base
}
if (!cand) cand = randCode(6)
usedCodes.add(cand)
p.code = cand
}
// Task.number 回填: 项目内按 (createdAt, id) 顺序 1..n
const taskRows = (await conn.query('SELECT * FROM `Task`')).sort((a, b) => {
if (a.projectId !== b.projectId) return a.projectId - b.projectId
const ta = a.createdAt ? new Date(a.createdAt).getTime() : 0
const tb = b.createdAt ? new Date(b.createdAt).getTime() : 0
if (ta !== tb) return ta - tb
return a.id - b.id
})
const taskNumber = new Map()
for (const r of taskRows) {
const key = String(r.projectId)
const next = (taskNumber.get(key) || 0) + 1
taskNumber.set(key, next)
r.number = next
}
const counts = {}
for (const [table, model] of TABLES) {
let rows
if (table === 'Project') rows = projectRows
else if (table === 'Task') rows = taskRows
else {
const cap = ROW_CAP[table]
rows = await conn.query(cap ? `SELECT * FROM \`${table}\` ORDER BY id DESC LIMIT ${cap}` : `SELECT * FROM \`${table}\``)
}
if (rows.length) {
const adapted = rows.map((r) => {
if (UUID_TABLES.has(table)) r.uuid = crypto.randomUUID()
return adaptRow(table, r)
})
const chunk = 500
for (let i = 0; i < adapted.length; i += chunk) {
await prisma[model].createMany({ data: adapted.slice(i, i + chunk) })
}
}
counts[table] = rows.length
console.log(`[etl] ${table}: ${rows.length}`)
}
// 序列校准: 显式插入 id 后必须 setval, 否则新插入主键冲突
for (const [table] of TABLES) {
await prisma.$executeRawUnsafe(
`SELECT setval(pg_get_serial_sequence('"${table}"', 'id'), COALESCE((SELECT MAX(id) FROM "${table}"), 0) + 1, false)`,
)
}
await conn.end()
const summary = {
users: await prisma.user.count(),
projects: await prisma.project.count(),
tasks: await prisma.task.count(),
checkIns: await prisma.checkIn.count(),
news: await prisma.news.count(),
}
console.log('[etl] 完成:', JSON.stringify(summary))
}
main().catch((e) => { console.error('[etl] 失败:', e); process.exit(1) })
+218
View File
@@ -0,0 +1,218 @@
// 0.2.1 闭环验证脚本 (Node 客户端): 同步下行 -> 本地离线写入 -> 上行 -> 服务端编号 -> 同步回填
// 用法: node scripts/verify-powersync-client.mjs [BASE_URL] [EMAIL] [PASSWORD]
// BASE_URL 默认 http://bh.vps.honor3.com:13001
// 依赖 (dev-only, 不进服务端镜像; 运行前补装): npm install --no-save @powersync/node better-sqlite3
// 流程:
// 1. REST 登录 -> /api/powersync/token
// 2. Node SDK 连接 PowerSync, 等待首次同步, 校验 ETL 数据 (项目/任务/编号)
// 3. 本地新建一条验证任务 (number 为空, 模拟离线写入)
// 4. 等待 upload 完成并同步回填 -> 本地行应获得服务端分配的 number
// 5. 清理: 本地删除该任务 (上行级联删除), 恢复数据原状
import 'dotenv/config'
import crypto from 'node:crypto'
import os from 'node:os'
import path from 'node:path'
import fs from 'node:fs'
import { column, Schema, Table, PowerSyncDatabase, createConsoleLogger, LogLevels } from '@powersync/node'
const BASE = (process.argv[2] || 'http://bh.vps.honor3.com:13001').replace(/\/+$/, '')
const EMAIL = process.argv[3] || 'admin@iboard.local'
const PASSWORD = process.argv[4] || 'admin123'
const uuid = () => crypto.randomUUID()
const sleep = (ms) => new Promise((r) => setTimeout(r, ms))
// 与 src/lib/powersync/schema.js 同构的最小 schema (验证只用到 Project/Task/TaskTag)
const AppSchema = new Schema({
Project: new Table({
uuid: column.text, code: column.text, name: column.text, ownerId: column.text,
isPersonal: column.integer, archived: column.integer, notes: column.text,
taskKinds: column.text, icon: column.text, createdAt: column.text, updatedAt: column.text,
}),
Task: new Table({
uuid: column.text, projectId: column.text, columnId: column.text, parentId: column.text,
title: column.text, description: column.text, kind: column.text, markDate: column.text,
status: column.text, doneAt: column.text, assigneeId: column.text, creatorId: column.text,
extras: column.text, sortOrder: column.integer, number: column.integer,
createdAt: column.text, updatedAt: column.text,
}),
TaskTag: new Table({ uuid: column.text, taskId: column.text, name: column.text }),
TaskMember: new Table({ uuid: column.text, taskId: column.text, userId: column.text }),
ProjectMember: new Table({ uuid: column.text, projectId: column.text, userId: column.text, permission: column.text, createdAt: column.text }),
BoardColumn: new Table({
uuid: column.text, projectId: column.text, name: column.text, sortOrder: column.integer,
boundStatus: column.text, retention: column.text, createdAt: column.text, updatedAt: column.text,
}),
User: new Table({ name: column.text, email: column.text }),
})
async function api(path, { method = 'GET', token, body } = {}) {
const res = await fetch(BASE + '/api' + path, {
method,
headers: { 'Content-Type': 'application/json', ...(token ? { Authorization: 'Bearer ' + token } : {}) },
body: body ? JSON.stringify(body) : undefined,
})
const data = await res.json().catch(() => ({}))
if (!res.ok) throw new Error(`${path} -> ${res.status}: ${data.error || '请求失败'}`)
return data
}
class Connector {
constructor(appToken, endpoint) {
// appToken: 应用 JWT (调业务 API 上行用); endpoint + sync JWT 由 fetchCredentials 提供
this.appToken = appToken
this.endpoint = endpoint
}
async fetchCredentials() {
const cred = await api('/powersync/token', { method: 'POST', token: this.appToken })
return { endpoint: cred.endpoint, token: cred.token }
}
async uploadData(database) {
const batch = await database.getCrudBatch()
if (!batch) return
const ops = []
for (let i = 0; i < batch.crud.length; i++) {
const op = batch.crud[i]
let data = op.opData || {}
if (op.op !== 'DELETE') {
const row = await database.getOptional(`SELECT * FROM "${op.table}" WHERE id = ?`, [op.id])
if (row) data = row
}
ops.push({ id: String(i), table: op.table, op: op.op === 'DELETE' ? 'DELETE' : 'PUT', uuid: op.id, data })
}
const res = await fetch(BASE + '/api/powersync/upload', {
method: 'POST',
headers: { 'Content-Type': 'application/json', Authorization: 'Bearer ' + this.appToken },
body: JSON.stringify({ ops }),
})
const out = await res.json().catch(() => ({}))
if (!res.ok) throw new Error('upload failed: ' + JSON.stringify(out))
const failed = (out.results || []).filter((r) => !r.ok)
if (failed.length) console.log('[verify] upload 部分失败:', JSON.stringify(failed))
await batch.complete()
}
}
async function main() {
console.log(`[verify] BASE = ${BASE}`)
const login = await api('/auth/login', { method: 'POST', body: { email: EMAIL, password: PASSWORD } })
console.log('[verify] 1. 登录 OK, user:', login.user.email)
const cred = await api('/powersync/token', { method: 'POST', token: login.token })
if (!cred.endpoint) throw new Error('POWERSYNC_URL 未配置 (服务端 /powersync/token 返回空 endpoint)')
console.log('[verify] 2. 同步凭证 OK, endpoint:', cred.endpoint)
const dbFile = path.join(os.tmpdir(), `iboard-verify-${Date.now()}.db`)
const logger = createConsoleLogger({ minLevel: LogLevels.debug })
const db = new PowerSyncDatabase({
schema: AppSchema,
database: { dbFilename: dbFile, databaseWorkerLogLevel: LogLevels.debug },
sync: { logLevel: LogLevels.debug },
logger,
})
db.registerListener({
statusChanged: (s) => {
const c = s?.dataFlowStatus || {}
console.log(`[verify] sync status: connected=${s?.connected} connecting=${s?.connecting} err=${c.downloadError?.message || c.uploadError?.message || '-'}`)
},
})
try {
await db.connect(new Connector(login.token, cred.endpoint))
console.log('[verify] connect() 已建立')
} catch (e) {
console.error('[verify] connect 失败:', e?.message)
throw e
}
await Promise.race([
db.waitForFirstSync(),
sleep(45000).then(() => { throw new Error('waitForFirstSync 超时 (45s)') }),
]).catch(async (e) => {
console.log('[verify] waitForFirstSync 未完成, 轮询内部状态...')
for (let i = 0; i < 10; i++) {
await sleep(3000)
const st = db.currentStatus
const counts = {
projects: (await db.getOptional('SELECT COUNT(*) AS n FROM Project'))?.n,
tasks: (await db.getOptional('SELECT COUNT(*) AS n FROM Task'))?.n,
}
console.log(`[verify] poll#${i}:`, JSON.stringify({
connected: st?.connected, connecting: st?.connecting, hasSynced: st?.hasSynced,
lastSyncedAt: st?.lastSyncedAt, dl: st?.dataFlowStatus?.downloadError?.message,
ul: st?.dataFlowStatus?.uploadError?.message, ...counts,
}))
if (st?.hasSynced && counts.projects > 0) {
console.log('[verify] 轮询确认同步已完成')
return
}
}
throw e
})
console.log('[verify] 3. 首次同步完成')
const projects = await db.getAll('SELECT id, uuid, code, name FROM Project ORDER BY id')
console.log(`[verify] 项目 ${projects.length} 个:`, projects.map((p) => `${p.code || '?'}(${p.name})`).join(', '))
const tasks = await db.getAll('SELECT COUNT(*) AS n FROM Task')
const numbered = await db.getAll('SELECT COUNT(*) AS n FROM Task WHERE number IS NOT NULL')
console.log(`[verify] 任务 ${tasks[0].n} 条 (已有编号 ${numbered[0].n} 条)`)
if (!projects.length || tasks[0].n === 0) throw new Error('同步数据为空, ETL 未生效?')
// 本地新建验证任务 (模拟离线写入: number 为空, 等服务端分配)
const target = projects.find((p) => p.code) || projects[0]
const firstCol = await db.get(`SELECT id, boundStatus FROM BoardColumn WHERE projectId = ? ORDER BY sortOrder, id LIMIT 1`, [target.id])
const marker = `离线闭环验证-${Date.now()}`
const newId = uuid()
const ts = new Date().toISOString()
await db.writeTransaction(async (tx) => {
await tx.execute(
`INSERT INTO Task (id, uuid, projectId, columnId, parentId, title, description, kind, markDate, status, doneAt, assigneeId, creatorId, extras, sortOrder, number, createdAt, updatedAt)
VALUES (?, ?, ?, ?, NULL, ?, '', NULL, NULL, ?, NULL, NULL, ?, '[]', 0, NULL, ?, ?)`,
[newId, newId, target.id, firstCol.id, marker, firstCol.boundStatus || 'todo', String(login.user.id), ts, ts],
)
})
console.log(`[verify] 4. 本地写入任务 "${marker}" (number 为空), 等待上行 + 服务端定号 + 同步回填...`)
let syncedBack = null
for (let i = 0; i < 30; i++) {
await sleep(2000)
const row = await db.getOptional('SELECT number, updatedAt FROM Task WHERE id = ?', [newId])
const localCheck = await db.getOptional(`SELECT 1 AS x FROM ps_crud LIMIT 1`)
if (!localCheck) {
// 队列已清空 (上行完成); 等待下行回填 number
if (row && row.number != null) { syncedBack = row; break }
if (i > 10 && row && row.number == null) continue
}
}
if (!syncedBack) throw new Error('超时: 未观测到服务端编号回填')
console.log(`[verify] 5. 闭环 OK! 服务端分配编号: ${target.code}-${syncedBack.number} (项目 ${target.code})`)
// 直接从服务端核对 (REST 视角: REST 仍按 int id 寻址, 通过列表接口按 uuid 匹配)
const plist = await api('/projects', { token: login.token })
const pj = plist.items.find((p) => p.uuid === target.uuid)
if (!pj) throw new Error('服务端确认失败: 项目列表中找不到目标项目')
const tlist = await api(`/projects/${pj.id}/tasks`, { token: login.token })
const hit = tlist.items.find((t) => t.uuid === newId)
if (!hit || hit.number == null) throw new Error('服务端确认失败: 任务不存在或未定号')
console.log(`[verify] 6. 服务端确认: number=${hit.number}, uuid=${hit.uuid.slice(0, 13)}...`)
// 清理验证数据 (本地删除 -> 上行删除)
await db.execute('DELETE FROM Task WHERE id = ?', [newId])
for (let i = 0; i < 15; i++) {
await sleep(2000)
const left = await db.getOptional('SELECT 1 AS x FROM ps_crud LIMIT 1')
if (!left) break
}
const gone = await api(`/projects/${pj.id}/tasks`, { token: login.token })
if (!gone.items.some((t) => t.uuid === newId)) console.log('[verify] 7. 验证任务已从服务端清除')
else throw new Error('验证任务删除未同步到服务端')
db.close()
try {
fs.rmSync(dbFile, { force: true })
fs.rmSync(dbFile + '-journal', { force: true })
} catch { /* Windows 下可能被占用, 留在临时目录无害 */ }
console.log('[verify] 全部通过: 下行同步 / 离线写入 / 上行幂等 / 服务端编号 / 回填 / 删除同步')
}
main().catch((e) => {
console.error('[verify] 失败:', e.message)
process.exit(1)
})
+3 -14
View File
@@ -1,18 +1,7 @@
// 服务端 Prisma 单例, 使用 mariadb 适配器 // 服务端 Prisma 单例, 使用 pg 适配器 (0.2.1: 数据库迁移到 PostgreSQL)
import 'dotenv/config' import 'dotenv/config'
import { PrismaMariaDb } from '@prisma/adapter-mariadb' import { PrismaPg } from '@prisma/adapter-pg'
import { PrismaClient } from '../generated/prisma/client.ts' import { PrismaClient } from '../generated/prisma/client.ts'
function parseDatabaseUrl(url) { const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL })
const u = new URL(url)
return {
host: u.hostname,
port: Number(u.port) || 3306,
user: decodeURIComponent(u.username),
password: decodeURIComponent(u.password),
database: u.pathname.replace(/^\//, ''),
}
}
const adapter = new PrismaMariaDb(parseDatabaseUrl(process.env.DATABASE_URL))
export const prisma = new PrismaClient({ adapter }) export const prisma = new PrismaClient({ adapter })
+9 -4
View File
@@ -16,6 +16,7 @@ import checkinRouter from './routes/checkin.js'
import checklistsRouter from './routes/checklists.js' import checklistsRouter from './routes/checklists.js'
import projectsRouter, { columnRouter } from './routes/projects.js' import projectsRouter, { columnRouter } from './routes/projects.js'
import tasksRouter from './routes/tasks.js' import tasksRouter from './routes/tasks.js'
import powersyncRouter from './routes/powersync.js'
const PORT = Number(process.env.PORT) || 3001 const PORT = Number(process.env.PORT) || 3001
const DIST_DIR = path.join(process.cwd(), 'dist') const DIST_DIR = path.join(process.cwd(), 'dist')
@@ -33,6 +34,8 @@ app.use('/api/auth', authRouter)
// OTA 接口是公开的 (检查/下载更新不需要登录), 必须挂载在带 authRequired 的 router 之前, // OTA 接口是公开的 (检查/下载更新不需要登录), 必须挂载在带 authRequired 的 router 之前,
// 否则 /api/ota/* 请求会先进入 dataRouter 等并被 authRequired 以 401 拦截 // 否则 /api/ota/* 请求会先进入 dataRouter 等并被 authRequired 以 401 拦截
app.use('/api', otaRouter) app.use('/api', otaRouter)
// PowerSync: token 签发 + 离线上行队列 (自带 authRequired, 同样必须挂在带 authRequired 的业务 router 之前)
app.use('/api/powersync', powersyncRouter)
app.use('/api', dataRouter) app.use('/api', dataRouter)
app.use('/api', newsRouter) app.use('/api', newsRouter)
app.use('/api', alertsRouter) app.use('/api', alertsRouter)
@@ -66,11 +69,13 @@ app.use((err, _req, res, _next) => {
res.status(500).json({ error: err.message || '服务器内部错误' }) res.status(500).json({ error: err.message || '服务器内部错误' })
}) })
// 启动定时任务: 每天凌晨 3 点拉取新闻 // 启动定时任务: 每天凌晨 3 点拉取新闻; 0.2.1 验证部署以 DISABLE_CRON=1 关闭 (避免重复外呼)
import('./cron.js').catch((e) => console.error('[cron] 加载失败:', e.message)) if (process.env.DISABLE_CRON !== '1') {
import('./cron.js').catch((e) => console.error('[cron] 加载失败:', e.message))
// 米家环境监控定时调度 (独立注册, 不与 cron.js 绑定, 见 server/mihome/scheduler.js) // 米家环境监控定时调度 (独立注册, 不与 cron.js 绑定, 见 server/mihome/scheduler.js)
import('./mihome/scheduler.js').catch((e) => console.error('[cron] 米家调度注册失败:', e.message)) import('./mihome/scheduler.js').catch((e) => console.error('[cron] 米家调度注册失败:', e.message))
}
app.listen(PORT, () => { app.listen(PORT, () => {
console.log(`[iboard-api] listening on http://127.0.0.1:${PORT}`) console.log(`[iboard-api] listening on http://127.0.0.1:${PORT}`)
+386
View File
@@ -0,0 +1,386 @@
// PowerSync 接入: 同步 token 签发 + 客户端上传队列落地 (0.2.1, 见 docs/V0.2/离线编辑模块/0.2.1实施方案.md)
// 下行由 powersync-service 经 PG 逻辑复制完成; 本文件只负责:
// 1. /token 为已登录用户签发 powersync-service 接受的 JWT (aud=powersync, 独立密钥可选)
// 2. /upload 批量落地客户端离线写操作, 按 uuid 幂等 upsert, 服务端统一分配编号
import { Router } from 'express'
import jwt from 'jsonwebtoken'
import { prisma } from '../db.js'
import { JWT_SECRET, authRequired } from '../middleware.js'
import { genUuid, normProjectCode, allocProjectCode, withTaskNumber } from '../task-domain/identity.js'
const router = Router()
// ---------- 同步 token ----------
router.post('/token', authRequired, async (req, res, next) => {
try {
const user = await prisma.user.findUnique({
where: { id: req.user.sub },
select: { id: true, name: true, email: true },
})
if (!user) return res.status(401).json({ error: '用户不存在' })
const secret = process.env.POWERSYNC_JWT_SECRET || JWT_SECRET
const token = jwt.sign(
{ sub: String(user.id), aud: 'powersync', name: user.name, email: user.email },
secret,
{ expiresIn: '12h' },
)
res.json({ token, endpoint: process.env.POWERSYNC_URL || '' })
} catch (e) { next(e) }
})
// ---------- 上传队列 ----------
// 契约: POST { ops: [{ id, table, op: 'PUT'|'DELETE', uuid, data }] }
// table ∈ Project | BoardColumn | ProjectMember | Task | TaskMember | TaskTag
// data 为客户端本地全量行 (列名与客户端 schema 一致); 外键列 (projectId/columnId/parentId/taskId)
// 的值即父行的本地 id = uuid, 服务端据此解析为内部自增 id
// 返回 { results: [{ id, ok, skipped?, error? }] }, 单条失败不影响同批其它 op
const TABLES = ['Project', 'BoardColumn', 'ProjectMember', 'Task', 'TaskMember', 'TaskTag']
const TABLE_RANK = Object.fromEntries(TABLES.map((t, i) => [t, i]))
const COLUMN_RETENTIONS = ['never', 'today', '3d', 'week', 'month', 'forever']
const TASK_STATUSES = ['todo', 'doing', 'done']
const AUTO_ARCHIVE_OPTIONS = ['3d', '1w', '1m', 'never']
function isoTime(v) {
if (!v) return null
const d = new Date(v)
return Number.isNaN(d.getTime()) ? null : d
}
// LWW: 服务端已有行不早于客户端数据 => 跳过本次覆盖
function isStale(existing, data) {
const t = isoTime(data?.updatedAt)
if (!t) return false
return existing.updatedAt && existing.updatedAt.getTime() >= t.getTime()
}
function cleanExtras(v) {
if (!Array.isArray(v)) return []
return v.slice(0, 50).map((e) => ({
label: String(e?.label ?? '').slice(0, 40),
value: String(e?.value ?? ''),
url: e?.url ? String(e.url) : '',
}))
}
function cleanNotes(v) {
if (!Array.isArray(v)) return []
return v.slice(0, 50).map((n) => ({
title: String(n?.title ?? '').slice(0, 50),
content: String(n?.content ?? '').slice(0, 20000),
}))
}
async function applyPut(op, ctx) {
const { userId, assertMember } = ctx
const { table, uuid } = op
const d = op.data || {}
if (!uuid) throw new Error('缺少 uuid')
if (table === 'Project') {
const existing = await prisma.project.findUnique({ where: { uuid } })
if (existing) {
if (!(await assertMember(existing.id))) throw new Error('无项目权限')
if (isStale(existing, d)) return { skipped: true }
const data = {}
if (d.name !== undefined) {
const t = String(d.name).trim()
if (!t || t.length > 20) throw new Error('项目名称非法')
data.name = t
}
if (d.archived !== undefined) data.archived = !!d.archived
if (d.notes !== undefined) data.notes = cleanNotes(d.notes)
if (d.autoArchive !== undefined) {
data.autoArchive = AUTO_ARCHIVE_OPTIONS.includes(d.autoArchive) ? d.autoArchive : 'never'
}
if (d.taskKinds !== undefined) {
data.taskKinds = Array.isArray(d.taskKinds) ? d.taskKinds.map((k) => String(k).slice(0, 20)).filter(Boolean) : null
}
if (Object.keys(data).length) await prisma.project.update({ where: { uuid }, data })
return {}
}
const name = String(d.name || '').trim()
if (!name || name.length > 20) throw new Error('项目名称非法')
const code = normProjectCode(d.code) || (await allocProjectCode(name))
const row = await prisma.project.create({
data: { uuid, code, name, ownerId: userId, isPersonal: !!d.isPersonal, archived: !!d.archived },
})
return { rowId: row.id, code: row.code }
}
if (table === 'BoardColumn') {
const existing = await prisma.boardColumn.findUnique({ where: { uuid } })
if (existing) {
if (!(await assertMember(existing.projectId))) throw new Error('无项目权限')
if (isStale(existing, d)) return { skipped: true }
const data = {}
if (d.name !== undefined) {
const t = String(d.name).trim()
if (!t || t.length > 20) throw new Error('列名非法')
data.name = t
}
if (d.sortOrder !== undefined) data.sortOrder = Number(d.sortOrder) || 0
if (d.boundStatus !== undefined) data.boundStatus = TASK_STATUSES.includes(d.boundStatus) ? d.boundStatus : null
if (d.retention !== undefined && COLUMN_RETENTIONS.includes(d.retention)) data.retention = d.retention
if (Object.keys(data).length) await prisma.boardColumn.update({ where: { uuid }, data })
return {}
}
const project = await prisma.project.findUnique({ where: { uuid: d.projectId } })
if (!project || !(await assertMember(project.id))) throw new Error('项目不存在或无权限')
const name = String(d.name || '').trim()
if (!name || name.length > 20) throw new Error('列名非法')
await prisma.boardColumn.create({
data: {
uuid,
projectId: project.id,
name,
sortOrder: Number(d.sortOrder) || 0,
boundStatus: TASK_STATUSES.includes(d.boundStatus) ? d.boundStatus : null,
retention: COLUMN_RETENTIONS.includes(d.retention) ? d.retention : 'forever',
},
})
return {}
}
if (table === 'ProjectMember') {
const existing = await prisma.projectMember.findUnique({ where: { uuid } })
if (existing) {
// 成员关系只增不改: 已存在即视为完成 (幂等)
return { skipped: true }
}
const project = await prisma.project.findUnique({ where: { uuid: d.projectId } })
if (!project || !(await assertMember(project.id))) throw new Error('项目不存在或无权限')
const target = Number(d.userId)
if (!target) throw new Error('userId 非法')
const dup = await prisma.projectMember.findUnique({
where: { projectId_userId: { projectId: project.id, userId: target } },
})
if (dup) return { skipped: true }
await prisma.projectMember.create({
data: { uuid, projectId: project.id, userId: target, permission: d.permission === 'admin' ? 'admin' : 'member' },
})
return {}
}
if (table === 'Task') {
const existing = await prisma.task.findUnique({ where: { uuid } })
if (existing) {
if (!(await assertMember(existing.projectId))) throw new Error('无项目权限')
if (isStale(existing, d)) return { skipped: true }
const data = {}
if (d.title !== undefined) {
const t = String(d.title).trim()
if (!t || t.length > 30) throw new Error('任务标题非法')
data.title = t
}
if (d.description !== undefined) data.description = String(d.description || '')
if (d.kind !== undefined) data.kind = d.kind ? String(d.kind).trim().slice(0, 20) : null
if (d.markDate !== undefined) {
const m = isoTime(d.markDate)
if (d.markDate && !m) throw new Error('时间标记非法')
data.markDate = m
}
if (d.extras !== undefined) data.extras = cleanExtras(d.extras)
if (d.sortOrder !== undefined) data.sortOrder = Number(d.sortOrder) || 0
if (d.assigneeId !== undefined) data.assigneeId = d.assigneeId ? Number(d.assigneeId) : null
if (d.doneAt !== undefined) data.doneAt = isoTime(d.doneAt)
// 归档状态 (T-ARC): 客户端本地归档/恢复走这里
if (d.archived !== undefined) data.archived = !!d.archived
if (d.archivedAt !== undefined) data.archivedAt = isoTime(d.archivedAt)
if (d.archiveSource !== undefined) {
data.archiveSource = ['manual', 'auto'].includes(d.archiveSource) ? d.archiveSource : null
}
if (d.columnId !== undefined) {
const col = await prisma.boardColumn.findUnique({ where: { uuid: d.columnId } })
if (!col || col.projectId !== existing.projectId) throw new Error('看板列不存在')
data.columnId = col.id
}
if (d.parentId !== undefined) {
if (!d.parentId) {
data.parentId = null
} else {
const parent = await prisma.task.findUnique({ where: { uuid: d.parentId } })
if (!parent || parent.projectId !== existing.projectId) throw new Error('父任务不存在')
if (parent.parentId) throw new Error('仅支持一级子任务')
data.parentId = parent.id
}
}
if (Object.keys(data).length) await prisma.task.update({ where: { uuid }, data })
return {}
}
// 离线新建: 服务端解析父引用并分配项目内编号
const project = await prisma.project.findUnique({ where: { uuid: d.projectId } })
if (!project || !(await assertMember(project.id))) throw new Error('项目不存在或无权限')
const title = String(d.title || '').trim()
if (!title || title.length > 30) throw new Error('任务标题非法')
let columnId = null
if (d.columnId) {
const col = await prisma.boardColumn.findUnique({ where: { uuid: d.columnId } })
if (!col || col.projectId !== project.id) throw new Error('看板列不存在')
columnId = col.id
} else {
const first = await prisma.boardColumn.findFirst({
where: { projectId: project.id },
orderBy: { sortOrder: 'asc' },
})
if (!first) throw new Error('项目没有可用的看板列')
columnId = first.id
}
let parentId = null
if (d.parentId) {
const parent = await prisma.task.findUnique({ where: { uuid: d.parentId } })
if (!parent || parent.projectId !== project.id) throw new Error('父任务不存在')
if (parent.parentId) throw new Error('仅支持一级子任务')
parentId = parent.id
}
const status = TASK_STATUSES.includes(d.status) ? d.status : 'todo'
const base = {
uuid,
projectId: project.id,
columnId,
parentId,
title,
description: String(d.description || ''),
kind: d.kind ? String(d.kind).trim().slice(0, 20) : null,
markDate: isoTime(d.markDate),
status,
assigneeId: d.assigneeId ? Number(d.assigneeId) : null,
creatorId: userId,
extras: cleanExtras(d.extras),
doneAt: status === 'done' ? (isoTime(d.doneAt) || new Date()) : null,
sortOrder: Number(d.sortOrder) || 0,
}
const { value: row } = await withTaskNumber(project.id, (number) =>
prisma.task.create({ data: { ...base, number } }),
)
return { rowId: row.id, number: row.number }
}
if (table === 'TaskMember') {
const existing = await prisma.taskMember.findUnique({ where: { uuid } })
if (existing) return { skipped: true }
const task = await prisma.task.findUnique({ where: { uuid: d.taskId } })
if (!task || !(await assertMember(task.projectId))) throw new Error('任务不存在或无权限')
const uid = Number(d.userId)
if (!uid) throw new Error('userId 非法')
const dup = await prisma.taskMember.findUnique({
where: { taskId_userId: { taskId: task.id, userId: uid } },
})
if (dup) return { skipped: true }
await prisma.taskMember.create({ data: { uuid, taskId: task.id, userId: uid } })
return {}
}
if (table === 'TaskTag') {
const existing = await prisma.taskTag.findUnique({ where: { uuid } })
if (existing) return { skipped: true }
const task = await prisma.task.findUnique({ where: { uuid: d.taskId } })
if (!task || !(await assertMember(task.projectId))) throw new Error('任务不存在或无权限')
const name = String(d.name || '').trim().slice(0, 20)
if (!name) throw new Error('标签名非法')
const dup = await prisma.taskTag.findFirst({ where: { taskId: task.id, name } })
if (dup) return { skipped: true }
await prisma.taskTag.create({ data: { uuid, taskId: task.id, name } })
return {}
}
throw new Error('未知表: ' + table)
}
async function applyDelete(op, ctx) {
const { assertMember } = ctx
const { table, uuid } = op
if (!uuid) throw new Error('缺少 uuid')
if (table === 'Project') {
const row = await prisma.project.findUnique({ where: { uuid }, select: { id: true, isPersonal: true } })
if (!row) return { skipped: true }
if (!(await assertMember(row.id))) throw new Error('无项目权限')
if (row.isPersonal) throw new Error('个人默认项目不可删除')
await prisma.project.delete({ where: { uuid } })
return {}
}
if (table === 'BoardColumn') {
const row = await prisma.boardColumn.findUnique({ where: { uuid } })
if (!row) return { skipped: true }
if (!(await assertMember(row.projectId))) throw new Error('无项目权限')
await prisma.boardColumn.delete({ where: { uuid } })
return {}
}
if (table === 'ProjectMember') {
const row = await prisma.projectMember.findUnique({ where: { uuid } })
if (!row) return { skipped: true }
if (!(await assertMember(row.projectId))) throw new Error('无项目权限')
await prisma.projectMember.delete({ where: { uuid } })
return {}
}
if (table === 'Task') {
const row = await prisma.task.findUnique({ where: { uuid } })
if (!row) return { skipped: true }
if (!(await assertMember(row.projectId))) throw new Error('无项目权限')
await prisma.task.delete({ where: { uuid } })
return {}
}
if (table === 'TaskMember') {
const row = await prisma.taskMember.findUnique({ where: { uuid } })
if (!row) return { skipped: true }
const task = await prisma.task.findUnique({ where: { id: row.taskId }, select: { projectId: true } })
if (!task || !(await assertMember(task.projectId))) throw new Error('无项目权限')
await prisma.taskMember.delete({ where: { uuid } })
return {}
}
if (table === 'TaskTag') {
const row = await prisma.taskTag.findUnique({ where: { uuid } })
if (!row) return { skipped: true }
const task = await prisma.task.findUnique({ where: { id: row.taskId }, select: { projectId: true } })
if (!task || !(await assertMember(task.projectId))) throw new Error('无项目权限')
await prisma.taskTag.delete({ where: { uuid } })
return {}
}
throw new Error('未知表: ' + table)
}
router.post('/upload', authRequired, async (req, res, next) => {
try {
const userId = req.user.sub
const ops = Array.isArray(req.body?.ops) ? req.body.ops : []
if (!ops.length) return res.status(400).json({ error: 'ops 不能为空' })
if (ops.length > 500) return res.status(400).json({ error: '单批 ops 过多 (上限 500)' })
const memberCache = new Map()
const assertMember = async (projectId) => {
if (!projectId) return false
if (memberCache.has(projectId)) return memberCache.get(projectId)
const ok = !!(await prisma.projectMember.findFirst({ where: { projectId, userId } }))
memberCache.set(projectId, ok)
return ok
}
const ctx = { userId, assertMember }
// 依赖顺序: 父表先落地 (Project → BoardColumn → ProjectMember → Task → TaskMember/TaskTag); 删除反向
const rank = (o) => TABLE_RANK[o?.table] ?? 99
const puts = ops.filter((o) => o && o.op !== 'DELETE').sort((a, b) => rank(a) - rank(b))
const dels = ops.filter((o) => o && o.op === 'DELETE').sort((a, b) => rank(b) - rank(a))
const results = []
for (const op of puts) {
try {
const extra = await applyPut(op, ctx)
results.push({ id: op.id, ok: true, ...extra })
} catch (e) {
results.push({ id: op.id, ok: false, error: e.message })
}
}
for (const op of dels) {
try {
const extra = await applyDelete(op, ctx)
results.push({ id: op.id, ok: true, ...extra })
} catch (e) {
results.push({ id: op.id, ok: false, error: e.message })
}
}
res.json({ results })
} catch (e) { next(e) }
})
export default router
+44 -5
View File
@@ -3,6 +3,7 @@ import { Router } from 'express'
import { prisma } from '../db.js' import { prisma } from '../db.js'
import { authRequired } from '../middleware.js' import { authRequired } from '../middleware.js'
import { loadProjectForUser, loadColumns, loadMemberIds } from '../task-domain/access.js' import { loadProjectForUser, loadColumns, loadMemberIds } from '../task-domain/access.js'
import { genUuid, withUuid, normProjectCode, allocProjectCode } from '../task-domain/identity.js'
const router = Router() const router = Router()
router.use(authRequired) router.use(authRequired)
@@ -21,7 +22,7 @@ const MAX_NAME = 20
/** 建 4 个默认列 */ /** 建 4 个默认列 */
async function createDefaultColumns(projectId) { async function createDefaultColumns(projectId) {
await prisma.boardColumn.createMany({ await prisma.boardColumn.createMany({
data: DEFAULT_COLUMNS.map((c) => ({ ...c, projectId, retention: 'forever' })), data: withUuid(DEFAULT_COLUMNS.map((c) => ({ ...c, projectId, retention: 'forever' }))),
}) })
} }
@@ -32,7 +33,14 @@ export async function ensurePersonalProject(userId) {
const user = await prisma.user.findUnique({ where: { id: userId }, select: { name: true } }) const user = await prisma.user.findUnique({ where: { id: userId }, select: { name: true } })
const name = `${user?.name || '我'}的任务` const name = `${user?.name || '我'}的任务`
const project = await prisma.project.create({ const project = await prisma.project.create({
data: { name, ownerId: userId, isPersonal: true, members: { create: { userId } } }, data: {
name,
ownerId: userId,
isPersonal: true,
uuid: genUuid(),
code: await allocProjectCode(name),
members: { create: { uuid: genUuid(), userId } },
},
}) })
await createDefaultColumns(project.id) await createDefaultColumns(project.id)
return project return project
@@ -58,6 +66,8 @@ export function normTaskKinds(v) {
function projectSummary(p) { function projectSummary(p) {
return { return {
id: p.id, id: p.id,
uuid: p.uuid,
code: p.code,
name: p.name, name: p.name,
ownerId: p.ownerId, ownerId: p.ownerId,
isPersonal: p.isPersonal, isPersonal: p.isPersonal,
@@ -96,8 +106,27 @@ router.post('/', async (req, res, next) => {
if (!name) return res.status(400).json({ error: '项目名称不能为空' }) if (!name) return res.status(400).json({ error: '项目名称不能为空' })
if (name.length > MAX_NAME) return res.status(400).json({ error: `项目名称不能超过 ${MAX_NAME} 字` }) if (name.length > MAX_NAME) return res.status(400).json({ error: `项目名称不能超过 ${MAX_NAME} 字` })
// 项目短编号: 可由客户端自拟 (2~8 位字母数字, 全局唯一), 未提供时按名称自动分配
let code
const rawCode = req.body?.code
if (rawCode !== undefined && rawCode !== null && String(rawCode).trim() !== '') {
code = normProjectCode(rawCode)
if (!code) return res.status(400).json({ error: '项目编号须为 2~8 位字母数字' })
const dup = await prisma.project.findUnique({ where: { code } })
if (dup) return res.status(409).json({ error: `项目编号 ${code} 已被占用` })
} else {
code = await allocProjectCode(name)
}
const project = await prisma.project.create({ const project = await prisma.project.create({
data: { name, ownerId: userId, isPersonal: false, members: { create: { userId } } }, data: {
name,
ownerId: userId,
isPersonal: false,
uuid: genUuid(),
code,
members: { create: { uuid: genUuid(), userId } },
},
}) })
await createDefaultColumns(project.id) await createDefaultColumns(project.id)
const full = await prisma.project.findUnique({ const full = await prisma.project.findUnique({
@@ -139,7 +168,7 @@ router.put('/:id', async (req, res, next) => {
const userId = req.user.sub const userId = req.user.sub
const project = await loadProjectForUser(req.params.id, userId) const project = await loadProjectForUser(req.params.id, userId)
if (!project) return res.status(404).json({ error: '项目不存在或无权限' }) if (!project) return res.status(404).json({ error: '项目不存在或无权限' })
const { name, archived, notes, taskKinds, icon, autoArchive } = req.body || {} const { name, archived, notes, taskKinds, icon, autoArchive, code } = req.body || {}
const data = {} const data = {}
if (name !== undefined) { if (name !== undefined) {
const t = String(name).trim() const t = String(name).trim()
@@ -147,6 +176,16 @@ router.put('/:id', async (req, res, next) => {
if (t.length > MAX_NAME) return res.status(400).json({ error: `项目名称不能超过 ${MAX_NAME} 字` }) if (t.length > MAX_NAME) return res.status(400).json({ error: `项目名称不能超过 ${MAX_NAME} 字` })
data.name = t data.name = t
} }
// 项目短编号: 可修改 (2~8 位字母数字, 全局唯一)
if (code !== undefined) {
const c = normProjectCode(code)
if (!c) return res.status(400).json({ error: '项目编号须为 2~8 位字母数字' })
if (c !== project.code) {
const dup = await prisma.project.findUnique({ where: { code: c } })
if (dup) return res.status(409).json({ error: `项目编号 ${c} 已被占用` })
data.code = c
}
}
// 任务类型标签: 整体替换; 空数组回落默认 // 任务类型标签: 整体替换; 空数组回落默认
if (taskKinds !== undefined) { if (taskKinds !== undefined) {
if (!Array.isArray(taskKinds)) return res.status(400).json({ error: '任务类型格式非法' }) if (!Array.isArray(taskKinds)) return res.status(400).json({ error: '任务类型格式非法' })
@@ -215,7 +254,7 @@ router.post('/:id/members', async (req, res, next) => {
}) })
if (exist) return res.status(409).json({ error: '该用户已是项目成员' }) if (exist) return res.status(409).json({ error: '该用户已是项目成员' })
await prisma.projectMember.create({ data: { projectId: project.id, userId: target.id } }) await prisma.projectMember.create({ data: { uuid: genUuid(), projectId: project.id, userId: target.id } })
res.json({ ok: true, member: { userId: target.id, name: target.name } }) res.json({ ok: true, member: { userId: target.id, name: target.name } })
} catch (e) { next(e) } } catch (e) { next(e) }
}) })
+26 -23
View File
@@ -9,6 +9,7 @@ import { resolveTaskWrite } from '../task-domain/resolveStatus.js'
import { filterVisible } from '../task-domain/retention.js' import { filterVisible } from '../task-domain/retention.js'
import { copyTask } from '../task-domain/copyTask.js' import { copyTask } from '../task-domain/copyTask.js'
import { runAutoArchiveForProject } from '../task-domain/archive.js' import { runAutoArchiveForProject } from '../task-domain/archive.js'
import { genUuid, withUuid, withTaskNumber } from '../task-domain/identity.js'
const router = Router() const router = Router()
router.use(authRequired) router.use(authRequired)
@@ -184,28 +185,30 @@ router.post('/projects/:id/tasks', async (req, res, next) => {
} }
const firstCol = columns[0] const firstCol = columns[0]
const row = await prisma.task.create({ const taskData = {
data: { uuid: req.body?.uuid || genUuid(),
projectId: project.id, projectId: project.id,
columnId: firstCol.id, columnId: firstCol.id,
parentId: pid, parentId: pid,
title: cleanTitle, title: cleanTitle,
description: String(description || ''), description: String(description || ''),
kind: kind ? String(kind).trim().slice(0, 20) : null, kind: kind ? String(kind).trim().slice(0, 20) : null,
markDate: mark, markDate: mark,
status: firstCol.boundStatus || 'todo', status: firstCol.boundStatus || 'todo',
assigneeId: finalAssignee, assigneeId: finalAssignee,
creatorId: userId, creatorId: userId,
extras: [], extras: [],
members: { members: {
create: (Array.isArray(memberIds) ? memberIds : []) create: withUuid((Array.isArray(memberIds) ? memberIds : [])
.map(Number).filter((id) => memberSet.has(id)) .map(Number).filter((id) => memberSet.has(id))
.map((uid) => ({ userId: uid })), .map((uid) => ({ userId: uid }))),
},
tags: { create: (Array.isArray(tags) ? tags : []).filter(Boolean).map((n) => ({ name: String(n).slice(0, 20) })) },
}, },
include: TASK_INCLUDE, tags: { create: withUuid((Array.isArray(tags) ? tags : []).filter(Boolean).map((n) => ({ name: String(n).slice(0, 20) }))) },
}) }
// 项目内自增编号 (展示 `code-number`): 服务端分配, 并发冲突时重取 max+1 重试
const { value: row } = await withTaskNumber(project.id, (number) =>
prisma.task.create({ data: { ...taskData, number }, include: TASK_INCLUDE }),
)
res.json({ item: shape(row) }) res.json({ item: shape(row) })
} catch (e) { next(e) } } catch (e) { next(e) }
}) })
@@ -333,7 +336,7 @@ router.put('/tasks/:id', async (req, res, next) => {
await prisma.taskMember.deleteMany({ where: { taskId: task.id } }) await prisma.taskMember.deleteMany({ where: { taskId: task.id } })
if (ids.length) { if (ids.length) {
await prisma.taskMember.createMany({ await prisma.taskMember.createMany({
data: ids.map((uid) => ({ taskId: task.id, userId: uid })), data: withUuid(ids.map((uid) => ({ taskId: task.id, userId: uid }))),
}) })
} }
} }
@@ -341,7 +344,7 @@ router.put('/tasks/:id', async (req, res, next) => {
await prisma.taskTag.deleteMany({ where: { taskId: task.id } }) await prisma.taskTag.deleteMany({ where: { taskId: task.id } })
const names = body.tags.map((n) => String(n).trim()).filter(Boolean).slice(0, 10) const names = body.tags.map((n) => String(n).trim()).filter(Boolean).slice(0, 10)
if (names.length) { if (names.length) {
await prisma.taskTag.createMany({ data: names.map((name) => ({ taskId: task.id, name: name.slice(0, 20) })) }) await prisma.taskTag.createMany({ data: withUuid(names.map((name) => ({ taskId: task.id, name: name.slice(0, 20) }))) })
} }
} }
+25 -17
View File
@@ -1,6 +1,7 @@
// 任务模块: 跨项目拷贝 (T-CP-*) // 任务模块: 跨项目拷贝 (T-CP-*)
// 拷贝而非移动: 新建记录 + 深拷贝子任务, 源任务零改动. // 拷贝而非移动: 新建记录 + 深拷贝子任务, 源任务零改动.
import { prisma } from '../db.js' import { prisma } from '../db.js'
import { genUuid, withUuid, withTaskNumber } from './identity.js'
/** /**
* 拷贝一条任务(含子任务)到目标项目。 * 拷贝一条任务(含子任务)到目标项目。
@@ -38,6 +39,7 @@ export async function copyTask({ source, targetProject, targetColumns, operatorI
const droppedAssignee = source.assigneeId && !memberSet.has(source.assigneeId) ? source.assignee : null const droppedAssignee = source.assigneeId && !memberSet.has(source.assigneeId) ? source.assignee : null
const baseData = (extra) => ({ const baseData = (extra) => ({
uuid: genUuid(),
projectId: targetProject.id, projectId: targetProject.id,
title: source.title, title: source.title,
description: source.description || '', description: source.description || '',
@@ -50,33 +52,39 @@ export async function copyTask({ source, targetProject, targetColumns, operatorI
doneAt: source.status === 'done' ? (source.doneAt || new Date()) : null, doneAt: source.status === 'done' ? (source.doneAt || new Date()) : null,
sortOrder: source.sortOrder ?? 0, sortOrder: source.sortOrder ?? 0,
tags: { tags: {
create: (source.tags || []).map((t) => ({ name: t.name })), create: withUuid((source.tags || []).map((t) => ({ name: t.name }))),
}, },
}) })
const newTask = await prisma.task.create({ const { value: newTask } = await withTaskNumber(targetProject.id, (number) =>
data: { prisma.task.create({
...baseData({ columnId: pickColumn(source.columnId) }), data: {
members: { ...baseData({ columnId: pickColumn(source.columnId) }),
create: keptMemberIds.map((uid) => ({ userId: uid })), number,
members: {
create: withUuid(keptMemberIds.map((uid) => ({ userId: uid }))),
},
}, },
}, }),
}) )
// 子任务: 同法复制, parentId 指向新父任务 // 子任务: 同法复制, parentId 指向新父任务
for (const child of source.children || []) { for (const child of source.children || []) {
const childMembers = (child.members || []) const childMembers = (child.members || [])
.filter((m) => memberSet.has(m.userId)) .filter((m) => memberSet.has(m.userId))
.map((m) => m.userId) .map((m) => m.userId)
await prisma.task.create({ await withTaskNumber(targetProject.id, (number) =>
data: { prisma.task.create({
...baseData({ data: {
columnId: pickColumn(child.columnId), ...baseData({
parentId: newTask.id, columnId: pickColumn(child.columnId),
}), parentId: newTask.id,
members: { create: childMembers.map((uid) => ({ userId: uid })) }, }),
}, number,
}) members: { create: withUuid(childMembers.map((uid) => ({ userId: uid }))) },
},
}),
)
} }
return { return {
+74
View File
@@ -0,0 +1,74 @@
// 任务域同步标识与编号 (0.2.1 离线编辑, 见 docs/V0.2/离线编辑模块/0.2.1实施方案.md)
// 约定: 任务域 6 表均带 uuid(客户端/服务端创建时生成, 上行按 uuid 幂等);
// Project.code 为用户自拟 2~8 位字母数字短编号(存储大写, 全局唯一);
// Task.number 为项目内自增编号, 服务端分配, 展示 `code-number`。
import crypto from 'node:crypto'
import { prisma } from '../db.js'
/** 同步标识: 服务端创建行时统一生成 uuid */
export function genUuid() {
return crypto.randomUUID()
}
/** 为多行数据补 uuid (createMany 前用) */
export function withUuid(rows) {
return rows.map((r) => ({ ...r, uuid: r.uuid || genUuid() }))
}
// 项目编号: 2~8 位字母数字, 存储统一大写 (任务展示 `编号-序号`, 不允许连字符)
const CODE_RE = /^[A-Z0-9]{2,8}$/
/** 归一化项目编号; 非法返回 null */
export function normProjectCode(v) {
const s = String(v || '').trim().toUpperCase()
return CODE_RE.test(s) ? s : null
}
function randCode(len) {
return crypto.randomBytes(len * 2).toString('hex').toUpperCase().replace(/[^A-Z0-9]/g, '').padEnd(len, 'X').slice(0, len)
}
/** 从项目名推导候选编号: 取 ASCII 字母数字, 不足则随机补齐 */
function suggestCode(name) {
const letters = String(name || '').toUpperCase().replace(/[^A-Z0-9]/g, '')
if (letters.length >= 2) return letters.slice(0, 8)
return (letters + randCode(8)).slice(0, 8)
}
/** 分配一个未占用的项目编号: 优先按名称推导, 冲突则随机尾缀重试 */
export async function allocProjectCode(name) {
const base = suggestCode(name)
for (let i = 0; i < 20; i++) {
const cand = i === 0 ? base : (base.slice(0, 5) + randCode(3)).slice(0, 8)
if (cand.length < 2 || !CODE_RE.test(cand)) continue
const dup = await prisma.project.findUnique({ where: { code: cand } })
if (!dup) return cand
}
while (true) {
const cand = randCode(6)
const dup = await prisma.project.findUnique({ where: { code: cand } })
if (!dup) return cand
}
}
/** 任务项目内下一个编号 (max+1); 并发冲突由调用方捕获 P2002 重试 */
export async function nextTaskNumber(projectId) {
const agg = await prisma.task.aggregate({ where: { projectId }, _max: { number: true } })
return (agg._max.number ?? 0) + 1
}
/** Task.number 唯一冲突重试包装: fn(number) 返回 Promise; 冲突时重取编号, 最多 3 次 */
export async function withTaskNumber(projectId, fn) {
let lastErr = null
for (let attempt = 0; attempt < 3; attempt++) {
const number = await nextTaskNumber(projectId)
try {
return { number, value: await fn(number) }
} catch (e) {
const target = Array.isArray(e?.meta?.target) ? e.meta.target.join(',') : String(e?.meta?.target || '')
lastErr = e
if (!(e?.code === 'P2002' && target.includes('number'))) throw e
}
}
throw lastErr
}
+5 -2
View File
@@ -8,6 +8,7 @@ import MePage from './pages/MePage.jsx'
import CheckinPage from './pages/checkin/CheckinPage.jsx' import CheckinPage from './pages/checkin/CheckinPage.jsx'
import TaskPage from './pages/task/TaskPage.jsx' import TaskPage from './pages/task/TaskPage.jsx'
import { useAuth } from './auth/AuthContext.jsx' import { useAuth } from './auth/AuthContext.jsx'
import { PowerSyncProvider } from './lib/powersync/react.jsx'
// 默认落地页: 打卡 (V0.2 起打卡是第一个 Tab 且为默认选中) // 默认落地页: 打卡 (V0.2 起打卡是第一个 Tab 且为默认选中)
const HOME_PATH = '/checkin' const HOME_PATH = '/checkin'
@@ -31,7 +32,8 @@ function RequireAuth({ children }) {
export default function App() { export default function App() {
return ( return (
<Routes> <PowerSyncProvider>
<Routes>
<Route path="/login" element={<RedirectIfAuthed><LoginPage /></RedirectIfAuthed>} /> <Route path="/login" element={<RedirectIfAuthed><LoginPage /></RedirectIfAuthed>} />
<Route element={<RequireAuth><MobileShell /></RequireAuth>}> <Route element={<RequireAuth><MobileShell /></RequireAuth>}>
{/* 打卡为默认首页 */} {/* 打卡为默认首页 */}
@@ -49,6 +51,7 @@ export default function App() {
<Route path="/me" element={<MePage />} /> <Route path="/me" element={<MePage />} />
</Route> </Route>
<Route path="*" element={<Navigate to={HOME_PATH} replace />} /> <Route path="*" element={<Navigate to={HOME_PATH} replace />} />
</Routes> </Routes>
</PowerSyncProvider>
) )
} }
+143 -10
View File
@@ -1,13 +1,121 @@
// API 调用封装: 自动带 JWT、401 自动清 token、抛统一错误 // API 调用封装: 自动带 JWT、401 自动清 token、抛统一错误
// 0.2.1 离线支持:
// - GET 请求成功后把响应写入本地缓存 (localStorage), 离线/网络失败时回退缓存 (界面仍有数据)
// - 写请求 (POST/PUT/DELETE) 仍要求在线 (任务模块的离线写走 PowerSync 上传队列)
// - 统一在线/离线状态订阅, 供 UI 显示离线标识
const TOKEN_KEY = 'iboard_token' const TOKEN_KEY = 'iboard_token'
const REMEMBER_KEY = 'iboard_remember' const REMEMBER_KEY = 'iboard_remember'
const UID_KEY = 'iboard_uid'
// API 基址: // API 基址:
// - 默认相对路径 `/api` (web dev: Vite 代理; web prod: 同源 Express 一起托管) // - 默认相对路径 `/api` (web dev: Vite 代理; web prod: 同源 Express 一起托管)
// - 打包 Android 时设 VITE_API_BASE=http://bh.vps.honor3.com:3001 走外网后端 // - 打包 Android / Windows 外壳时设 VITE_API_BASE=http://bh.vps.honor3.com:3001 走外网后端
const API_BASE = (import.meta.env.VITE_API_BASE || '').replace(/\/+$/, '') const API_BASE = (import.meta.env.VITE_API_BASE || '').replace(/\/+$/, '')
const API_PREFIX = API_BASE ? API_BASE + '/api' : '/api' const API_PREFIX = API_BASE ? API_BASE + '/api' : '/api'
// ---------- 在线/离线状态 (网络事件 + 请求结果联动) ----------
let offline = typeof navigator !== 'undefined' ? navigator.onLine === false : false
const offlineListeners = new Set()
export function isOffline() {
return offline
}
function setOffline(next) {
if (offline === next) return
offline = next
offlineListeners.forEach((cb) => {
try { cb(next) } catch { /* ignore */ }
})
}
if (typeof window !== 'undefined') {
window.addEventListener('online', () => setOffline(false))
window.addEventListener('offline', () => setOffline(true))
}
/** 订阅在线/离线变化, 返回取消函数 */
export function subscribeOffline(cb) {
offlineListeners.add(cb)
return () => offlineListeners.delete(cb)
}
// ---------- GET 响应本地缓存 ----------
// 目的: 任何界面只要成功访问过一次, 离线时都能展示上次的数据
const CACHE_PREFIX = 'iboard_cache:'
const CACHE_TOTAL_LIMIT = 3 * 1024 * 1024 // 约 3MB (localStorage 通常 5MB)
const CACHE_ENTRY_LIMIT = 512 * 1024 // 单条上限, 超大响应不缓存
function cacheKey(path) {
return CACHE_PREFIX + path
}
function readCache(path) {
try {
const raw = localStorage.getItem(cacheKey(path))
if (!raw) return null
const parsed = JSON.parse(raw)
if (!parsed || typeof parsed !== 'object' || !('data' in parsed)) return null
return parsed
} catch {
return null
}
}
function cacheSizeUsed() {
let total = 0
try {
for (let i = 0; i < localStorage.length; i++) {
const k = localStorage.key(i)
if (k && k.startsWith(CACHE_PREFIX)) total += (localStorage.getItem(k) || '').length
}
} catch { /* ignore */ }
return total
}
function evictOldest(needBytes) {
try {
const entries = []
for (let i = 0; i < localStorage.length; i++) {
const k = localStorage.key(i)
if (!k || !k.startsWith(CACHE_PREFIX)) continue
let ts = 0
try { ts = JSON.parse(localStorage.getItem(k) || '{}').ts || 0 } catch { /* ignore */ }
entries.push({ k, ts })
}
entries.sort((a, b) => a.ts - b.ts)
let used = cacheSizeUsed()
for (const e of entries) {
if (used + needBytes <= CACHE_TOTAL_LIMIT) break
used -= (localStorage.getItem(e.k) || '').length
localStorage.removeItem(e.k)
}
} catch { /* ignore */ }
}
function writeCache(path, data) {
try {
const payload = JSON.stringify({ ts: Date.now(), data })
if (payload.length > CACHE_ENTRY_LIMIT) return // 过大不缓存
evictOldest(payload.length)
localStorage.setItem(cacheKey(path), payload)
} catch {
// 配额满等异常: 静默失败, 不影响主流程
}
}
/** 清空所有 GET 缓存 (退出登录时调用) */
export function clearApiCache() {
try {
const keys = []
for (let i = 0; i < localStorage.length; i++) {
const k = localStorage.key(i)
if (k && k.startsWith(CACHE_PREFIX)) keys.push(k)
}
keys.forEach((k) => localStorage.removeItem(k))
} catch { /* ignore */ }
}
export function getToken() { export function getToken() {
return localStorage.getItem(TOKEN_KEY) || '' return localStorage.getItem(TOKEN_KEY) || ''
} }
@@ -26,21 +134,45 @@ export function setRememberFlag(v) {
else localStorage.removeItem(REMEMBER_KEY) else localStorage.removeItem(REMEMBER_KEY)
} }
// 当前用户 id (0.2.1 离线写入需要 ownerId/creatorId, 本地库无法即时从服务端获取)
export function getCurrentUserId() {
return localStorage.getItem(UID_KEY) || ''
}
export function setCurrentUserId(id) {
if (id !== null && id !== undefined && id !== '') localStorage.setItem(UID_KEY, String(id))
else localStorage.removeItem(UID_KEY)
}
export function getApiBase() { export function getApiBase() {
return API_BASE return API_BASE
} }
export async function api(path, { method = 'GET', body, headers = {} } = {}) { export async function api(path, { method = 'GET', body, headers = {} } = {}) {
const token = getToken() const token = getToken()
const res = await fetch(API_PREFIX + path, { const isRead = method === 'GET'
method, let res
headers: { try {
'Content-Type': 'application/json', res = await fetch(API_PREFIX + path, {
...(token ? { Authorization: 'Bearer ' + token } : {}), method,
...headers, headers: {
}, 'Content-Type': 'application/json',
body: body ? JSON.stringify(body) : undefined, ...(token ? { Authorization: 'Bearer ' + token } : {}),
}) ...headers,
},
body: body ? JSON.stringify(body) : undefined,
})
} catch {
// 网络层失败: 离线 / 服务不可达
setOffline(true)
if (isRead) {
const cached = readCache(path)
if (cached) return cached.data
throw new Error('当前离线,且该界面尚无本地缓存')
}
throw new Error('当前离线,修改操作需要联网后重试')
}
setOffline(false)
if (res.status === 401) { if (res.status === 401) {
setToken('') setToken('')
const data = await res.json().catch(() => ({})) const data = await res.json().catch(() => ({}))
@@ -49,5 +181,6 @@ export async function api(path, { method = 'GET', body, headers = {} } = {}) {
} }
const data = await res.json().catch(() => ({})) const data = await res.json().catch(() => ({}))
if (!res.ok) throw new Error(data.error || '请求失败 (' + res.status + ')') if (!res.ok) throw new Error(data.error || '请求失败 (' + res.status + ')')
if (isRead) writeCache(path, data)
return data return data
} }
+764 -33
View File
@@ -1,44 +1,775 @@
import { api } from './client.js' // 任务模块数据层 (0.2.1): 已切换为 PowerSync 本地 SQLite
// - 读: 全部来自本地库 (离线可用); 写: 本地写入 -> upload queue -> /api/powersync/upload (按 uuid 幂等)
// - 对页面保持与原 REST 版一致的调用签名与响应形状 (projectApi / columnApi / taskApi)
// - 编号: Project.code / Task.number 由服务端统一分配, 本地新建行同步前分别为空 -> 展示占位
// 见 docs/V0.2/离线编辑模块/0.2.1实施方案.md
import { getPowersyncDb } from '../lib/powersync/db.js'
import { api, getCurrentUserId } from './client.js'
import { filterVisible } from '../pages/task/date.js'
const q = (params) => { const db = () => getPowersyncDb()
const s = new URLSearchParams()
Object.entries(params || {}).forEach(([k, v]) => { // crypto.randomUUID 仅在安全上下文 (https / localhost) 可用; 部署站为 http 明文, 用 getRandomValues 兜底生成 v4
if (v !== undefined && v !== null && v !== '') s.set(k, v) const uuid = () => {
}) if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') return crypto.randomUUID()
const str = s.toString() const b = crypto.getRandomValues(new Uint8Array(16))
return str ? '?' + str : '' b[6] = (b[6] & 0x0f) | 0x40
b[8] = (b[8] & 0x3f) | 0x80
const h = [...b].map((x) => x.toString(16).padStart(2, '0')).join('')
return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20)}`
}
const now = () => new Date().toISOString()
const parseJson = (v, fallback) => {
if (v === null || v === undefined || v === '') return fallback
if (typeof v !== 'string') return v
try { return JSON.parse(v) } catch { return fallback }
} }
// 项目 // 新建项目时的默认 4 列 (与服务端 DEFAULT_COLUMNS 一致)
const DEFAULT_COLUMNS = [
{ name: 'Plan', sortOrder: 0, boundStatus: 'todo' },
{ name: 'Doing', sortOrder: 1, boundStatus: 'doing' },
{ name: 'Action', sortOrder: 2, boundStatus: null },
{ name: 'Done', sortOrder: 3, boundStatus: 'done' },
]
export const DEFAULT_TASK_KINDS = ['需求', 'Bug', 'FEATURE', '优化']
const MAX_NAME = 20
function normTaskKinds(v) {
if (!Array.isArray(v)) return null
const out = []
for (const k of v) {
const s = String(k || '').trim().slice(0, 20)
if (s && !out.includes(s)) out.push(s)
if (out.length >= 30) break
}
return out
}
// ---------- 查询助手 ----------
async function getColumns(projectId) {
return db().getAll(
'SELECT * FROM BoardColumn WHERE projectId = ? ORDER BY sortOrder, id',
[String(projectId)],
)
}
async function getProjectMembers(projectId) {
const rows = await db().getAll(
`SELECT pm.userId, pm.permission, u.name, u.email
FROM ProjectMember pm LEFT JOIN User u ON u.id = pm.userId
WHERE pm.projectId = ? ORDER BY pm.createdAt, pm.id`,
[String(projectId)],
)
return rows.map((r) => ({ userId: String(r.userId), name: r.name || String(r.userId), email: r.email || '', permission: r.permission || 'member' }))
}
function memberMapOf(members) {
return new Map(members.map((m) => [m.userId, { id: m.userId, name: m.name }]))
}
async function shapeTasks(rows, columns) {
const columnById = new Map(columns.map((c) => [String(c.id), c]))
const projectIds = [...new Set(rows.map((r) => String(r.projectId)))]
let membersByProject = new Map()
if (projectIds.length) {
const ph = projectIds.map(() => '?').join(',')
const pmRows = await db().getAll(
`SELECT pm.projectId, pm.userId, u.name FROM ProjectMember pm LEFT JOIN User u ON u.id = pm.userId WHERE pm.projectId IN (${ph})`,
projectIds,
)
membersByProject = new Map(projectIds.map((pid) => [pid, new Map()]))
for (const r of pmRows) {
membersByProject.get(String(r.projectId)).set(String(r.userId), { id: String(r.userId), name: r.name || String(r.userId) })
}
}
const taskIds = rows.map((r) => String(r.id))
const memberRows = taskIds.length
? await db().getAll(
`SELECT tm.taskId, tm.userId, u.name FROM TaskMember tm LEFT JOIN User u ON u.id = tm.userId WHERE tm.taskId IN (${taskIds.map(() => '?').join(',')})`,
taskIds,
)
: []
const tagRows = taskIds.length
? await db().getAll(`SELECT taskId, name FROM TaskTag WHERE taskId IN (${taskIds.map(() => '?').join(',')})`, taskIds)
: []
const membersByTask = new Map()
for (const r of memberRows) {
const k = String(r.taskId)
if (!membersByTask.has(k)) membersByTask.set(k, [])
membersByTask.get(k).push({ userId: String(r.userId), name: r.name || String(r.userId) })
}
const tagsByTask = new Map()
for (const r of tagRows) {
const k = String(r.taskId)
if (!tagsByTask.has(k)) tagsByTask.set(k, [])
tagsByTask.get(k).push(r.name)
}
const shapeOne = (t) => {
const members = membersByTask.get(String(t.id)) || []
const usersByProject = membersByProject.get(String(t.projectId)) || new Map()
return {
...t,
extras: parseJson(t.extras, []),
column: columnById.get(String(t.columnId)) || null,
assignee: t.assigneeId ? (usersByProject.get(String(t.assigneeId)) || { id: String(t.assigneeId), name: String(t.assigneeId) }) : null,
members,
tags: tagsByTask.get(String(t.id)) || [],
}
}
return shapeOne
}
function projectSummary(p, memberCount, taskCount) {
return {
id: String(p.id),
uuid: p.uuid,
code: p.code || null,
name: p.name,
ownerId: String(p.ownerId),
isPersonal: !!p.isPersonal,
archived: !!p.archived,
createdAt: p.createdAt,
updatedAt: p.updatedAt,
taskKinds: normTaskKinds(parseJson(p.taskKinds, null)) || DEFAULT_TASK_KINDS,
icon: p.icon || null,
memberCount,
taskCount,
}
}
function assertUser() {
const uid = getCurrentUserId()
if (!uid) throw new Error('未登录')
return String(uid)
}
// ---------- 项目 ----------
export const projectApi = { export const projectApi = {
list: () => api('/projects'), // 我参与的项目 (本地库; 个人默认项目缺失且在线时回源一次让服务端补建)
detail: (id) => api(`/projects/${id}`), list: async () => {
create: (body) => api('/projects', { method: 'POST', body }), const uid = assertUser()
update: (id, body) => api(`/projects/${id}`, { method: 'PUT', body }), let rows = await db().getAll(
remove: (id) => api(`/projects/${id}`, { method: 'DELETE' }), `SELECT p.* FROM Project p WHERE p.id IN (SELECT pm.projectId FROM ProjectMember pm WHERE pm.userId = ?)
addMember: (id, body) => api(`/projects/${id}/members`, { method: 'POST', body }), ORDER BY p.archived, p.updatedAt DESC`,
removeMember: (id, uid) => api(`/projects/${id}/members/${uid}`, { method: 'DELETE' }), [uid],
)
if (!rows.some((r) => !!r.isPersonal && String(r.ownerId) === uid)) {
try {
await api('/projects')
await new Promise((r) => setTimeout(r, 1200))
rows = await db().getAll(
`SELECT p.* FROM Project p WHERE p.id IN (SELECT pm.projectId FROM ProjectMember pm WHERE pm.userId = ?)
ORDER BY p.archived, p.updatedAt DESC`,
[uid],
)
} catch { /* 离线: 无个人项目则跳过 */ }
}
const items = []
for (const p of rows) {
const memberCount = await db().getOptional('SELECT COUNT(*) AS n FROM ProjectMember WHERE projectId = ?', [String(p.id)])
const taskCount = await db().getOptional('SELECT COUNT(*) AS n FROM Task WHERE projectId = ?', [String(p.id)])
items.push(projectSummary(p, memberCount?.n || 0, taskCount?.n || 0))
}
return { items }
},
detail: async (id) => {
const p = await db().getOptional('SELECT * FROM Project WHERE id = ?', [String(id)])
if (!p) throw new Error('项目不存在或无权限')
const members = await getProjectMembers(p.id)
const columns = await getColumns(p.id)
const taskCount = await db().getOptional('SELECT COUNT(*) AS n FROM Task WHERE projectId = ?', [String(p.id)])
return {
item: {
...projectSummary(p, members.length, taskCount?.n || 0),
members,
columns,
notes: parseJson(p.notes, []),
},
}
},
create: async (body) => {
const uid = assertUser()
const name = String(body?.name || '').trim()
if (!name) throw new Error('项目名称不能为空')
if (name.length > MAX_NAME) throw new Error(`项目名称不能超过 ${MAX_NAME} 字`)
let code = null
const rawCode = body?.code
if (rawCode !== undefined && rawCode !== null && String(rawCode).trim() !== '') {
code = String(rawCode).trim().toUpperCase()
if (!/^[A-Z0-9]{2,8}$/.test(code)) throw new Error('项目编号须为 2~8 位字母数字')
const dup = await db().getOptional('SELECT id FROM Project WHERE code = ?', [code])
if (dup) throw new Error(`项目编号 ${code} 已被占用`)
}
const id = uuid()
const ts = now()
await db().writeTransaction(async (tx) => {
await tx.execute(
'INSERT INTO Project (id, uuid, code, name, ownerId, isPersonal, archived, notes, taskKinds, icon, createdAt, updatedAt) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
[id, id, code, name, uid, 0, 0, '[]', null, null, ts, ts],
)
await tx.execute(
'INSERT INTO ProjectMember (id, uuid, projectId, userId, permission, createdAt) VALUES (?, ?, ?, ?, ?, ?)',
[uuid(), uuid(), id, uid, 'member', ts],
)
for (const c of DEFAULT_COLUMNS) {
await tx.execute(
'INSERT INTO BoardColumn (id, uuid, projectId, name, sortOrder, boundStatus, retention, createdAt, updatedAt) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
[uuid(), uuid(), id, c.name, c.sortOrder, c.boundStatus, 'forever', ts, ts],
)
}
})
const p = await db().get('SELECT * FROM Project WHERE id = ?', [id])
return { item: projectSummary(p, 1, 0) }
},
update: async (id, body) => {
await db().getOptional('SELECT id FROM Project WHERE id = ?', [String(id)]).then((p) => {
if (!p) throw new Error('项目不存在或无权限')
})
const data = {}
if (body?.name !== undefined) {
const t = String(body.name).trim()
if (!t) throw new Error('项目名称不能为空')
if (t.length > MAX_NAME) throw new Error(`项目名称不能超过 ${MAX_NAME} 字`)
data.name = t
}
if (body?.code !== undefined) {
const c = String(body.code || '').trim().toUpperCase()
if (!/^[A-Z0-9]{2,8}$/.test(c)) throw new Error('项目编号须为 2~8 位字母数字')
const dup = await db().getOptional('SELECT id FROM Project WHERE code = ? AND id != ?', [c, String(id)])
if (dup) throw new Error(`项目编号 ${c} 已被占用`)
data.code = c
}
if (body?.taskKinds !== undefined) {
const kinds = normTaskKinds(body.taskKinds)
if (!kinds?.length) throw new Error('至少保留一个任务类型')
data.taskKinds = JSON.stringify(kinds)
}
if (body?.icon !== undefined) {
if (body.icon === null) data.icon = null
else {
const s = String(body.icon)
if (!s.startsWith('data:image/')) throw new Error('图标格式非法')
if (s.length > 300_000) throw new Error('图标过大')
data.icon = s
}
}
if (body?.archived !== undefined) data.archived = body.archived ? 1 : 0
if (body?.notes !== undefined) {
if (!Array.isArray(body.notes)) throw new Error('信息块格式非法')
data.notes = JSON.stringify(body.notes.slice(0, 50).map((n) => ({
title: String(n?.title ?? '').slice(0, 50),
content: String(n?.content ?? '').slice(0, 20000),
})))
}
const sets = Object.keys(data).map((k) => `"${k}" = ?`)
if (sets.length) {
await db().execute(
`UPDATE Project SET ${sets.join(', ')}, updatedAt = ? WHERE id = ?`,
[...Object.values(data), now(), String(id)],
)
}
const p = await db().get('SELECT * FROM Project WHERE id = ?', [String(id)])
const memberCount = await db().getOptional('SELECT COUNT(*) AS n FROM ProjectMember WHERE projectId = ?', [String(p.id)])
const taskCount = await db().getOptional('SELECT COUNT(*) AS n FROM Task WHERE projectId = ?', [String(p.id)])
return { item: projectSummary(p, memberCount?.n || 0, taskCount?.n || 0) }
},
remove: async (id) => {
const p = await db().getOptional('SELECT * FROM Project WHERE id = ?', [String(id)])
if (!p) throw new Error('项目不存在或无权限')
if (!!p.isPersonal) throw new Error('个人默认项目不可删除')
// 手动级联 (本地 SQLite 无外键级联)
await db().writeTransaction(async (tx) => {
const taskIds = (await tx.getAll('SELECT id FROM Task WHERE projectId = ?', [String(p.id)])).map((r) => String(r.id))
if (taskIds.length) {
const ph = taskIds.map(() => '?').join(',')
await tx.execute(`DELETE FROM TaskMember WHERE taskId IN (${ph})`, taskIds)
await tx.execute(`DELETE FROM TaskTag WHERE taskId IN (${ph})`, taskIds)
}
await tx.execute('DELETE FROM Task WHERE projectId = ?', [String(p.id)])
await tx.execute('DELETE FROM BoardColumn WHERE projectId = ?', [String(p.id)])
await tx.execute('DELETE FROM ProjectMember WHERE projectId = ?', [String(p.id)])
await tx.execute('DELETE FROM Project WHERE id = ?', [String(p.id)])
})
return { ok: true }
},
addMember: async (id, body) => {
const p = await db().getOptional('SELECT * FROM Project WHERE id = ?', [String(id)])
if (!p) throw new Error('项目不存在或无权限')
if (!!p.isPersonal) throw new Error('个人默认项目不可添加成员')
let target = null
if (body?.userId) target = await db().getOptional('SELECT id, name FROM User WHERE id = ?', [String(body.userId)])
else if (body?.email) target = await db().getOptional('SELECT id, name FROM User WHERE email = ?', [String(body.email).trim()])
if (!target) throw new Error('用户不存在')
const dup = await db().getOptional('SELECT id FROM ProjectMember WHERE projectId = ? AND userId = ?', [String(p.id), String(target.id)])
if (dup) throw new Error('该用户已是项目成员')
await db().execute(
'INSERT INTO ProjectMember (id, uuid, projectId, userId, permission, createdAt) VALUES (?, ?, ?, ?, ?, ?)',
[uuid(), uuid(), String(p.id), String(target.id), 'member', now()],
)
return { ok: true, member: { userId: String(target.id), name: target.name } }
},
removeMember: async (id, uid) => {
const p = await db().getOptional('SELECT * FROM Project WHERE id = ?', [String(id)])
if (!p) throw new Error('项目不存在或无权限')
if (!!p.isPersonal) throw new Error('个人默认项目不可移除成员')
const me = getCurrentUserId()
if (String(uid) !== me && String(p.ownerId) !== me) throw new Error('只能移除自己,或由创建人移除他人')
await db().execute('DELETE FROM ProjectMember WHERE projectId = ? AND userId = ?', [String(p.id), String(uid)])
return { ok: true }
},
} }
// 看板列 // ---------- 看板列 ----------
export const columnApi = { export const columnApi = {
list: (projectId) => api(`/projects/${projectId}/columns`), list: async (projectId) => ({ items: await getColumns(projectId) }),
add: (projectId, body) => api(`/projects/${projectId}/columns`, { method: 'POST', body }),
update: (id, body) => api(`/columns/${id}`, { method: 'PUT', body }), add: async (projectId, body) => {
remove: (id, moveToColumnId) => api(`/columns/${id}${q({ moveToColumnId })}`, { method: 'DELETE' }), const name = String(body?.name || '').trim()
order: (projectId, ids) => api(`/projects/${projectId}/columns/order`, { method: 'PUT', body: { ids } }), if (!name) throw new Error('列名不能为空')
if (name.length > MAX_NAME) throw new Error(`列名不能超过 ${MAX_NAME} 字`)
const cols = await getColumns(projectId)
if (cols.length >= 10) throw new Error('最多 10 列')
if (cols.some((c) => c.name === name)) throw new Error('列名已存在')
const id = uuid()
const ts = now()
await db().execute(
'INSERT INTO BoardColumn (id, uuid, projectId, name, sortOrder, boundStatus, retention, createdAt, updatedAt) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)',
[id, id, String(projectId), name, cols.length ? Math.max(...cols.map((c) => Number(c.sortOrder))) + 1 : 0, null, 'forever', ts, ts],
)
return { item: await db().get('SELECT * FROM BoardColumn WHERE id = ?', [id]) }
},
update: async (id, body) => {
const col = await db().getOptional('SELECT * FROM BoardColumn WHERE id = ?', [String(id)])
if (!col) throw new Error('列不存在')
const data = {}
if (body?.name !== undefined) {
const t = String(body.name).trim()
if (!t) throw new Error('列名不能为空')
if (t.length > MAX_NAME) throw new Error(`列名不能超过 ${MAX_NAME} 字`)
const dup = await db().getOptional('SELECT id FROM BoardColumn WHERE projectId = ? AND name = ? AND id != ?', [String(col.projectId), t, String(id)])
if (dup) throw new Error('列名已存在')
data.name = t
}
if (body?.boundStatus !== undefined) {
if (body.boundStatus !== null && !['todo', 'doing', 'done'].includes(body.boundStatus)) throw new Error('绑定状态取值非法')
data.boundStatus = body.boundStatus
}
if (body?.retention !== undefined) {
if (!['never', 'today', '3d', 'week', 'month', 'forever'].includes(body.retention)) throw new Error('保留选项取值非法')
data.retention = body.retention
}
const sets = Object.keys(data).map((k) => `"${k}" = ?`)
if (sets.length) {
await db().execute(`UPDATE BoardColumn SET ${sets.join(', ')}, updatedAt = ? WHERE id = ?`, [...Object.values(data), now(), String(id)])
}
return { item: await db().get('SELECT * FROM BoardColumn WHERE id = ?', [String(id)]) }
},
remove: async (id, moveToColumnId) => {
const col = await db().getOptional('SELECT * FROM BoardColumn WHERE id = ?', [String(id)])
if (!col) throw new Error('列不存在')
const cols = await getColumns(col.projectId)
if (cols.length <= 1) throw new Error('至少保留一列')
let targetId = String(moveToColumnId || '')
if (!targetId) {
const idx = cols.findIndex((c) => String(c.id) === String(id))
targetId = String((cols[idx + 1] || cols[idx - 1]).id)
}
const target = cols.find((c) => String(c.id) === targetId)
if (!target || String(target.id) === String(id)) throw new Error('迁移目标列非法')
await db().writeTransaction(async (tx) => {
// 迁移任务: 状态按目标列绑定重新裁决 (与服务端同口径)
if (target.boundStatus) {
await tx.execute('UPDATE Task SET columnId = ?, status = ?, updatedAt = ? WHERE columnId = ?', [targetId, target.boundStatus, now(), String(id)])
} else {
await tx.execute('UPDATE Task SET columnId = ?, updatedAt = ? WHERE columnId = ?', [targetId, now(), String(id)])
}
await tx.execute('DELETE FROM BoardColumn WHERE id = ?', [String(id)])
})
return { ok: true, toColumnId: targetId }
},
order: async (projectId, ids) => {
const list = Array.isArray(ids) ? ids.map(String) : []
if (!list.length) throw new Error('ids 不能为空')
await db().writeTransaction(async (tx) => {
for (let i = 0; i < list.length; i++) {
await tx.execute('UPDATE BoardColumn SET sortOrder = ?, updatedAt = ? WHERE id = ?', [i, now(), list[i]])
}
})
return { items: await getColumns(projectId) }
},
} }
// 任务 // ---------- 任务 ----------
function assertTitle(t) {
const s = String(t || '').trim()
if (!s) throw new Error('任务标题不能为空')
if (s.length > 30) throw new Error('任务标题不能超过 30 字')
return s
}
function parseMarkDate(v) {
if (v === null || v === undefined || v === '') return null
const d = new Date(v)
if (Number.isNaN(d.getTime())) throw new Error('时间标记格式非法')
return d.toISOString()
}
export const taskApi = { export const taskApi = {
list: (projectId) => api(`/projects/${projectId}/tasks`), list: async (projectId) => {
create: (projectId, body) => api(`/projects/${projectId}/tasks`, { method: 'POST', body }), const columns = await getColumns(projectId)
detail: (id) => api(`/tasks/${id}`), const rows = await db().getAll(
update: (id, body) => api(`/tasks/${id}`, { method: 'PUT', body }), 'SELECT * FROM Task WHERE projectId = ? AND parentId IS NULL AND archived = 0 ORDER BY sortOrder, createdAt, id',
reorder: (projectId, ids) => api(`/projects/${projectId}/tasks/reorder`, { method: 'POST', body: { ids } }), [String(projectId)],
remove: (id) => api(`/tasks/${id}`, { method: 'DELETE' }), )
copy: (id, projectId) => api(`/tasks/${id}/copy`, { method: 'POST', body: { projectId } }), const shape = await shapeTasks(rows, columns)
archive: (id) => api(`/tasks/${id}/archive`, { method: 'POST', body: {} }), const shaped = rows.map(shape)
unarchive: (id) => api(`/tasks/${id}/unarchive`, { method: 'POST', body: {} }), // 子任务挂载 (与服务端 TASK_INCLUDE.children 同构)
archivedList: (projectId, params) => api(`/projects/${projectId}/tasks/archived` + q(params)), for (const t of shaped) {
const childRows = await db().getAll(
'SELECT * FROM Task WHERE parentId = ? ORDER BY sortOrder, id',
[String(t.id)],
)
const childShape = await shapeTasks(childRows, columns)
t.children = childRows.map(childShape)
}
const visible = filterVisible(shaped, columns)
return { items: visible, columns, total: shaped.length }
},
create: async (projectId, body) => {
const uid = assertUser()
const title = assertTitle(body?.title)
const columns = await getColumns(projectId)
if (!columns.length) throw new Error('项目没有可用的看板列')
let parentId = null
if (body?.parentId) {
const parent = await db().getOptional('SELECT * FROM Task WHERE id = ?', [String(body.parentId)])
if (!parent) throw new Error('父任务不存在')
if (String(parent.projectId) !== String(projectId)) throw new Error('子任务必须与父任务同项目')
if (parent.parentId) throw new Error('仅支持一级子任务')
parentId = String(parent.id)
}
const memberIds = await db().getAll('SELECT userId FROM ProjectMember WHERE projectId = ?', [String(projectId)])
const memberSet = new Set(memberIds.map((r) => String(r.userId)))
let finalAssignee = null
if (body?.assigneeId === undefined) finalAssignee = memberSet.has(uid) ? uid : null
else if (body?.assigneeId !== null) {
const aid = String(body.assigneeId)
if (!memberSet.has(aid)) throw new Error('负责人必须是项目成员')
finalAssignee = aid
}
const firstCol = columns[0]
const id = uuid()
const ts = now()
await db().writeTransaction(async (tx) => {
await tx.execute(
`INSERT INTO Task (id, uuid, projectId, columnId, parentId, title, description, kind, markDate, status, doneAt, assigneeId, creatorId, extras, sortOrder, number, archived, archivedAt, archiveSource, createdAt, updatedAt)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, NULL, NULL, ?, ?)`,
[id, id, String(projectId), String(firstCol.id), parentId, title, String(body?.description || ''),
body?.kind ? String(body.kind).trim().slice(0, 20) : null, parseMarkDate(body?.markDate),
firstCol.boundStatus || 'todo', null, finalAssignee, uid, '[]', 0, null, ts, ts],
)
for (const mid of (Array.isArray(body?.memberIds) ? body.memberIds : []).map(String).filter((x) => memberSet.has(x))) {
await tx.execute('INSERT INTO TaskMember (id, uuid, taskId, userId) VALUES (?, ?, ?, ?)', [uuid(), uuid(), id, mid])
}
for (const name of (Array.isArray(body?.tags) ? body.tags : []).filter(Boolean).map((n) => String(n).slice(0, 20))) {
await tx.execute('INSERT INTO TaskTag (id, uuid, taskId, name) VALUES (?, ?, ?, ?)', [uuid(), uuid(), id, name])
}
})
const row = await db().get('SELECT * FROM Task WHERE id = ?', [id])
const shape = await shapeTasks([row], columns)
return { item: shape(row) }
},
detail: async (id) => {
const row = await db().getOptional('SELECT * FROM Task WHERE id = ?', [String(id)])
if (!row) throw new Error('任务不存在或无权限')
const columns = await getColumns(row.projectId)
const shape = await shapeTasks([row], columns)
return { item: shape(row) }
},
update: async (id, body) => {
const task = await db().getOptional('SELECT * FROM Task WHERE id = ?', [String(id)])
if (!task) throw new Error('任务不存在或无权限')
const columns = await getColumns(task.projectId)
const data = {}
if (body?.title !== undefined) data.title = assertTitle(body.title)
if (body?.description !== undefined) data.description = String(body.description)
if (body?.kind !== undefined) data.kind = body.kind ? String(body.kind).trim().slice(0, 20) : null
if (body?.markDate !== undefined) data.markDate = parseMarkDate(body.markDate)
if (body?.extras !== undefined) {
if (!Array.isArray(body.extras)) throw new Error('扩展信息格式非法')
data.extras = JSON.stringify(body.extras.map((e) => ({
label: String(e?.label ?? '').slice(0, 40),
value: String(e?.value ?? ''),
url: e?.url ? String(e.url) : '',
})))
}
if (body?.sortOrder !== undefined) data.sortOrder = Number(body.sortOrder) || 0
const memberRows = await db().getAll('SELECT userId FROM ProjectMember WHERE projectId = ?', [String(task.projectId)])
const memberSet = new Set(memberRows.map((r) => String(r.userId)))
if (body?.assigneeId !== undefined) {
if (body.assigneeId === null || body.assigneeId === '') data.assigneeId = null
else {
const aid = String(body.assigneeId)
if (!memberSet.has(aid)) throw new Error('负责人必须是项目成员')
data.assigneeId = aid
}
}
// 列 / 状态联动裁决 (与 server/task-domain/resolveStatus.js 同口径)
let status = task.status
let columnId = String(task.columnId)
const patch = {}
if (body?.columnId !== undefined) patch.columnId = String(body.columnId)
if (body?.status !== undefined) {
if (!['todo', 'doing', 'done'].includes(body.status)) throw new Error('任务状态取值非法')
patch.status = body.status
}
if (patch.columnId !== undefined && !columns.some((c) => String(c.id) === patch.columnId)) {
throw new Error('看板列不存在')
}
if (Object.keys(patch).length) {
status = patch.status !== undefined ? patch.status : task.status
columnId = patch.columnId !== undefined ? patch.columnId : String(task.columnId)
if (!task.parentId) {
const ordered = [...columns].sort((a, b) => (Number(a.sortOrder) - Number(b.sortOrder)) || String(a.id).localeCompare(String(b.id)))
const targetColumn = ordered.find((c) => String(c.id) === columnId)
if (patch.columnId !== undefined && targetColumn) {
if (targetColumn.boundStatus) status = targetColumn.boundStatus
}
if (patch.status !== undefined) {
if (!(targetColumn && targetColumn.boundStatus === status)) {
const hit = ordered.find((c) => c.boundStatus === status)
if (hit) columnId = String(hit.id)
}
}
}
data.status = status
data.columnId = columnId
}
if (data.status === 'done' && task.status !== 'done') data.doneAt = now()
else if (data.status !== undefined && data.status !== 'done') data.doneAt = null
// 拖拽降为子任务
if (body?.parentId !== undefined) {
if (body.parentId === null) {
data.parentId = null
} else {
const pid = String(body.parentId)
if (pid === String(task.id)) throw new Error('不能成为自己的子任务')
const parent = await db().getOptional('SELECT * FROM Task WHERE id = ?', [pid])
if (!parent) throw new Error('目标任务不存在')
if (String(parent.projectId) !== String(task.projectId)) throw new Error('子任务必须与父任务同项目')
if (parent.parentId) throw new Error('仅支持一级子任务')
const childCount = await db().getOptional('SELECT COUNT(*) AS n FROM Task WHERE parentId = ?', [String(task.id)])
if ((childCount?.n || 0) > 0) throw new Error('该任务已有子任务,不能成为子任务')
data.parentId = pid
}
}
await db().writeTransaction(async (tx) => {
const sets = Object.keys(data).map((k) => `"${k}" = ?`)
if (sets.length) {
await tx.execute(`UPDATE Task SET ${sets.join(', ')}, updatedAt = ? WHERE id = ?`, [...Object.values(data), now(), String(task.id)])
}
if (Array.isArray(body?.memberIds)) {
const ids = body.memberIds.map(String).filter((x) => memberSet.has(x))
await tx.execute('DELETE FROM TaskMember WHERE taskId = ?', [String(task.id)])
for (const mid of ids) {
await tx.execute('INSERT INTO TaskMember (id, uuid, taskId, userId) VALUES (?, ?, ?, ?)', [uuid(), uuid(), String(task.id), mid])
}
}
if (Array.isArray(body?.tags)) {
await tx.execute('DELETE FROM TaskTag WHERE taskId = ?', [String(task.id)])
const names = body.tags.map((n) => String(n).trim()).filter(Boolean).slice(0, 10)
for (const name of names) {
await tx.execute('INSERT INTO TaskTag (id, uuid, taskId, name) VALUES (?, ?, ?, ?)', [uuid(), uuid(), String(task.id), name.slice(0, 20)])
}
}
})
const row = await db().get('SELECT * FROM Task WHERE id = ?', [String(task.id)])
const shape = await shapeTasks([row], columns)
return { item: shape(row) }
},
reorder: async (projectId, ids) => {
const list = Array.isArray(ids) ? ids.map(String).filter(Boolean) : []
if (!list.length) throw new Error('ids 不能为空')
await db().writeTransaction(async (tx) => {
for (let i = 0; i < list.length; i++) {
await tx.execute('UPDATE Task SET sortOrder = ?, updatedAt = ? WHERE id = ?', [i, now(), list[i]])
}
})
return { ok: true }
},
remove: async (id) => {
const task = await db().getOptional('SELECT * FROM Task WHERE id = ?', [String(id)])
if (!task) throw new Error('任务不存在或无权限')
const childCount = await db().getOptional('SELECT COUNT(*) AS n FROM Task WHERE parentId = ?', [String(task.id)])
await db().writeTransaction(async (tx) => {
const ids = [String(task.id), ...((await tx.getAll('SELECT id FROM Task WHERE parentId = ?', [String(task.id)])).map((r) => String(r.id)))]
const ph = ids.map(() => '?').join(',')
await tx.execute(`DELETE FROM TaskMember WHERE taskId IN (${ph})`, ids)
await tx.execute(`DELETE FROM TaskTag WHERE taskId IN (${ph})`, ids)
await tx.execute(`DELETE FROM Task WHERE id IN (${ph})`, ids)
})
return { ok: true, deletedSubtasks: childCount?.n || 0 }
},
copy: async (id, projectId) => {
const uid = assertUser()
const source = await db().getOptional('SELECT * FROM Task WHERE id = ?', [String(id)])
if (!source) throw new Error('任务不存在或无权限')
const targetProject = await db().getOptional('SELECT * FROM Project WHERE id = ?', [String(projectId)])
if (!targetProject) throw new Error('目标项目不存在或你不是其成员')
const targetColumns = await getColumns(targetProject.id)
if (!targetColumns.length) throw new Error('目标项目没有可用的看板列')
const sourceColumns = await getColumns(source.projectId)
const targetMemberIds = new Set((await db().getAll('SELECT userId FROM ProjectMember WHERE projectId = ?', [String(targetProject.id)])).map((r) => String(r.userId)))
const pickColumn = (sourceColumnId) => {
const src = sourceColumns.find((c) => String(c.id) === String(sourceColumnId))
if (src) {
const same = targetColumns.find((c) => c.name === src.name)
if (same) return String(same.id)
}
return String(targetColumns[0]?.id)
}
const copyOne = async (tx, s, parentId) => {
const newId = uuid()
const ts = now()
await tx.execute(
`INSERT INTO Task (id, uuid, projectId, columnId, parentId, title, description, kind, markDate, status, doneAt, assigneeId, creatorId, extras, sortOrder, number, createdAt, updatedAt)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
[newId, newId, String(targetProject.id), pickColumn(s.columnId), parentId, s.title, s.description || '', s.kind || null,
s.markDate || null, s.status, s.status === 'done' ? (s.doneAt || ts) : null,
s.assigneeId && targetMemberIds.has(String(s.assigneeId)) ? String(s.assigneeId) : null,
uid, s.extras || '[]', Number(s.sortOrder) || 0, null, ts, ts],
)
const tagRows = await tx.getAll('SELECT name FROM TaskTag WHERE taskId = ?', [String(s.id)])
for (const t of tagRows) {
await tx.execute('INSERT INTO TaskTag (id, uuid, taskId, name) VALUES (?, ?, ?, ?)', [uuid(), uuid(), newId, t.name])
}
const keptMembers = (await tx.getAll('SELECT userId FROM TaskMember WHERE taskId = ?', [String(s.id)])).map((r) => String(r.userId)).filter((x) => targetMemberIds.has(x))
for (const m of keptMembers) {
await tx.execute('INSERT INTO TaskMember (id, uuid, taskId, userId) VALUES (?, ?, ?, ?)', [uuid(), uuid(), newId, m])
}
return newId
}
const newId = await db().writeTransaction(async (tx) => {
const pid = await copyOne(tx, source, null)
const children = await tx.getAll('SELECT * FROM Task WHERE parentId = ?', [String(source.id)])
for (const child of children) await copyOne(tx, child, pid)
return pid
})
const row = await db().get('SELECT * FROM Task WHERE id = ?', [newId])
const shape = await shapeTasks([row], targetColumns)
return { item: shape(row), dropped: { assignee: null, members: [] } }
},
// ---------- 归档 (T-ARC, 本地实现: 写本地库 -> 上行) ----------
/** 手动归档: 连带全部子任务, 幂等 (T-ARC-01) */
archive: async (id) => {
const task = await db().getOptional('SELECT * FROM Task WHERE id = ?', [String(id)])
if (!task) throw new Error('任务不存在或无权限')
const now = now()
await db().writeTransaction(async (tx) => {
const kids = await tx.getAll('SELECT id FROM Task WHERE parentId = ?', [String(task.id)])
const ids = [String(task.id), ...kids.map((k) => String(k.id))]
const ph = ids.map(() => '?').join(',')
await tx.execute(
`UPDATE Task SET archived = 1, archivedAt = ?, archiveSource = 'manual', updatedAt = ? WHERE id IN (${ph})`,
[now, now, ...ids],
)
})
return { ok: true, count: 1 }
},
/** 恢复归档: 回原列, 状态不变, 连带子任务 (T-ARC-03) */
unarchive: async (id) => {
const task = await db().getOptional('SELECT * FROM Task WHERE id = ?', [String(id)])
if (!task) throw new Error('任务不存在或无权限')
const now = now()
await db().writeTransaction(async (tx) => {
const kids = await tx.getAll('SELECT id FROM Task WHERE parentId = ?', [String(task.id)])
const ids = [String(task.id), ...kids.map((k) => String(k.id))]
const ph = ids.map(() => '?').join(',')
await tx.execute(
`UPDATE Task SET archived = 0, archivedAt = NULL, archiveSource = NULL, updatedAt = ? WHERE id IN (${ph})`,
[now, ...ids],
)
})
return { ok: true, count: 1 }
},
/**
* 已归档查询: 关键词 / 类型 / 列 / 归档日期区间 + 游标分页 (T-ARC-04)
* 参数: { keyword, kind, columnId, from, to, limit, cursor }
* cursor 形如 "<archivedAt ISO>|<id>", 按 (archivedAt desc, id desc) 取下一页
*/
archivedList: async (projectId, params = {}) => {
const columns = await getColumns(projectId)
const p = params || {}
const limit = Math.min(100, Math.max(1, Number(p.limit) || 20))
const where = ['projectId = ?', 'archived = 1', 'parentId IS NULL']
const args = [String(projectId)]
if (p.keyword) {
where.push('title LIKE ?')
args.push(`%${String(p.keyword).trim()}%`)
}
if (p.kind) {
where.push('kind = ?')
args.push(String(p.kind))
}
if (p.columnId) {
where.push('columnId = ?')
args.push(String(p.columnId))
}
if (p.from) {
where.push('archivedAt >= ?')
args.push(String(p.from) + 'T00:00:00+08:00'.replace('+08:00', 'Z'))
}
if (p.to) {
where.push('archivedAt <= ?')
args.push(String(p.to) + 'T23:59:59.999Z')
}
if (p.cursor) {
const [ts, cid] = String(p.cursor).split('|')
where.push('(archivedAt < ? OR (archivedAt = ? AND id < ?))')
args.push(ts, ts, String(cid))
}
const rows = await db().getAll(
`SELECT * FROM Task WHERE ${where.join(' AND ')} ORDER BY archivedAt DESC, id DESC LIMIT ${limit + 1}`,
args,
)
const hasMore = rows.length > limit
const page = rows.slice(0, limit)
const shape = await shapeTasks(page, columns)
const items = page.map(shape)
const last = page[page.length - 1]
const nextCursor = hasMore && last ? `${last.archivedAt}|${last.id}` : null
return { items, nextCursor }
},
} }
+13 -2
View File
@@ -1,5 +1,6 @@
import { createContext, useContext, useEffect, useState } from 'react' import { createContext, useContext, useEffect, useState } from 'react'
import { api, getToken, setToken, setRememberFlag } from '../api/client.js' import { api, getToken, setToken, setRememberFlag, setCurrentUserId, clearApiCache } from '../api/client.js'
import { disconnectAndClearPowersync } from '../lib/powersync/db.js'
const AuthContext = createContext(null) const AuthContext = createContext(null)
@@ -17,10 +18,14 @@ export function AuthProvider({ children }) {
} }
try { try {
const data = await api('/auth/me') const data = await api('/auth/me')
if (!cancelled) setUser(data.user) if (!cancelled) {
setUser(data.user)
setCurrentUserId(data.user?.id)
}
} catch { } catch {
if (!cancelled) { if (!cancelled) {
setToken('') setToken('')
setCurrentUserId('')
setUser(null) setUser(null)
} }
} finally { } finally {
@@ -36,6 +41,7 @@ export function AuthProvider({ children }) {
setToken(data.token) setToken(data.token)
setRememberFlag(!!remember) setRememberFlag(!!remember)
setUser(data.user) setUser(data.user)
setCurrentUserId(data.user?.id)
return data.user return data.user
} }
@@ -44,6 +50,11 @@ export function AuthProvider({ children }) {
setToken('') setToken('')
setRememberFlag(false) setRememberFlag(false)
setUser(null) setUser(null)
setCurrentUserId('')
try { clearApiCache() } catch { /* ignore */ }
try { localStorage.removeItem('iboard_ps_cred') } catch { /* ignore */ }
// 断开同步并清空本地 SQLite (0.2.1 离线编辑)
try { await disconnectAndClearPowersync() } catch { /* ignore */ }
} }
return ( return (
+4 -1
View File
@@ -9,7 +9,7 @@ import { kindColor } from '../../pages/task/kind.js'
const MAX_SUB = 3 const MAX_SUB = 3
export default function TaskCard({ export default function TaskCard({
task, bindDrag, onClick, onToggleSub, onToggle, onMore, dragging = false, highlight = false, task, codePrefix, bindDrag, onClick, onToggleSub, onToggle, onMore, dragging = false, highlight = false,
}) { }) {
const children = task.children || [] const children = task.children || []
const shown = children.slice(0, MAX_SUB) const shown = children.slice(0, MAX_SUB)
@@ -47,6 +47,9 @@ export default function TaskCard({
</div> </div>
<div className="bmeta"> <div className="bmeta">
{codePrefix && task.number != null && (
<span className="num-tag">{codePrefix}-{task.number}</span>
)}
{task.markDate && ( {task.markDate && (
<span className="date-tag">{task.markDate.slice(5, 10).replace('-', '/')}</span> <span className="date-tag">{task.markDate.slice(5, 10).replace('-', '/')}</span>
)} )}
+4 -1
View File
@@ -10,7 +10,7 @@ const statusLabel = (s) => (s === 'done' ? '完成' : s === 'doing' ? '执行中
// 复选框 / ⋯ 是独立控件: pointerdown 不冒泡, 不发起拖动, // 复选框 / ⋯ 是独立控件: pointerdown 不冒泡, 不发起拖动,
// 避免长按行后抬手时合成的 click 落在控件上误触状态切换 // 避免长按行后抬手时合成的 click 落在控件上误触状态切换
export default function TaskRow({ export default function TaskRow({
task, onToggle, onClick, onMore, bindDrag, bindDragHandle, dragging = false, dragOver, indent = false, children, task, codePrefix, onToggle, onClick, onMore, bindDrag, bindDragHandle, dragging = false, dragOver, indent = false, children,
}) { }) {
const done = task.status === 'done' const done = task.status === 'done'
return ( return (
@@ -52,6 +52,9 @@ export default function TaskRow({
<div className="task-title">{task.title}</div> <div className="task-title">{task.title}</div>
{/* 无类型/成员也保留该行, 与有标签的行等高 */} {/* 无类型/成员也保留该行, 与有标签的行等高 */}
<div className="task-meta"> <div className="task-meta">
{codePrefix && task.number != null && (
<span className="num-tag">{codePrefix}-{task.number}</span>
)}
{task.markDate && ( {task.markDate && (
<span className="date-tag">{task.markDate.slice(5, 10).replace('-', '/')}</span> <span className="date-tag">{task.markDate.slice(5, 10).replace('-', '/')}</span>
)} )}
+12
View File
@@ -1,11 +1,13 @@
import { useEffect, useState } from 'react' import { useEffect, useState } from 'react'
import { Outlet, useLocation } from 'react-router-dom' import { Outlet, useLocation } from 'react-router-dom'
import BottomNav from '../components/BottomNav.jsx' import BottomNav from '../components/BottomNav.jsx'
import { isOffline, subscribeOffline } from '../api/client.js'
// 移动端应用外壳 // 移动端应用外壳
// - 顶部安全区: 用 --safe-top 撑开 (由 main.jsx 的 calibrateSafeTop 实测校准) // - 顶部安全区: 用 --safe-top 撑开 (由 main.jsx 的 calibrateSafeTop 实测校准)
// - 中间 <main>: flex:1 可滚动主区 // - 中间 <main>: flex:1 可滚动主区
// - 底部 TabBar: antd-mobile TabBar 自带底部安全区 // - 底部 TabBar: antd-mobile TabBar 自带底部安全区
// - 左上角离线标识 (0.2.1): 离线或服务不可达时显示, 请求恢复后自动隐藏
// //
// 注意: 这里不再用 antd-mobile 的 <SafeArea position="top" />. // 注意: 这里不再用 antd-mobile 的 <SafeArea position="top" />.
// 它只是一个空 div, 高度完全依赖 env(safe-area-inset-top); 而 Android WebView // 它只是一个空 div, 高度完全依赖 env(safe-area-inset-top); 而 Android WebView
@@ -22,9 +24,19 @@ export default function MobileShell() {
return () => clearTimeout(t) return () => clearTimeout(t)
}, [location.pathname]) }, [location.pathname])
// 离线状态 (窗口左上角标识)
const [offline, setOfflineState] = useState(isOffline())
useEffect(() => subscribeOffline(setOfflineState), [])
return ( return (
<div className="app-root"> <div className="app-root">
<div className="app-safe-top" aria-hidden="true" /> <div className="app-safe-top" aria-hidden="true" />
{offline && (
<div className="offline-badge" title="当前离线:显示本地缓存数据">
<span className="offline-dot" />
<span className="offline-text">离线</span>
</div>
)}
<main className="app-main"> <main className="app-main">
<div className={'page-transition' + (animating ? ' active' : '')}> <div className={'page-transition' + (animating ? ' active' : '')}>
<Outlet /> <Outlet />
+74
View File
@@ -0,0 +1,74 @@
// PowerSync 后端连接器: 凭证获取 + 上传队列落地 (0.2.1)
// 契约见 server/routes/powersync.js: POST /api/powersync/upload { ops: [{ id, table, op, uuid, data }] }
// Web SDK 无需基类, 实现 fetchCredentials / uploadData 两个方法即可
import { api, getToken } from '../../api/client.js'
// 上次成功的同步凭证: 离线时复用, 避免 SDK 因"凭证不可用"清空本地库
const CRED_KEY = 'iboard_ps_cred'
export class IBoardConnector {
async fetchCredentials() {
// 未登录: 返回 null 让 SDK 保持断开 (登录后由页面触发 connect)
if (!getToken()) return null
try {
const { token, endpoint } = await api('/powersync/token', { method: 'POST' })
// VITE_POWERSYNC_URL: 打包端 (Tauri 外壳等) 可覆盖服务端下发的同步地址
const ep = import.meta.env.VITE_POWERSYNC_URL || endpoint || ''
if (ep && token) {
try { localStorage.setItem(CRED_KEY, JSON.stringify({ endpoint: ep, token, ts: Date.now() })) } catch { /* ignore */ }
}
return { endpoint: ep, token }
} catch {
// 离线 / 服务不可达: 复用上次凭证 (本地库数据继续可读, 联网后自动恢复同步)
try {
const cached = JSON.parse(localStorage.getItem(CRED_KEY) || 'null')
if (cached?.endpoint && cached?.token) return { endpoint: cached.endpoint, token: cached.token }
} catch { /* ignore */ }
return null
}
}
async invalidateCredentials() {
// 交给 SDK: 下次 fetchCredentials 会重新尝试取新凭证 (离线时回退缓存)
}
async uploadData(database) {
const batch = await database.getCrudBatch()
if (!batch) return
// 本地行的 id 即为 uuid (客户端创建时生成), 服务端按 uuid 幂等 upsert。
// PATCH 的 opData 只含变更列, 这里统一回读全行按 PUT 上行, 保证服务端整行 upsert 语义。
const ops = []
for (let i = 0; i < batch.crud.length; i++) {
const op = batch.crud[i]
let data = op.opData || {}
if (op.op !== 'DELETE') {
try {
const row = await database.get(`SELECT * FROM "${op.table}" WHERE id = ?`, [op.id])
if (row) data = row
} catch { /* 回读失败则用 opData 兜底 */ }
}
ops.push({
id: String(i),
table: op.table,
op: op.op === 'DELETE' ? 'DELETE' : 'PUT',
uuid: op.id,
data,
})
}
let res
try {
res = await api('/powersync/upload', { method: 'POST', body: { ops } })
} catch (e) {
// 网络失败/401: 抛出让 SDK 稍后重试本批
throw e
}
const failed = (res?.results || []).filter((r) => !r.ok)
if (failed.length) {
// 单条业务错误: 记录并放行 (重试也无法成功, 避免队列卡死); 服务端已尽力落地其余 op
console.error('[powersync] upload 部分失败:', failed)
}
await batch.complete()
}
}
+37
View File
@@ -0,0 +1,37 @@
// PowerSync 本地库单例 (0.2.1 离线编辑)
// 页面用法: usePowerSyncQuery 等见 src/lib/powersync/react.jsx; 写入用 db.execute/writeTransaction
import { PowerSyncDatabase } from '@powersync/web'
import { AppSchema } from './schema.js'
import { IBoardConnector } from './connector.js'
let dbInstance = null
export function getPowersyncDb() {
if (!dbInstance) {
dbInstance = new PowerSyncDatabase({
schema: AppSchema,
database: {
// 默认 IDBBatchAtomicVFS (IndexedDB), 兼容性最广; WebView2 (Chromium) 后续可切 OPFS 加速
dbFilename: 'iboard-powersync.db',
},
})
}
return dbInstance
}
/** 登录后调用: 建立同步连接 (幂等) */
export async function connectPowersync() {
const db = getPowersyncDb()
db.connect(new IBoardConnector())
return db
}
/** 退出登录时调用: 断开同步并清空本地库 */
export async function disconnectAndClearPowersync() {
if (!dbInstance) return
try {
await dbInstance.disconnectAndClear()
} catch {
/* ignore */
}
}
+26
View File
@@ -0,0 +1,26 @@
// PowerSync React 接入 (0.2.1 离线编辑)
// 用法: 在 App 外层包 <PowerSyncProvider>; 任务模块内用 re-export 的 useQuery/useStatus/usePowerSync
import React, { useEffect, useMemo } from 'react'
import { PowerSyncContext } from '@powersync/react'
import { getPowersyncDb, connectPowersync, disconnectAndClearPowersync } from './db.js'
import { useAuth } from '../../auth/AuthContext.jsx'
/**
* 登录后建立同步连接; 登出后断开并清空本地库 (避免下一用户读到残留数据)
*/
export function PowerSyncProvider({ children }) {
const { user } = useAuth()
const db = useMemo(() => getPowersyncDb(), [])
useEffect(() => {
if (user) {
connectPowersync().catch((e) => console.error('[powersync] connect 失败:', e))
} else {
disconnectAndClearPowersync()
}
}, [user])
return <PowerSyncContext.Provider value={db}>{children}</PowerSyncContext.Provider>
}
export { useQuery, useStatus, useSuspenseQuery, usePowerSync } from '@powersync/react'
+98
View File
@@ -0,0 +1,98 @@
// PowerSync 客户端 schema (0.2.1 离线编辑)
// 表名/列名与 deploy/0.2.1/powersync/sync-config.yaml 的输出严格一致 (PascalCase + text 型 id 由 SDK 自建)
// 见 docs/V0.2/离线编辑模块/0.2.1实施方案.md
import { column, Schema, Table } from '@powersync/web'
// 时间/JSON 列在同步流里以文本落地, 本地按字符串读写 (JSON 列为 JSON 字符串)
const project = new Table(
{
uuid: column.text,
code: column.text,
name: column.text,
ownerId: column.text,
isPersonal: column.integer,
archived: column.integer,
notes: column.text,
taskKinds: column.text,
icon: column.text,
autoArchive: column.text,
createdAt: column.text,
updatedAt: column.text,
},
{ indexes: { code: ['code'] } },
)
const projectMember = new Table({
uuid: column.text,
projectId: column.text,
userId: column.text,
permission: column.text,
createdAt: column.text,
})
const boardColumn = new Table(
{
uuid: column.text,
projectId: column.text,
name: column.text,
sortOrder: column.integer,
boundStatus: column.text,
retention: column.text,
createdAt: column.text,
updatedAt: column.text,
},
{ indexes: { project: ['projectId'] } },
)
const task = new Table(
{
uuid: column.text,
projectId: column.text,
columnId: column.text,
parentId: column.text,
title: column.text,
description: column.text,
kind: column.text,
markDate: column.text,
status: column.text,
doneAt: column.text,
assigneeId: column.text,
creatorId: column.text,
extras: column.text,
sortOrder: column.integer,
number: column.integer,
archived: column.integer,
archivedAt: column.text,
archiveSource: column.text,
createdAt: column.text,
updatedAt: column.text,
},
{ indexes: { project: ['projectId'], column: ['columnId'], number: ['projectId', 'number'] } },
)
const taskMember = new Table({
uuid: column.text,
taskId: column.text,
userId: column.text,
})
const taskTag = new Table({
uuid: column.text,
taskId: column.text,
name: column.text,
})
const user = new Table({
name: column.text,
email: column.text,
})
export const AppSchema = new Schema({
Project: project,
ProjectMember: projectMember,
BoardColumn: boardColumn,
Task: task,
TaskMember: taskMember,
TaskTag: taskTag,
User: user,
})
+2 -1
View File
@@ -36,7 +36,7 @@ function ScrollBody({ children }) {
// 横向滚列; 列内独立纵向滚动, 列头固定, 滚动时右缘显示滚动条 // 横向滚列; 列内独立纵向滚动, 列头固定, 滚动时右缘显示滚动条
// 不做"拖到卡片上转子任务" —— 统一走详情页「转为子任务」 // 不做"拖到卡片上转子任务" —— 统一走详情页「转为子任务」
export default function BoardView({ export default function BoardView({
tasks, columns, onMoveColumn, onOpen, onToggleSub, onToggle, onMore, onQuickAdd, tasks, columns, codePrefix, onMoveColumn, onOpen, onToggleSub, onToggle, onMore, onQuickAdd,
}) { }) {
const drag = useColumnDrag({ onDrop: onMoveColumn }) const drag = useColumnDrag({ onDrop: onMoveColumn })
@@ -69,6 +69,7 @@ export default function BoardView({
<TaskCard <TaskCard
key={t.id} key={t.id}
task={t} task={t}
codePrefix={codePrefix}
dragging={drag.dragTask?.id === t.id} dragging={drag.dragTask?.id === t.id}
bindDrag={drag.bind} bindDrag={drag.bind}
onClick={() => { if (!drag.dragTask && !drag.justEnded()) onOpen?.(t) }} onClick={() => { if (!drag.dragTask && !drag.justEnded()) onOpen?.(t) }}
+2 -1
View File
@@ -7,7 +7,7 @@ import useRowDrag from '../../components/task/useRowDrag.js'
// 换列: 行/把手拖动, 跟手浮层, 手指划到哪个分组松手就落到哪 (与看板一致) // 换列: 行/把手拖动, 跟手浮层, 手指划到哪个分组松手就落到哪 (与看板一致)
// (列表只展示有任务的列, 空列需到看板视图拖入) // (列表只展示有任务的列, 空列需到看板视图拖入)
export default function ListView({ export default function ListView({
tasks, columns, onToggle, onOpen, onMore, onMoveColumn, onReorder, tasks, columns, codePrefix, onToggle, onOpen, onMore, onMoveColumn, onReorder,
}) { }) {
const [collapsed, setCollapsed] = useState({}) const [collapsed, setCollapsed] = useState({})
const drag = useRowDrag({ columns, onDrop: onMoveColumn, onReorder }) const drag = useRowDrag({ columns, onDrop: onMoveColumn, onReorder })
@@ -49,6 +49,7 @@ export default function ListView({
<div key={t.id}> <div key={t.id}>
<TaskRow <TaskRow
task={t} task={t}
codePrefix={codePrefix}
onToggle={onToggle} onToggle={onToggle}
onClick={() => { if (!drag.justEnded()) onOpen(t) }} onClick={() => { if (!drag.justEnded()) onOpen(t) }}
onMore={onMore} onMore={onMore}
+2
View File
@@ -276,6 +276,7 @@ export default function ProjectView({ projectId, onProjectChanged, onProjectExit
<ListView <ListView
tasks={visibleTasks} tasks={visibleTasks}
columns={columns} columns={columns}
codePrefix={project?.code}
onToggle={toggleDone} onToggle={toggleDone}
onOpen={(t) => setOpenTask(t)} onOpen={(t) => setOpenTask(t)}
onMore={openTaskMenu} onMore={openTaskMenu}
@@ -286,6 +287,7 @@ export default function ProjectView({ projectId, onProjectChanged, onProjectExit
<BoardView <BoardView
tasks={visibleTasks} tasks={visibleTasks}
columns={columns} columns={columns}
codePrefix={project?.code}
onMoveColumn={moveToColumn} onMoveColumn={moveToColumn}
onOpen={(t) => setOpenTask(t)} onOpen={(t) => setOpenTask(t)}
onToggleSub={(c) => toggleDone(c)} onToggleSub={(c) => toggleDone(c)}
+36
View File
@@ -70,6 +70,35 @@ input, textarea, select { font: inherit; }
background: var(--color-bg); background: var(--color-bg);
} }
/* 离线标识 (0.2.1): 窗口左上角, 仅在离线/服务不可达时出现 */
.offline-badge {
position: fixed;
top: calc(var(--safe-top) + 4px);
left: 6px;
z-index: 120;
display: inline-flex;
align-items: center;
gap: 4px;
padding: 2px 6px;
border-radius: 999px;
background: rgba(255, 77, 79, 0.12);
border: 1px solid rgba(255, 77, 79, 0.35);
color: #cf1322;
font-size: 10px;
line-height: 1;
font-weight: 600;
pointer-events: none;
user-select: none;
}
.offline-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: #ff4d4f;
box-shadow: 0 0 0 2px rgba(255, 77, 79, 0.18);
}
.offline-text { letter-spacing: 1px; }
.app-main { .app-main {
flex: 1 1 auto; flex: 1 1 auto;
min-height: 0; min-height: 0;
@@ -718,6 +747,13 @@ body.me-safe-top .app-safe-top { height: 0; }
font-size: 10px; line-height: 1; font-weight: 600; color: #fff; font-size: 10px; line-height: 1; font-weight: 600; color: #fff;
border-radius: 4px; padding: 3px 5px; flex-shrink: 0; white-space: nowrap; border-radius: 4px; padding: 3px 5px; flex-shrink: 0; white-space: nowrap;
} }
/* 任务编号 (0.2.1): `项目编号-序号`, 服务端分配 */
.num-tag {
display: inline-flex; align-items: center;
font-size: 10px; line-height: 1; font-weight: 600;
color: #5b6b7c; background: #eef2f6; border-radius: 4px; padding: 3px 5px;
flex-shrink: 0; white-space: nowrap; font-variant-numeric: tabular-nums;
}
/* 项目管理: 任务类型编辑 chips */ /* 项目管理: 任务类型编辑 chips */
.kind-chip-row { display: flex; flex-wrap: wrap; gap: 8px; } .kind-chip-row { display: flex; flex-wrap: wrap; gap: 8px; }
.kind-chip { .kind-chip {
+4
View File
@@ -17,6 +17,10 @@ const BUILD_ID = makeBuildId()
// 注意: 不能设 hmr: false —— 那会连 WS 通道一起关掉, 文件变更不再触发任何刷新。 // 注意: 不能设 hmr: false —— 那会连 WS 通道一起关掉, 文件变更不再触发任何刷新。
export default defineConfig({ export default defineConfig({
plugins: [react()], plugins: [react()],
// PowerSync 的数据库/同步跑在 module worker 里, iife worker 不支持代码分包 (0.2.1)
worker: {
format: 'es',
},
define: { define: {
__BUILD_ID__: JSON.stringify(BUILD_ID), // 构建时生成的唯一 build 号 __BUILD_ID__: JSON.stringify(BUILD_ID), // 构建时生成的唯一 build 号
}, },