add schema for box and item

add mobile version for datatable
This commit is contained in:
2026-02-25 22:57:03 +07:00
parent 1e6f4683ea
commit 4f2f5b5694
26 changed files with 5092 additions and 168 deletions

View File

@@ -79,9 +79,9 @@
"nav_logs": "Logs",
"nav_users": "Users",
"nav_houses": "Houses",
"nav_box": "Box",
"nav_account": "Account",
"nav_profile": "Profile",
"nav_boxes": "Hộp chứa",
"login_page_form_email": "Email",
"login_page_form_password": "Password",
"login_page_ui_welcome_back": "Welcome back",
@@ -222,6 +222,8 @@
}
],
"notification_page_message_invitation_success": "You have been invited to join house!",
"notification_page_message_invitation_rejected": "You have been rejected to join house!",
"boxes_pages_ui_title": "Boxes",
"backend_message": [
{
"match": {

View File

@@ -82,9 +82,9 @@
"nav_logs": "Lịch sử",
"nav_users": "Người dùng",
"nav_houses": "Nhà",
"nav_box": "Hộp chứa",
"nav_account": "Tài khoản",
"nav_profile": "Hồ sơ",
"nav_boxes": "Hộp chứa",
"login_page_form_email": "Email",
"login_page_form_password": "Mật khẩu",
"login_page_ui_welcome_back": "Chào mừng trở lại",
@@ -227,6 +227,7 @@
],
"notification_page_message_invitation_success": "Bạn đã đồng ý tham gia nhà!",
"notification_page_message_invitation_rejected": "Bạn đã từ chối tham gia nhà!",
"boxes_pages_ui_title": "Hộp chứa",
"backend_message": [
{
"match": {

View File

@@ -23,7 +23,7 @@
"@fontsource-variable/inter": "^5.2.8",
"@phosphor-icons/react": "^2.1.10",
"@prisma/adapter-pg": "^7.1.0",
"@prisma/client": "^7.1.0",
"@prisma/client": "^7.4.1",
"@tailwindcss/vite": "^4.0.6",
"@tanstack/react-devtools": "^0.9.4",
"@tanstack/react-form": "^1.27.7",
@@ -40,7 +40,7 @@
"clsx": "^2.1.1",
"html-react-parser": "^5.2.16",
"next-themes": "^0.4.6",
"prisma": "^7.1.0",
"pnpm": "^10.30.2",
"radix-ui": "^1.4.3",
"react": "^19.2.4",
"react-dom": "^19.2.4",
@@ -66,6 +66,7 @@
"dotenv-cli": "^11.0.0",
"jsdom": "^28.0.0",
"prettier": "^3.8.1",
"prisma": "^7.4.1",
"tsx": "^4.20.6",
"typescript": "^5.7.2",
"vite": "^7.1.7",

105
pnpm-lock.yaml generated
View File

@@ -21,8 +21,8 @@ importers:
specifier: ^7.1.0
version: 7.3.0
'@prisma/client':
specifier: ^7.1.0
version: 7.3.0(prisma@7.3.0(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3)
specifier: ^7.4.1
version: 7.4.1(prisma@7.4.1(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3)
'@tailwindcss/vite':
specifier: ^4.0.6
version: 4.1.18(vite@7.3.1(@types/node@25.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0))
@@ -58,7 +58,7 @@ importers:
version: 1.158.0(@tanstack/react-router@1.158.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(vite@7.3.1(@types/node@25.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0))
better-auth:
specifier: ^1.4.10
version: 1.4.18(@prisma/client@7.3.0(prisma@7.3.0(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@tanstack/react-start@1.158.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite@7.3.1(@types/node@25.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(mysql2@3.15.3)(pg@8.18.0)(prisma@7.3.0(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(solid-js@1.9.11)(vitest@4.0.18(@types/node@25.2.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.2.0)(typescript@5.9.3))(tsx@4.21.0))
version: 1.4.18(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@tanstack/react-start@1.158.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite@7.3.1(@types/node@25.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(mysql2@3.15.3)(pg@8.18.0)(prisma@7.4.1(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(solid-js@1.9.11)(vitest@4.0.18(@types/node@25.2.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.2.0)(typescript@5.9.3))(tsx@4.21.0))
class-variance-authority:
specifier: ^0.7.1
version: 0.7.1
@@ -71,9 +71,9 @@ importers:
next-themes:
specifier: ^0.4.6
version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
prisma:
specifier: ^7.1.0
version: 7.3.0(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
pnpm:
specifier: ^10.30.2
version: 10.30.2
radix-ui:
specifier: ^1.4.3
version: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
@@ -144,6 +144,9 @@ importers:
prettier:
specifier: ^3.8.1
version: 3.8.1
prisma:
specifier: ^7.4.1
version: 7.4.1(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
tsx:
specifier: ^4.20.6
version: 4.21.0
@@ -853,11 +856,11 @@ packages:
'@prisma/adapter-pg@7.3.0':
resolution: {integrity: sha512-iuYQMbIPO6i9O45Fv8TB7vWu00BXhCaNAShenqF7gLExGDbnGp5BfFB4yz1K59zQ59jF6tQ9YHrg0P6/J3OoLg==}
'@prisma/client-runtime-utils@7.3.0':
resolution: {integrity: sha512-dG/ceD9c+tnXATPk8G+USxxYM9E6UdMTnQeQ+1SZUDxTz7SgQcfxEqafqIQHcjdlcNK/pvmmLfSwAs3s2gYwUw==}
'@prisma/client-runtime-utils@7.4.1':
resolution: {integrity: sha512-8fy74OMYC7mt9cJ2MncIDk1awPRgmtXVvwTN2FlW4JVhbck8Dgt0wTkhPG85myfj4ZeP2stjF9Sdg12n5HrpQg==}
'@prisma/client@7.3.0':
resolution: {integrity: sha512-FXBIxirqQfdC6b6HnNgxGmU7ydCPEPk7maHMOduJJfnTP+MuOGa15X4omjR/zpPUUpm8ef/mEFQjJudOGkXFcQ==}
'@prisma/client@7.4.1':
resolution: {integrity: sha512-pgIll2W1NVdof37xLeyySW+yfQ4rI+ERGCRwnO3BjVOx42GpYq6jhTyuALK8VKirvJJIvImgfGDA2qwhYVvMuA==}
engines: {node: ^20.19 || ^22.12 || >=24.0}
peerDependencies:
prisma: '*'
@@ -868,8 +871,8 @@ packages:
typescript:
optional: true
'@prisma/config@7.3.0':
resolution: {integrity: sha512-QyMV67+eXF7uMtKxTEeQqNu/Be7iH+3iDZOQZW5ttfbSwBamCSdwPszA0dum+Wx27I7anYTPLmRmMORKViSW1A==}
'@prisma/config@7.4.1':
resolution: {integrity: sha512-vteSXm8N46bo3FW9MhPGVHAj+KRgrR6TWtlSk6GqToCKjTnOexXdPZyiDyEsfVW38YhqEmVl6w/6iHN8uYVJcw==}
'@prisma/debug@7.2.0':
resolution: {integrity: sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw==}
@@ -877,26 +880,29 @@ packages:
'@prisma/debug@7.3.0':
resolution: {integrity: sha512-yh/tHhraCzYkffsI1/3a7SHX8tpgbJu1NPnuxS4rEpJdWAUDHUH25F1EDo6PPzirpyLNkgPPZdhojQK804BGtg==}
'@prisma/debug@7.4.1':
resolution: {integrity: sha512-qEtzO8oLouRv18JDQUC3G3Gnv+fGVscHZm/x1DBB/WT+kOvPDQLM2woX6IGgWnSMYYlrxjuALshT7G/blvY0bQ==}
'@prisma/dev@0.20.0':
resolution: {integrity: sha512-ovlBYwWor0OzG+yH4J3Ot+AneD818BttLA+Ii7wjbcLHUrnC4tbUPVGyNd3c/+71KETPKZfjhkTSpdS15dmXNQ==}
'@prisma/driver-adapter-utils@7.3.0':
resolution: {integrity: sha512-Wdlezh1ck0Rq2dDINkfSkwbR53q53//Eo1vVqVLwtiZ0I6fuWDGNPxwq+SNAIHnsU+FD/m3aIJKevH3vF13U3w==}
'@prisma/engines-version@7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735':
resolution: {integrity: sha512-IH2va2ouUHihyiTTRW889LjKAl1CusZOvFfZxCDNpjSENt7g2ndFsK0vdIw/72v7+jCN6YgkHmdAP/BI7SDgyg==}
'@prisma/engines-version@7.5.0-4.55ae170b1ced7fc6ed07a15f110549408c501bb3':
resolution: {integrity: sha512-fUxVd1TjOW8K4XsZ8dAm88sDW5Ry7AxWDfsYEWwScS6Fjo3caKC6hgNumUfsmsy0Il9LjDn5X0PpVXNt3iwayw==}
'@prisma/engines@7.3.0':
resolution: {integrity: sha512-cWRQoPDXPtR6stOWuWFZf9pHdQ/o8/QNWn0m0zByxf5Kd946Q875XdEJ52pEsX88vOiXUmjuPG3euw82mwQNMg==}
'@prisma/engines@7.4.1':
resolution: {integrity: sha512-BZEBdHvNJx5PzIG37EI/Zi5UUI5hGWjkYsQmKa7OIK6evAvebOTwutjS/VRI6cA6grmA52eLZR+oekGRMqkKxQ==}
'@prisma/fetch-engine@7.3.0':
resolution: {integrity: sha512-Mm0F84JMqM9Vxk70pzfNpGJ1lE4hYjOeLMu7nOOD1i83nvp8MSAcFYBnHqLvEZiA6onUR+m8iYogtOY4oPO5lQ==}
'@prisma/fetch-engine@7.4.1':
resolution: {integrity: sha512-Z9kbuxX2bvEsyeS3LZEiEnxG0lVtZbpYgaAnPj69N+A9f2De8Lta0EoFtld9zhfERVPIQWhSWUc8himky3qYdA==}
'@prisma/get-platform@7.2.0':
resolution: {integrity: sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA==}
'@prisma/get-platform@7.3.0':
resolution: {integrity: sha512-N7c6m4/I0Q6JYmWKP2RCD/sM9eWiyCPY98g5c0uEktObNSZnugW2U/PO+pwL0UaqzxqTXt7gTsYsb0FnMnJNbg==}
'@prisma/get-platform@7.4.1':
resolution: {integrity: sha512-kN4tmkQzlgm/KtE+jTNSYjsDxxe/5i6GApPI32BN9T0tlgsgSBtDJbjGBICttkAIjsh73dXf8raPKxO/2n2UUg==}
'@prisma/query-plan-executor@7.2.0':
resolution: {integrity: sha512-EOZmNzcV8uJ0mae3DhTsiHgoNCuu1J9mULQpGCh62zN3PxPTd+qI9tJvk5jOst8WHKQNwJWR3b39t0XvfBB0WQ==}
@@ -3985,6 +3991,11 @@ packages:
pkg-types@2.3.0:
resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
pnpm@10.30.2:
resolution: {integrity: sha512-Ns3HB+e3lAqYjJwez4jQhPhRS1w/CF9TouJEwpIdOyVFvCDdTr4fwkX+7EY7spiuzqemPtH3aAuHfcY3nY0MtA==}
engines: {node: '>=18.12'}
hasBin: true
postcss-selector-parser@7.1.1:
resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==}
engines: {node: '>=4'}
@@ -4038,8 +4049,8 @@ packages:
resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==}
engines: {node: '>=18'}
prisma@7.3.0:
resolution: {integrity: sha512-ApYSOLHfMN8WftJA+vL6XwAPOh/aZ0BgUyyKPwUFgjARmG6EBI9LzDPf6SWULQMSAxydV9qn5gLj037nPNlg2w==}
prisma@7.4.1:
resolution: {integrity: sha512-gDKOXwnPiMdB+uYMhMeN8jj4K7Cu3Q2wB/wUsITOoOk446HtVb8T9BZxFJ1Zop6alc89k6PMNdR2FZCpbXp/jw==}
engines: {node: ^20.19 || ^22.12 || >=24.0}
hasBin: true
peerDependencies:
@@ -5606,16 +5617,16 @@ snapshots:
transitivePeerDependencies:
- pg-native
'@prisma/client-runtime-utils@7.3.0': {}
'@prisma/client-runtime-utils@7.4.1': {}
'@prisma/client@7.3.0(prisma@7.3.0(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3)':
'@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3)':
dependencies:
'@prisma/client-runtime-utils': 7.3.0
'@prisma/client-runtime-utils': 7.4.1
optionalDependencies:
prisma: 7.3.0(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
prisma: 7.4.1(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
typescript: 5.9.3
'@prisma/config@7.3.0':
'@prisma/config@7.4.1':
dependencies:
c12: 3.1.0
deepmerge-ts: 7.1.5
@@ -5628,6 +5639,8 @@ snapshots:
'@prisma/debug@7.3.0': {}
'@prisma/debug@7.4.1': {}
'@prisma/dev@0.20.0(typescript@5.9.3)':
dependencies:
'@electric-sql/pglite': 0.3.15
@@ -5654,28 +5667,28 @@ snapshots:
dependencies:
'@prisma/debug': 7.3.0
'@prisma/engines-version@7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735': {}
'@prisma/engines-version@7.5.0-4.55ae170b1ced7fc6ed07a15f110549408c501bb3': {}
'@prisma/engines@7.3.0':
'@prisma/engines@7.4.1':
dependencies:
'@prisma/debug': 7.3.0
'@prisma/engines-version': 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735
'@prisma/fetch-engine': 7.3.0
'@prisma/get-platform': 7.3.0
'@prisma/debug': 7.4.1
'@prisma/engines-version': 7.5.0-4.55ae170b1ced7fc6ed07a15f110549408c501bb3
'@prisma/fetch-engine': 7.4.1
'@prisma/get-platform': 7.4.1
'@prisma/fetch-engine@7.3.0':
'@prisma/fetch-engine@7.4.1':
dependencies:
'@prisma/debug': 7.3.0
'@prisma/engines-version': 7.3.0-16.9d6ad21cbbceab97458517b147a6a09ff43aa735
'@prisma/get-platform': 7.3.0
'@prisma/debug': 7.4.1
'@prisma/engines-version': 7.5.0-4.55ae170b1ced7fc6ed07a15f110549408c501bb3
'@prisma/get-platform': 7.4.1
'@prisma/get-platform@7.2.0':
dependencies:
'@prisma/debug': 7.2.0
'@prisma/get-platform@7.3.0':
'@prisma/get-platform@7.4.1':
dependencies:
'@prisma/debug': 7.3.0
'@prisma/debug': 7.4.1
'@prisma/query-plan-executor@7.2.0': {}
@@ -7342,7 +7355,7 @@ snapshots:
baseline-browser-mapping@2.9.19: {}
better-auth@1.4.18(@prisma/client@7.3.0(prisma@7.3.0(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@tanstack/react-start@1.158.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite@7.3.1(@types/node@25.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(mysql2@3.15.3)(pg@8.18.0)(prisma@7.3.0(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(solid-js@1.9.11)(vitest@4.0.18(@types/node@25.2.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.2.0)(typescript@5.9.3))(tsx@4.21.0)):
better-auth@1.4.18(@prisma/client@7.4.1(prisma@7.4.1(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3))(@tanstack/react-start@1.158.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite@7.3.1(@types/node@25.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0)))(mysql2@3.15.3)(pg@8.18.0)(prisma@7.4.1(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(solid-js@1.9.11)(vitest@4.0.18(@types/node@25.2.0)(jiti@2.6.1)(jsdom@28.0.0(@noble/hashes@2.0.1))(lightningcss@1.30.2)(msw@2.12.7(@types/node@25.2.0)(typescript@5.9.3))(tsx@4.21.0)):
dependencies:
'@better-auth/core': 1.4.18(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.0)
'@better-auth/telemetry': 1.4.18(@better-auth/core@1.4.18(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.1.3)(kysely@0.28.11)(nanostores@1.1.0))
@@ -7357,11 +7370,11 @@ snapshots:
nanostores: 1.1.0
zod: 4.3.6
optionalDependencies:
'@prisma/client': 7.3.0(prisma@7.3.0(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3)
'@prisma/client': 7.4.1(prisma@7.4.1(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3))(typescript@5.9.3)
'@tanstack/react-start': 1.158.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vite@7.3.1(@types/node@25.2.0)(jiti@2.6.1)(lightningcss@1.30.2)(tsx@4.21.0))
mysql2: 3.15.3
pg: 8.18.0
prisma: 7.3.0(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
prisma: 7.4.1(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
solid-js: 1.9.11
@@ -8811,6 +8824,8 @@ snapshots:
exsolve: 1.0.8
pathe: 2.0.3
pnpm@10.30.2: {}
postcss-selector-parser@7.1.1:
dependencies:
cssesc: 3.0.0
@@ -8852,11 +8867,11 @@ snapshots:
dependencies:
parse-ms: 4.0.0
prisma@7.3.0(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3):
prisma@7.4.1(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3):
dependencies:
'@prisma/config': 7.3.0
'@prisma/config': 7.4.1
'@prisma/dev': 0.20.0(typescript@5.9.3)
'@prisma/engines': 7.3.0
'@prisma/engines': 7.4.1
'@prisma/studio-core': 0.13.1(@types/react@19.2.10)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
mysql2: 3.15.3
postgres: 3.4.7

View File

@@ -0,0 +1,69 @@
-- CreateTable
CREATE TABLE "box" (
"id" TEXT NOT NULL,
"houseId" TEXT,
"icon" TEXT NOT NULL,
"color" TEXT NOT NULL,
"name" TEXT NOT NULL,
"description" TEXT,
"tags" TEXT[] DEFAULT ARRAY[]::TEXT[],
"createrId" TEXT NOT NULL,
"createdAt" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMPTZ NOT NULL,
"deletedAt" TIMESTAMP(3),
"isPrivate" BOOLEAN NOT NULL DEFAULT false,
CONSTRAINT "box_pkey" PRIMARY KEY ("id")
);
-- CreateTable
CREATE TABLE "item" (
"id" TEXT NOT NULL,
"createrId" TEXT NOT NULL,
"boxId" TEXT,
"image" TEXT NOT NULL,
"name" TEXT NOT NULL,
"description" TEXT,
"price" TEXT,
"tags" TEXT[] DEFAULT ARRAY[]::TEXT[],
"quantity" INTEGER NOT NULL,
"expiresAt" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
"createdAt" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMPTZ NOT NULL,
"deletedAt" TIMESTAMP(3),
CONSTRAINT "item_pkey" PRIMARY KEY ("id")
);
-- CreateIndex
CREATE INDEX "box_houseId_idx" ON "box"("houseId");
-- CreateIndex
CREATE INDEX "box_createrId_idx" ON "box"("createrId");
-- CreateIndex
CREATE INDEX "box_isPrivate_idx" ON "box"("isPrivate");
-- CreateIndex
CREATE INDEX "box_tags_idx" ON "box"("tags");
-- CreateIndex
CREATE INDEX "item_createrId_idx" ON "item"("createrId");
-- CreateIndex
CREATE INDEX "item_boxId_idx" ON "item"("boxId");
-- CreateIndex
CREATE INDEX "item_tags_idx" ON "item"("tags");
-- AddForeignKey
ALTER TABLE "box" ADD CONSTRAINT "box_houseId_fkey" FOREIGN KEY ("houseId") REFERENCES "house"("id") ON DELETE SET NULL ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "box" ADD CONSTRAINT "box_createrId_fkey" FOREIGN KEY ("createrId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "item" ADD CONSTRAINT "item_createrId_fkey" FOREIGN KEY ("createrId") REFERENCES "user"("id") ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE "item" ADD CONSTRAINT "item_boxId_fkey" FOREIGN KEY ("boxId") REFERENCES "box"("id") ON DELETE SET NULL ON UPDATE CASCADE;

View File

@@ -9,44 +9,46 @@ datasource db {
}
model User {
id String @id @default(uuid())
name String
email String
emailVerified Boolean @default(false)
image String?
createdAt DateTime @default(now()) @db.Timestamptz
updatedAt DateTime @updatedAt @db.Timestamptz
sessions Session[]
accounts Account[]
audit Audit[]
notification Notification[]
id String @id @default(uuid())
name String
email String
emailVerified Boolean @default(false)
image String?
createdAt DateTime @default(now()) @db.Timestamptz
updatedAt DateTime @updatedAt @db.Timestamptz
sessions Session[]
accounts Account[]
audit Audit[]
notification Notification[]
role String?
banned Boolean? @default(false)
banReason String?
banExpires DateTime?
role String?
banned Boolean? @default(false)
banReason String?
banExpires DateTime?
members Member[]
invitations Invitation[]
members Member[]
invitations Invitation[]
boxes Box[]
items Item[]
@@unique([email])
@@map("user")
}
model Session {
id String @id @default(uuid())
expiresAt DateTime @db.Timestamptz
token String
createdAt DateTime @default(now()) @db.Timestamptz
updatedAt DateTime @updatedAt @db.Timestamptz
ipAddress String?
userAgent String?
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
id String @id @default(uuid())
expiresAt DateTime @db.Timestamptz
token String
createdAt DateTime @default(now()) @db.Timestamptz
updatedAt DateTime @updatedAt @db.Timestamptz
ipAddress String?
userAgent String?
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
impersonatedBy String?
impersonatedBy String?
activeOrganizationId String?
activeOrganizationId String?
@@unique([token])
@@index([userId])
@@ -54,60 +56,61 @@ model Session {
}
model Account {
id String @id @default(uuid())
accountId String
providerId String
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
accessToken String?
refreshToken String?
idToken String?
accessTokenExpiresAt DateTime?
refreshTokenExpiresAt DateTime?
scope String?
password String?
createdAt DateTime @default(now()) @db.Timestamptz
updatedAt DateTime @updatedAt @db.Timestamptz
id String @id @default(uuid())
accountId String
providerId String
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
accessToken String?
refreshToken String?
idToken String?
accessTokenExpiresAt DateTime?
refreshTokenExpiresAt DateTime?
scope String?
password String?
createdAt DateTime @default(now()) @db.Timestamptz
updatedAt DateTime @updatedAt @db.Timestamptz
@@index([userId])
@@map("account")
}
model Verification {
id String @id @default(uuid())
identifier String
value String
expiresAt DateTime
createdAt DateTime @default(now()) @db.Timestamptz
updatedAt DateTime @updatedAt @db.Timestamptz
id String @id @default(uuid())
identifier String
value String
expiresAt DateTime
createdAt DateTime @default(now()) @db.Timestamptz
updatedAt DateTime @updatedAt @db.Timestamptz
@@index([identifier])
@@map("verification")
}
model House {
id String @id @default(uuid())
name String
slug String
logo String?
createdAt DateTime @db.Timestamptz
metadata String?
color String? @default("#000000")
members Member[]
invitations Invitation[]
id String @id @default(uuid())
name String
slug String
logo String?
createdAt DateTime @db.Timestamptz
metadata String?
color String? @default("#000000")
members Member[]
invitations Invitation[]
boxes Box[]
@@unique([slug])
@@map("house")
}
model Member {
id String @id @default(uuid())
organizationId String
house House @relation(fields: [organizationId], references: [id], onDelete: Cascade)
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
role String @default("member")
createdAt DateTime @db.Timestamptz
id String @id @default(uuid())
organizationId String
house House @relation(fields: [organizationId], references: [id], onDelete: Cascade)
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
role String @default("member")
createdAt DateTime @db.Timestamptz
@@index([organizationId])
@@index([userId])
@@ -115,16 +118,16 @@ model Member {
}
model Invitation {
id String @id @default(uuid())
organizationId String
house House @relation(fields: [organizationId], references: [id], onDelete: Cascade)
email String
role String?
status String @default("pending")
expiresAt DateTime @db.Timestamptz
createdAt DateTime @default(now()) @db.Timestamptz
inviterId String
user User @relation(fields: [inviterId], references: [id], onDelete: Cascade)
id String @id @default(uuid())
organizationId String
house House @relation(fields: [organizationId], references: [id], onDelete: Cascade)
email String
role String?
status String @default("pending")
expiresAt DateTime @db.Timestamptz
createdAt DateTime @default(now()) @db.Timestamptz
inviterId String
user User @relation(fields: [inviterId], references: [id], onDelete: Cascade)
@@index([organizationId])
@@index([email])
@@ -132,49 +135,99 @@ model Invitation {
}
model Setting {
id String @id @default(uuid())
key String @unique
value String
description String
relation String @default("admin")
id String @id @default(uuid())
key String @unique
value String
description String
relation String @default("admin")
createdAt DateTime @default(now()) @db.Timestamptz
updatedAt DateTime @updatedAt @db.Timestamptz
createdAt DateTime @default(now()) @db.Timestamptz
updatedAt DateTime @updatedAt @db.Timestamptz
@@map("setting")
}
model Audit {
id String @id @default(uuid())
userId String
action String
tableName String
recordId String
oldValue String?
newValue String?
createdAt DateTime @default(now()) @db.Timestamptz
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
id String @id @default(uuid())
userId String
action String
tableName String
recordId String
oldValue String?
newValue String?
createdAt DateTime @default(now()) @db.Timestamptz
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@map("audit")
}
model Notification {
id String @id @default(uuid())
userId String
id String @id @default(uuid())
userId String
title String
message String
type String @default("system")
title String
message String
type String @default("system")
link String?
metadata String?
link String?
metadata String?
createdAt DateTime @default(now()) @db.Timestamptz
readAt DateTime? @db.Timestamptz
createdAt DateTime @default(now()) @db.Timestamptz
readAt DateTime? @db.Timestamptz
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([userId, readAt])
@@index([readAt])
@@map("notification")
}
model Box {
id String @id @default(uuid())
houseId String?
icon String
color String
name String
description String?
tags String[] @default([])
createrId String
createdAt DateTime @default(now()) @db.Timestamptz
updatedAt DateTime @updatedAt @db.Timestamptz
deletedAt DateTime?
isPrivate Boolean @default(false)
items Item[]
house House? @relation(fields: [houseId], references: [id], onDelete: SetNull)
user User @relation(fields: [createrId], references: [id], onDelete: Cascade)
@@index([houseId])
@@index([createrId])
@@index([isPrivate])
@@index([tags])
@@map("box")
}
model Item {
id String @id @default(uuid())
createrId String
boxId String?
image String
name String
description String?
price String?
tags String[] @default([])
quantity Int
expiresAt DateTime @default(now()) @db.Timestamptz
createdAt DateTime @default(now()) @db.Timestamptz
updatedAt DateTime @updatedAt @db.Timestamptz
deletedAt DateTime?
user User @relation(fields: [createrId], references: [id], onDelete: Cascade)
box Box? @relation(fields: [boxId], references: [id], onDelete: SetNull)
@@index([createrId])
@@index([boxId])
@@index([tags])
@@map("item")
}

View File

@@ -6,6 +6,8 @@ import {
getCoreRowModel,
useReactTable,
} from '@tanstack/react-table';
import { Card, CardContent } from '@ui/card';
import { Item, ItemContent, ItemDescription, ItemTitle } from '@ui/item';
import { Label } from '@ui/label';
import {
Select,
@@ -55,7 +57,7 @@ const DataTable = <TData, TValue>({
return (
<>
<div className="overflow-hidden rounded-md border">
<div className="overflow-hidden rounded-md border hidden lg:block">
<Table className="bg-white">
<TableHeader>
{table.getHeaderGroups().map((headerGroup) => (
@@ -112,6 +114,45 @@ const DataTable = <TData, TValue>({
</TableBody>
</Table>
</div>
<div className="grid grid-cols-2 gap-4 lg:hidden">
{table.getRowModel().rows?.length ? (
table.getRowModel().rows.map((row) => (
<Card key={row.id}>
<CardContent>
{row.getVisibleCells().map((cell) =>
cell.column.columnDef.id === 'actions' ? (
<Item
key={cell.id}
className="-m-4 w-[calc(100%+var(--spacing)*8)] bg-gray-50 rounded-t-none mt-1"
>
{flexRender(
cell.column.columnDef.cell,
cell.getContext(),
)}
</Item>
) : (
<Item key={cell.id} className="px-0">
<ItemContent>
<ItemTitle>
{cell.column.columnDef.meta?.mLabel || 'No Label'}:
</ItemTitle>
<ItemDescription>
{flexRender(
cell.column.columnDef.cell,
cell.getContext(),
)}
</ItemDescription>
</ItemContent>
</Item>
),
)}
</CardContent>
</Card>
))
) : (
<>No results.</>
)}
</div>
<div className="flex items-center justify-between gap-2">
<div className="hidden text-sm gap-2 lg:flex">
<span>

View File

@@ -13,6 +13,7 @@ export const logColumns: ColumnDef<AuditWithUser>[] = [
header: m.logs_page_ui_table_header_username(),
meta: {
thClass: 'w-1/6',
mLabel: m.logs_page_ui_table_header_username(),
},
},
{
@@ -20,6 +21,7 @@ export const logColumns: ColumnDef<AuditWithUser>[] = [
header: m.logs_page_ui_table_header_table(),
meta: {
thClass: 'w-1/6',
mLabel: m.logs_page_ui_table_header_table(),
},
cell: ({ row }) => {
return (
@@ -34,6 +36,7 @@ export const logColumns: ColumnDef<AuditWithUser>[] = [
header: m.logs_page_ui_table_header_action(),
meta: {
thClass: 'w-1/6',
mLabel: m.logs_page_ui_table_header_action(),
},
cell: ({ row }) => {
return <ActionBadge action={row.original.action as LOG_ACTION} />;
@@ -44,6 +47,7 @@ export const logColumns: ColumnDef<AuditWithUser>[] = [
header: m.logs_page_ui_table_header_create_at(),
meta: {
thClass: 'w-2/6',
mLabel: m.logs_page_ui_table_header_create_at(),
},
cell: ({ row }) => {
return formatters.dateTime(new Date(row.original.createdAt));
@@ -55,7 +59,7 @@ export const logColumns: ColumnDef<AuditWithUser>[] = [
thClass: 'w-1/6',
},
cell: ({ row }) => (
<div className="flex justify-end">
<div className="flex justify-end w-full">
<ViewDetailAudit data={row.original} />
</div>
),

View File

@@ -11,6 +11,7 @@ export const houseColumns: ColumnDef<HouseWithMembers>[] = [
header: m.houses_page_ui_table_header_name(),
meta: {
thClass: 'w-1/6',
mLabel: m.houses_page_ui_table_header_name(),
},
},
{
@@ -18,6 +19,7 @@ export const houseColumns: ColumnDef<HouseWithMembers>[] = [
header: m.houses_page_ui_table_header_members(),
meta: {
thClass: 'w-1/6',
mLabel: m.houses_page_ui_table_header_members(),
},
cell: ({ row }) => {
return row.original.members.length;
@@ -28,6 +30,7 @@ export const houseColumns: ColumnDef<HouseWithMembers>[] = [
header: m.houses_page_ui_table_header_created_at(),
meta: {
thClass: 'w-1/6',
mLabel: m.houses_page_ui_table_header_created_at(),
},
cell: ({ row }) => {
return formatters.dateTime(new Date(row.original.createdAt));

View File

@@ -4,6 +4,7 @@ import {
GaugeIcon,
GearIcon,
HouseIcon,
PackageIcon,
UsersIcon,
WarehouseIcon,
} from '@phosphor-icons/react';
@@ -70,6 +71,11 @@ const NAV_MAIN = [
path: '/kanri/houses',
icon: WarehouseIcon,
},
{
title: m.nav_boxes(),
path: '/kanri/boxes',
icon: PackageIcon,
},
{
title: m.nav_logs(),
path: '/kanri/logs',

View File

@@ -16,6 +16,7 @@ export const userColumns: ColumnDef<UserWithRole>[] = [
header: m.users_page_ui_table_header_name(),
meta: {
thClass: 'w-1/6',
mLabel: m.users_page_ui_table_header_name(),
},
},
{
@@ -23,6 +24,7 @@ export const userColumns: ColumnDef<UserWithRole>[] = [
header: m.users_page_ui_table_header_email(),
meta: {
thClass: 'w-1/6',
mLabel: m.users_page_ui_table_header_email(),
},
},
{
@@ -30,6 +32,7 @@ export const userColumns: ColumnDef<UserWithRole>[] = [
header: m.users_page_ui_table_header_role(),
meta: {
thClass: 'w-1/6',
mLabel: m.users_page_ui_table_header_role(),
},
cell: ({ row }) => <RoleBadge type={row.original.role} />,
},
@@ -38,6 +41,7 @@ export const userColumns: ColumnDef<UserWithRole>[] = [
header: m.users_page_ui_table_header_banned(),
meta: {
thClass: 'w-1/6',
mLabel: m.users_page_ui_table_header_banned(),
},
cell: ({ row }) =>
row.original.banned ? (
@@ -51,6 +55,7 @@ export const userColumns: ColumnDef<UserWithRole>[] = [
header: m.users_page_ui_table_header_created_at(),
meta: {
thClass: 'w-1/6',
mLabel: m.users_page_ui_table_header_created_at(),
},
cell: ({ row }) => {
return formatters.dateTime(new Date(row.original.createdAt));
@@ -63,7 +68,7 @@ export const userColumns: ColumnDef<UserWithRole>[] = [
},
cell: ({ row }) => {
return (
<div className="flex justify-end gap-2">
<div className="flex justify-end gap-2 w-full">
<EditUserAction data={row.original} />
<SetPasswordAction data={row.original} />
<ChangeRoleAction data={row.original} />

View File

@@ -67,3 +67,13 @@ export type Audit = Prisma.AuditModel
*
*/
export type Notification = Prisma.NotificationModel
/**
* Model Box
*
*/
export type Box = Prisma.BoxModel
/**
* Model Item
*
*/
export type Item = Prisma.ItemModel

View File

@@ -89,3 +89,13 @@ export type Audit = Prisma.AuditModel
*
*/
export type Notification = Prisma.NotificationModel
/**
* Model Box
*
*/
export type Box = Prisma.BoxModel
/**
* Model Item
*
*/
export type Item = Prisma.ItemModel

View File

@@ -161,6 +161,33 @@ export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
_max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>
}
export type IntFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel>
in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>
not?: Prisma.NestedIntFilter<$PrismaModel> | number
}
export type IntWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel>
in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>
not?: Prisma.NestedIntWithAggregatesFilter<$PrismaModel> | number
_count?: Prisma.NestedIntFilter<$PrismaModel>
_avg?: Prisma.NestedFloatFilter<$PrismaModel>
_sum?: Prisma.NestedIntFilter<$PrismaModel>
_min?: Prisma.NestedIntFilter<$PrismaModel>
_max?: Prisma.NestedIntFilter<$PrismaModel>
}
export type NestedStringFilter<$PrismaModel = never> = {
equals?: string | Prisma.StringFieldRefInput<$PrismaModel>
in?: string[] | Prisma.ListStringFieldRefInput<$PrismaModel>
@@ -321,4 +348,31 @@ export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
_max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>
}
export type NestedIntWithAggregatesFilter<$PrismaModel = never> = {
equals?: number | Prisma.IntFieldRefInput<$PrismaModel>
in?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
notIn?: number[] | Prisma.ListIntFieldRefInput<$PrismaModel>
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>
not?: Prisma.NestedIntWithAggregatesFilter<$PrismaModel> | number
_count?: Prisma.NestedIntFilter<$PrismaModel>
_avg?: Prisma.NestedFloatFilter<$PrismaModel>
_sum?: Prisma.NestedIntFilter<$PrismaModel>
_min?: Prisma.NestedIntFilter<$PrismaModel>
_max?: Prisma.NestedIntFilter<$PrismaModel>
}
export type NestedFloatFilter<$PrismaModel = never> = {
equals?: number | Prisma.FloatFieldRefInput<$PrismaModel>
in?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel>
notIn?: number[] | Prisma.ListFloatFieldRefInput<$PrismaModel>
lt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
lte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gt?: number | Prisma.FloatFieldRefInput<$PrismaModel>
gte?: number | Prisma.FloatFieldRefInput<$PrismaModel>
not?: Prisma.NestedFloatFilter<$PrismaModel> | number
}

File diff suppressed because one or more lines are too long

View File

@@ -80,12 +80,12 @@ export type PrismaVersion = {
}
/**
* Prisma Client JS version: 7.3.0
* Query Engine version: 9d6ad21cbbceab97458517b147a6a09ff43aa735
* Prisma Client JS version: 7.4.1
* Query Engine version: 55ae170b1ced7fc6ed07a15f110549408c501bb3
*/
export const prismaVersion: PrismaVersion = {
client: "7.3.0",
engine: "9d6ad21cbbceab97458517b147a6a09ff43aa735"
client: "7.4.1",
engine: "55ae170b1ced7fc6ed07a15f110549408c501bb3"
}
/**
@@ -393,7 +393,9 @@ export const ModelName = {
Invitation: 'Invitation',
Setting: 'Setting',
Audit: 'Audit',
Notification: 'Notification'
Notification: 'Notification',
Box: 'Box',
Item: 'Item'
} as const
export type ModelName = (typeof ModelName)[keyof typeof ModelName]
@@ -409,7 +411,7 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
omit: GlobalOmitOptions
}
meta: {
modelProps: "user" | "session" | "account" | "verification" | "house" | "member" | "invitation" | "setting" | "audit" | "notification"
modelProps: "user" | "session" | "account" | "verification" | "house" | "member" | "invitation" | "setting" | "audit" | "notification" | "box" | "item"
txIsolationLevel: TransactionIsolationLevel
}
model: {
@@ -1153,6 +1155,154 @@ export type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runt
}
}
}
Box: {
payload: Prisma.$BoxPayload<ExtArgs>
fields: Prisma.BoxFieldRefs
operations: {
findUnique: {
args: Prisma.BoxFindUniqueArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoxPayload> | null
}
findUniqueOrThrow: {
args: Prisma.BoxFindUniqueOrThrowArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoxPayload>
}
findFirst: {
args: Prisma.BoxFindFirstArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoxPayload> | null
}
findFirstOrThrow: {
args: Prisma.BoxFindFirstOrThrowArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoxPayload>
}
findMany: {
args: Prisma.BoxFindManyArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoxPayload>[]
}
create: {
args: Prisma.BoxCreateArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoxPayload>
}
createMany: {
args: Prisma.BoxCreateManyArgs<ExtArgs>
result: BatchPayload
}
createManyAndReturn: {
args: Prisma.BoxCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoxPayload>[]
}
delete: {
args: Prisma.BoxDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoxPayload>
}
update: {
args: Prisma.BoxUpdateArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoxPayload>
}
deleteMany: {
args: Prisma.BoxDeleteManyArgs<ExtArgs>
result: BatchPayload
}
updateMany: {
args: Prisma.BoxUpdateManyArgs<ExtArgs>
result: BatchPayload
}
updateManyAndReturn: {
args: Prisma.BoxUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoxPayload>[]
}
upsert: {
args: Prisma.BoxUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$BoxPayload>
}
aggregate: {
args: Prisma.BoxAggregateArgs<ExtArgs>
result: runtime.Types.Utils.Optional<Prisma.AggregateBox>
}
groupBy: {
args: Prisma.BoxGroupByArgs<ExtArgs>
result: runtime.Types.Utils.Optional<Prisma.BoxGroupByOutputType>[]
}
count: {
args: Prisma.BoxCountArgs<ExtArgs>
result: runtime.Types.Utils.Optional<Prisma.BoxCountAggregateOutputType> | number
}
}
}
Item: {
payload: Prisma.$ItemPayload<ExtArgs>
fields: Prisma.ItemFieldRefs
operations: {
findUnique: {
args: Prisma.ItemFindUniqueArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ItemPayload> | null
}
findUniqueOrThrow: {
args: Prisma.ItemFindUniqueOrThrowArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ItemPayload>
}
findFirst: {
args: Prisma.ItemFindFirstArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ItemPayload> | null
}
findFirstOrThrow: {
args: Prisma.ItemFindFirstOrThrowArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ItemPayload>
}
findMany: {
args: Prisma.ItemFindManyArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ItemPayload>[]
}
create: {
args: Prisma.ItemCreateArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ItemPayload>
}
createMany: {
args: Prisma.ItemCreateManyArgs<ExtArgs>
result: BatchPayload
}
createManyAndReturn: {
args: Prisma.ItemCreateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ItemPayload>[]
}
delete: {
args: Prisma.ItemDeleteArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ItemPayload>
}
update: {
args: Prisma.ItemUpdateArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ItemPayload>
}
deleteMany: {
args: Prisma.ItemDeleteManyArgs<ExtArgs>
result: BatchPayload
}
updateMany: {
args: Prisma.ItemUpdateManyArgs<ExtArgs>
result: BatchPayload
}
updateManyAndReturn: {
args: Prisma.ItemUpdateManyAndReturnArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ItemPayload>[]
}
upsert: {
args: Prisma.ItemUpsertArgs<ExtArgs>
result: runtime.Types.Utils.PayloadToResult<Prisma.$ItemPayload>
}
aggregate: {
args: Prisma.ItemAggregateArgs<ExtArgs>
result: runtime.Types.Utils.Optional<Prisma.AggregateItem>
}
groupBy: {
args: Prisma.ItemGroupByArgs<ExtArgs>
result: runtime.Types.Utils.Optional<Prisma.ItemGroupByOutputType>[]
}
count: {
args: Prisma.ItemCountArgs<ExtArgs>
result: runtime.Types.Utils.Optional<Prisma.ItemCountAggregateOutputType> | number
}
}
}
}
} & {
other: {
@@ -1336,6 +1486,43 @@ export const NotificationScalarFieldEnum = {
export type NotificationScalarFieldEnum = (typeof NotificationScalarFieldEnum)[keyof typeof NotificationScalarFieldEnum]
export const BoxScalarFieldEnum = {
id: 'id',
houseId: 'houseId',
icon: 'icon',
color: 'color',
name: 'name',
description: 'description',
tags: 'tags',
createrId: 'createrId',
createdAt: 'createdAt',
updatedAt: 'updatedAt',
deletedAt: 'deletedAt',
isPrivate: 'isPrivate'
} as const
export type BoxScalarFieldEnum = (typeof BoxScalarFieldEnum)[keyof typeof BoxScalarFieldEnum]
export const ItemScalarFieldEnum = {
id: 'id',
createrId: 'createrId',
boxId: 'boxId',
image: 'image',
name: 'name',
description: 'description',
price: 'price',
tags: 'tags',
quantity: 'quantity',
expiresAt: 'expiresAt',
createdAt: 'createdAt',
updatedAt: 'updatedAt',
deletedAt: 'deletedAt'
} as const
export type ItemScalarFieldEnum = (typeof ItemScalarFieldEnum)[keyof typeof ItemScalarFieldEnum]
export const SortOrder = {
asc: 'asc',
desc: 'desc'
@@ -1414,6 +1601,20 @@ export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'In
export type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int[]'>
/**
* Reference to a field of type 'Float'
*/
export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'>
/**
* Reference to a field of type 'Float[]'
*/
export type ListFloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float[]'>
/**
* Batch Payload for updateMany & deleteMany & createMany
*/
@@ -1519,6 +1720,8 @@ export type GlobalOmitConfig = {
setting?: Prisma.SettingOmit
audit?: Prisma.AuditOmit
notification?: Prisma.NotificationOmit
box?: Prisma.BoxOmit
item?: Prisma.ItemOmit
}
/* Types for Logging */

View File

@@ -60,7 +60,9 @@ export const ModelName = {
Invitation: 'Invitation',
Setting: 'Setting',
Audit: 'Audit',
Notification: 'Notification'
Notification: 'Notification',
Box: 'Box',
Item: 'Item'
} as const
export type ModelName = (typeof ModelName)[keyof typeof ModelName]
@@ -223,6 +225,43 @@ export const NotificationScalarFieldEnum = {
export type NotificationScalarFieldEnum = (typeof NotificationScalarFieldEnum)[keyof typeof NotificationScalarFieldEnum]
export const BoxScalarFieldEnum = {
id: 'id',
houseId: 'houseId',
icon: 'icon',
color: 'color',
name: 'name',
description: 'description',
tags: 'tags',
createrId: 'createrId',
createdAt: 'createdAt',
updatedAt: 'updatedAt',
deletedAt: 'deletedAt',
isPrivate: 'isPrivate'
} as const
export type BoxScalarFieldEnum = (typeof BoxScalarFieldEnum)[keyof typeof BoxScalarFieldEnum]
export const ItemScalarFieldEnum = {
id: 'id',
createrId: 'createrId',
boxId: 'boxId',
image: 'image',
name: 'name',
description: 'description',
price: 'price',
tags: 'tags',
quantity: 'quantity',
expiresAt: 'expiresAt',
createdAt: 'createdAt',
updatedAt: 'updatedAt',
deletedAt: 'deletedAt'
} as const
export type ItemScalarFieldEnum = (typeof ItemScalarFieldEnum)[keyof typeof ItemScalarFieldEnum]
export const SortOrder = {
asc: 'asc',
desc: 'desc'

View File

@@ -18,4 +18,6 @@ export type * from './models/Invitation.ts'
export type * from './models/Setting.ts'
export type * from './models/Audit.ts'
export type * from './models/Notification.ts'
export type * from './models/Box.ts'
export type * from './models/Item.ts'
export type * from './commonInputTypes.ts'

File diff suppressed because it is too large Load Diff

View File

@@ -200,6 +200,7 @@ export type HouseWhereInput = {
color?: Prisma.StringNullableFilter<"House"> | string | null
members?: Prisma.MemberListRelationFilter
invitations?: Prisma.InvitationListRelationFilter
boxes?: Prisma.BoxListRelationFilter
}
export type HouseOrderByWithRelationInput = {
@@ -212,6 +213,7 @@ export type HouseOrderByWithRelationInput = {
color?: Prisma.SortOrderInput | Prisma.SortOrder
members?: Prisma.MemberOrderByRelationAggregateInput
invitations?: Prisma.InvitationOrderByRelationAggregateInput
boxes?: Prisma.BoxOrderByRelationAggregateInput
}
export type HouseWhereUniqueInput = Prisma.AtLeast<{
@@ -227,6 +229,7 @@ export type HouseWhereUniqueInput = Prisma.AtLeast<{
color?: Prisma.StringNullableFilter<"House"> | string | null
members?: Prisma.MemberListRelationFilter
invitations?: Prisma.InvitationListRelationFilter
boxes?: Prisma.BoxListRelationFilter
}, "id" | "slug">
export type HouseOrderByWithAggregationInput = {
@@ -265,6 +268,7 @@ export type HouseCreateInput = {
color?: string | null
members?: Prisma.MemberCreateNestedManyWithoutHouseInput
invitations?: Prisma.InvitationCreateNestedManyWithoutHouseInput
boxes?: Prisma.BoxCreateNestedManyWithoutHouseInput
}
export type HouseUncheckedCreateInput = {
@@ -277,6 +281,7 @@ export type HouseUncheckedCreateInput = {
color?: string | null
members?: Prisma.MemberUncheckedCreateNestedManyWithoutHouseInput
invitations?: Prisma.InvitationUncheckedCreateNestedManyWithoutHouseInput
boxes?: Prisma.BoxUncheckedCreateNestedManyWithoutHouseInput
}
export type HouseUpdateInput = {
@@ -289,6 +294,7 @@ export type HouseUpdateInput = {
color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
members?: Prisma.MemberUpdateManyWithoutHouseNestedInput
invitations?: Prisma.InvitationUpdateManyWithoutHouseNestedInput
boxes?: Prisma.BoxUpdateManyWithoutHouseNestedInput
}
export type HouseUncheckedUpdateInput = {
@@ -301,6 +307,7 @@ export type HouseUncheckedUpdateInput = {
color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
members?: Prisma.MemberUncheckedUpdateManyWithoutHouseNestedInput
invitations?: Prisma.InvitationUncheckedUpdateManyWithoutHouseNestedInput
boxes?: Prisma.BoxUncheckedUpdateManyWithoutHouseNestedInput
}
export type HouseCreateManyInput = {
@@ -368,6 +375,11 @@ export type HouseScalarRelationFilter = {
isNot?: Prisma.HouseWhereInput
}
export type HouseNullableScalarRelationFilter = {
is?: Prisma.HouseWhereInput | null
isNot?: Prisma.HouseWhereInput | null
}
export type HouseCreateNestedOneWithoutMembersInput = {
create?: Prisma.XOR<Prisma.HouseCreateWithoutMembersInput, Prisma.HouseUncheckedCreateWithoutMembersInput>
connectOrCreate?: Prisma.HouseCreateOrConnectWithoutMembersInput
@@ -396,6 +408,22 @@ export type HouseUpdateOneRequiredWithoutInvitationsNestedInput = {
update?: Prisma.XOR<Prisma.XOR<Prisma.HouseUpdateToOneWithWhereWithoutInvitationsInput, Prisma.HouseUpdateWithoutInvitationsInput>, Prisma.HouseUncheckedUpdateWithoutInvitationsInput>
}
export type HouseCreateNestedOneWithoutBoxesInput = {
create?: Prisma.XOR<Prisma.HouseCreateWithoutBoxesInput, Prisma.HouseUncheckedCreateWithoutBoxesInput>
connectOrCreate?: Prisma.HouseCreateOrConnectWithoutBoxesInput
connect?: Prisma.HouseWhereUniqueInput
}
export type HouseUpdateOneWithoutBoxesNestedInput = {
create?: Prisma.XOR<Prisma.HouseCreateWithoutBoxesInput, Prisma.HouseUncheckedCreateWithoutBoxesInput>
connectOrCreate?: Prisma.HouseCreateOrConnectWithoutBoxesInput
upsert?: Prisma.HouseUpsertWithoutBoxesInput
disconnect?: Prisma.HouseWhereInput | boolean
delete?: Prisma.HouseWhereInput | boolean
connect?: Prisma.HouseWhereUniqueInput
update?: Prisma.XOR<Prisma.XOR<Prisma.HouseUpdateToOneWithWhereWithoutBoxesInput, Prisma.HouseUpdateWithoutBoxesInput>, Prisma.HouseUncheckedUpdateWithoutBoxesInput>
}
export type HouseCreateWithoutMembersInput = {
id?: string
name: string
@@ -405,6 +433,7 @@ export type HouseCreateWithoutMembersInput = {
metadata?: string | null
color?: string | null
invitations?: Prisma.InvitationCreateNestedManyWithoutHouseInput
boxes?: Prisma.BoxCreateNestedManyWithoutHouseInput
}
export type HouseUncheckedCreateWithoutMembersInput = {
@@ -416,6 +445,7 @@ export type HouseUncheckedCreateWithoutMembersInput = {
metadata?: string | null
color?: string | null
invitations?: Prisma.InvitationUncheckedCreateNestedManyWithoutHouseInput
boxes?: Prisma.BoxUncheckedCreateNestedManyWithoutHouseInput
}
export type HouseCreateOrConnectWithoutMembersInput = {
@@ -443,6 +473,7 @@ export type HouseUpdateWithoutMembersInput = {
metadata?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
invitations?: Prisma.InvitationUpdateManyWithoutHouseNestedInput
boxes?: Prisma.BoxUpdateManyWithoutHouseNestedInput
}
export type HouseUncheckedUpdateWithoutMembersInput = {
@@ -454,6 +485,7 @@ export type HouseUncheckedUpdateWithoutMembersInput = {
metadata?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
invitations?: Prisma.InvitationUncheckedUpdateManyWithoutHouseNestedInput
boxes?: Prisma.BoxUncheckedUpdateManyWithoutHouseNestedInput
}
export type HouseCreateWithoutInvitationsInput = {
@@ -465,6 +497,7 @@ export type HouseCreateWithoutInvitationsInput = {
metadata?: string | null
color?: string | null
members?: Prisma.MemberCreateNestedManyWithoutHouseInput
boxes?: Prisma.BoxCreateNestedManyWithoutHouseInput
}
export type HouseUncheckedCreateWithoutInvitationsInput = {
@@ -476,6 +509,7 @@ export type HouseUncheckedCreateWithoutInvitationsInput = {
metadata?: string | null
color?: string | null
members?: Prisma.MemberUncheckedCreateNestedManyWithoutHouseInput
boxes?: Prisma.BoxUncheckedCreateNestedManyWithoutHouseInput
}
export type HouseCreateOrConnectWithoutInvitationsInput = {
@@ -503,6 +537,7 @@ export type HouseUpdateWithoutInvitationsInput = {
metadata?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
members?: Prisma.MemberUpdateManyWithoutHouseNestedInput
boxes?: Prisma.BoxUpdateManyWithoutHouseNestedInput
}
export type HouseUncheckedUpdateWithoutInvitationsInput = {
@@ -514,6 +549,71 @@ export type HouseUncheckedUpdateWithoutInvitationsInput = {
metadata?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
members?: Prisma.MemberUncheckedUpdateManyWithoutHouseNestedInput
boxes?: Prisma.BoxUncheckedUpdateManyWithoutHouseNestedInput
}
export type HouseCreateWithoutBoxesInput = {
id?: string
name: string
slug: string
logo?: string | null
createdAt: Date | string
metadata?: string | null
color?: string | null
members?: Prisma.MemberCreateNestedManyWithoutHouseInput
invitations?: Prisma.InvitationCreateNestedManyWithoutHouseInput
}
export type HouseUncheckedCreateWithoutBoxesInput = {
id?: string
name: string
slug: string
logo?: string | null
createdAt: Date | string
metadata?: string | null
color?: string | null
members?: Prisma.MemberUncheckedCreateNestedManyWithoutHouseInput
invitations?: Prisma.InvitationUncheckedCreateNestedManyWithoutHouseInput
}
export type HouseCreateOrConnectWithoutBoxesInput = {
where: Prisma.HouseWhereUniqueInput
create: Prisma.XOR<Prisma.HouseCreateWithoutBoxesInput, Prisma.HouseUncheckedCreateWithoutBoxesInput>
}
export type HouseUpsertWithoutBoxesInput = {
update: Prisma.XOR<Prisma.HouseUpdateWithoutBoxesInput, Prisma.HouseUncheckedUpdateWithoutBoxesInput>
create: Prisma.XOR<Prisma.HouseCreateWithoutBoxesInput, Prisma.HouseUncheckedCreateWithoutBoxesInput>
where?: Prisma.HouseWhereInput
}
export type HouseUpdateToOneWithWhereWithoutBoxesInput = {
where?: Prisma.HouseWhereInput
data: Prisma.XOR<Prisma.HouseUpdateWithoutBoxesInput, Prisma.HouseUncheckedUpdateWithoutBoxesInput>
}
export type HouseUpdateWithoutBoxesInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
slug?: Prisma.StringFieldUpdateOperationsInput | string
logo?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
metadata?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
members?: Prisma.MemberUpdateManyWithoutHouseNestedInput
invitations?: Prisma.InvitationUpdateManyWithoutHouseNestedInput
}
export type HouseUncheckedUpdateWithoutBoxesInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
slug?: Prisma.StringFieldUpdateOperationsInput | string
logo?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
metadata?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
members?: Prisma.MemberUncheckedUpdateManyWithoutHouseNestedInput
invitations?: Prisma.InvitationUncheckedUpdateManyWithoutHouseNestedInput
}
@@ -524,11 +624,13 @@ export type HouseUncheckedUpdateWithoutInvitationsInput = {
export type HouseCountOutputType = {
members: number
invitations: number
boxes: number
}
export type HouseCountOutputTypeSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
members?: boolean | HouseCountOutputTypeCountMembersArgs
invitations?: boolean | HouseCountOutputTypeCountInvitationsArgs
boxes?: boolean | HouseCountOutputTypeCountBoxesArgs
}
/**
@@ -555,6 +657,13 @@ export type HouseCountOutputTypeCountInvitationsArgs<ExtArgs extends runtime.Typ
where?: Prisma.InvitationWhereInput
}
/**
* HouseCountOutputType without action
*/
export type HouseCountOutputTypeCountBoxesArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
where?: Prisma.BoxWhereInput
}
export type HouseSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
@@ -566,6 +675,7 @@ export type HouseSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs =
color?: boolean
members?: boolean | Prisma.House$membersArgs<ExtArgs>
invitations?: boolean | Prisma.House$invitationsArgs<ExtArgs>
boxes?: boolean | Prisma.House$boxesArgs<ExtArgs>
_count?: boolean | Prisma.HouseCountOutputTypeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["house"]>
@@ -603,6 +713,7 @@ export type HouseOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = ru
export type HouseInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
members?: boolean | Prisma.House$membersArgs<ExtArgs>
invitations?: boolean | Prisma.House$invitationsArgs<ExtArgs>
boxes?: boolean | Prisma.House$boxesArgs<ExtArgs>
_count?: boolean | Prisma.HouseCountOutputTypeDefaultArgs<ExtArgs>
}
export type HouseIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {}
@@ -613,6 +724,7 @@ export type $HousePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs
objects: {
members: Prisma.$MemberPayload<ExtArgs>[]
invitations: Prisma.$InvitationPayload<ExtArgs>[]
boxes: Prisma.$BoxPayload<ExtArgs>[]
}
scalars: runtime.Types.Extensions.GetPayloadResult<{
id: string
@@ -1018,6 +1130,7 @@ export interface Prisma__HouseClient<T, Null = never, ExtArgs extends runtime.Ty
readonly [Symbol.toStringTag]: "PrismaPromise"
members<T extends Prisma.House$membersArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.House$membersArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$MemberPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
invitations<T extends Prisma.House$invitationsArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.House$invitationsArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$InvitationPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
boxes<T extends Prisma.House$boxesArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.House$boxesArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$BoxPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
@@ -1489,6 +1602,30 @@ export type House$invitationsArgs<ExtArgs extends runtime.Types.Extensions.Inter
distinct?: Prisma.InvitationScalarFieldEnum | Prisma.InvitationScalarFieldEnum[]
}
/**
* House.boxes
*/
export type House$boxesArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Box
*/
select?: Prisma.BoxSelect<ExtArgs> | null
/**
* Omit specific fields from the Box
*/
omit?: Prisma.BoxOmit<ExtArgs> | null
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.BoxInclude<ExtArgs> | null
where?: Prisma.BoxWhereInput
orderBy?: Prisma.BoxOrderByWithRelationInput | Prisma.BoxOrderByWithRelationInput[]
cursor?: Prisma.BoxWhereUniqueInput
take?: number
skip?: number
distinct?: Prisma.BoxScalarFieldEnum | Prisma.BoxScalarFieldEnum[]
}
/**
* House without action
*/

File diff suppressed because it is too large Load Diff

View File

@@ -236,6 +236,8 @@ export type UserWhereInput = {
notification?: Prisma.NotificationListRelationFilter
members?: Prisma.MemberListRelationFilter
invitations?: Prisma.InvitationListRelationFilter
boxes?: Prisma.BoxListRelationFilter
items?: Prisma.ItemListRelationFilter
}
export type UserOrderByWithRelationInput = {
@@ -256,6 +258,8 @@ export type UserOrderByWithRelationInput = {
notification?: Prisma.NotificationOrderByRelationAggregateInput
members?: Prisma.MemberOrderByRelationAggregateInput
invitations?: Prisma.InvitationOrderByRelationAggregateInput
boxes?: Prisma.BoxOrderByRelationAggregateInput
items?: Prisma.ItemOrderByRelationAggregateInput
}
export type UserWhereUniqueInput = Prisma.AtLeast<{
@@ -279,6 +283,8 @@ export type UserWhereUniqueInput = Prisma.AtLeast<{
notification?: Prisma.NotificationListRelationFilter
members?: Prisma.MemberListRelationFilter
invitations?: Prisma.InvitationListRelationFilter
boxes?: Prisma.BoxListRelationFilter
items?: Prisma.ItemListRelationFilter
}, "id" | "email">
export type UserOrderByWithAggregationInput = {
@@ -333,6 +339,8 @@ export type UserCreateInput = {
notification?: Prisma.NotificationCreateNestedManyWithoutUserInput
members?: Prisma.MemberCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxCreateNestedManyWithoutUserInput
items?: Prisma.ItemCreateNestedManyWithoutUserInput
}
export type UserUncheckedCreateInput = {
@@ -353,6 +361,8 @@ export type UserUncheckedCreateInput = {
notification?: Prisma.NotificationUncheckedCreateNestedManyWithoutUserInput
members?: Prisma.MemberUncheckedCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationUncheckedCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxUncheckedCreateNestedManyWithoutUserInput
items?: Prisma.ItemUncheckedCreateNestedManyWithoutUserInput
}
export type UserUpdateInput = {
@@ -373,6 +383,8 @@ export type UserUpdateInput = {
notification?: Prisma.NotificationUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUpdateManyWithoutUserNestedInput
}
export type UserUncheckedUpdateInput = {
@@ -393,6 +405,8 @@ export type UserUncheckedUpdateInput = {
notification?: Prisma.NotificationUncheckedUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUncheckedUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUncheckedUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUncheckedUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUncheckedUpdateManyWithoutUserNestedInput
}
export type UserCreateManyInput = {
@@ -592,6 +606,34 @@ export type UserUpdateOneRequiredWithoutNotificationNestedInput = {
update?: Prisma.XOR<Prisma.XOR<Prisma.UserUpdateToOneWithWhereWithoutNotificationInput, Prisma.UserUpdateWithoutNotificationInput>, Prisma.UserUncheckedUpdateWithoutNotificationInput>
}
export type UserCreateNestedOneWithoutBoxesInput = {
create?: Prisma.XOR<Prisma.UserCreateWithoutBoxesInput, Prisma.UserUncheckedCreateWithoutBoxesInput>
connectOrCreate?: Prisma.UserCreateOrConnectWithoutBoxesInput
connect?: Prisma.UserWhereUniqueInput
}
export type UserUpdateOneRequiredWithoutBoxesNestedInput = {
create?: Prisma.XOR<Prisma.UserCreateWithoutBoxesInput, Prisma.UserUncheckedCreateWithoutBoxesInput>
connectOrCreate?: Prisma.UserCreateOrConnectWithoutBoxesInput
upsert?: Prisma.UserUpsertWithoutBoxesInput
connect?: Prisma.UserWhereUniqueInput
update?: Prisma.XOR<Prisma.XOR<Prisma.UserUpdateToOneWithWhereWithoutBoxesInput, Prisma.UserUpdateWithoutBoxesInput>, Prisma.UserUncheckedUpdateWithoutBoxesInput>
}
export type UserCreateNestedOneWithoutItemsInput = {
create?: Prisma.XOR<Prisma.UserCreateWithoutItemsInput, Prisma.UserUncheckedCreateWithoutItemsInput>
connectOrCreate?: Prisma.UserCreateOrConnectWithoutItemsInput
connect?: Prisma.UserWhereUniqueInput
}
export type UserUpdateOneRequiredWithoutItemsNestedInput = {
create?: Prisma.XOR<Prisma.UserCreateWithoutItemsInput, Prisma.UserUncheckedCreateWithoutItemsInput>
connectOrCreate?: Prisma.UserCreateOrConnectWithoutItemsInput
upsert?: Prisma.UserUpsertWithoutItemsInput
connect?: Prisma.UserWhereUniqueInput
update?: Prisma.XOR<Prisma.XOR<Prisma.UserUpdateToOneWithWhereWithoutItemsInput, Prisma.UserUpdateWithoutItemsInput>, Prisma.UserUncheckedUpdateWithoutItemsInput>
}
export type UserCreateWithoutSessionsInput = {
id?: string
name: string
@@ -609,6 +651,8 @@ export type UserCreateWithoutSessionsInput = {
notification?: Prisma.NotificationCreateNestedManyWithoutUserInput
members?: Prisma.MemberCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxCreateNestedManyWithoutUserInput
items?: Prisma.ItemCreateNestedManyWithoutUserInput
}
export type UserUncheckedCreateWithoutSessionsInput = {
@@ -628,6 +672,8 @@ export type UserUncheckedCreateWithoutSessionsInput = {
notification?: Prisma.NotificationUncheckedCreateNestedManyWithoutUserInput
members?: Prisma.MemberUncheckedCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationUncheckedCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxUncheckedCreateNestedManyWithoutUserInput
items?: Prisma.ItemUncheckedCreateNestedManyWithoutUserInput
}
export type UserCreateOrConnectWithoutSessionsInput = {
@@ -663,6 +709,8 @@ export type UserUpdateWithoutSessionsInput = {
notification?: Prisma.NotificationUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUpdateManyWithoutUserNestedInput
}
export type UserUncheckedUpdateWithoutSessionsInput = {
@@ -682,6 +730,8 @@ export type UserUncheckedUpdateWithoutSessionsInput = {
notification?: Prisma.NotificationUncheckedUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUncheckedUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUncheckedUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUncheckedUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUncheckedUpdateManyWithoutUserNestedInput
}
export type UserCreateWithoutAccountsInput = {
@@ -701,6 +751,8 @@ export type UserCreateWithoutAccountsInput = {
notification?: Prisma.NotificationCreateNestedManyWithoutUserInput
members?: Prisma.MemberCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxCreateNestedManyWithoutUserInput
items?: Prisma.ItemCreateNestedManyWithoutUserInput
}
export type UserUncheckedCreateWithoutAccountsInput = {
@@ -720,6 +772,8 @@ export type UserUncheckedCreateWithoutAccountsInput = {
notification?: Prisma.NotificationUncheckedCreateNestedManyWithoutUserInput
members?: Prisma.MemberUncheckedCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationUncheckedCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxUncheckedCreateNestedManyWithoutUserInput
items?: Prisma.ItemUncheckedCreateNestedManyWithoutUserInput
}
export type UserCreateOrConnectWithoutAccountsInput = {
@@ -755,6 +809,8 @@ export type UserUpdateWithoutAccountsInput = {
notification?: Prisma.NotificationUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUpdateManyWithoutUserNestedInput
}
export type UserUncheckedUpdateWithoutAccountsInput = {
@@ -774,6 +830,8 @@ export type UserUncheckedUpdateWithoutAccountsInput = {
notification?: Prisma.NotificationUncheckedUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUncheckedUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUncheckedUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUncheckedUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUncheckedUpdateManyWithoutUserNestedInput
}
export type UserCreateWithoutMembersInput = {
@@ -793,6 +851,8 @@ export type UserCreateWithoutMembersInput = {
audit?: Prisma.AuditCreateNestedManyWithoutUserInput
notification?: Prisma.NotificationCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxCreateNestedManyWithoutUserInput
items?: Prisma.ItemCreateNestedManyWithoutUserInput
}
export type UserUncheckedCreateWithoutMembersInput = {
@@ -812,6 +872,8 @@ export type UserUncheckedCreateWithoutMembersInput = {
audit?: Prisma.AuditUncheckedCreateNestedManyWithoutUserInput
notification?: Prisma.NotificationUncheckedCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationUncheckedCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxUncheckedCreateNestedManyWithoutUserInput
items?: Prisma.ItemUncheckedCreateNestedManyWithoutUserInput
}
export type UserCreateOrConnectWithoutMembersInput = {
@@ -847,6 +909,8 @@ export type UserUpdateWithoutMembersInput = {
audit?: Prisma.AuditUpdateManyWithoutUserNestedInput
notification?: Prisma.NotificationUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUpdateManyWithoutUserNestedInput
}
export type UserUncheckedUpdateWithoutMembersInput = {
@@ -866,6 +930,8 @@ export type UserUncheckedUpdateWithoutMembersInput = {
audit?: Prisma.AuditUncheckedUpdateManyWithoutUserNestedInput
notification?: Prisma.NotificationUncheckedUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUncheckedUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUncheckedUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUncheckedUpdateManyWithoutUserNestedInput
}
export type UserCreateWithoutInvitationsInput = {
@@ -885,6 +951,8 @@ export type UserCreateWithoutInvitationsInput = {
audit?: Prisma.AuditCreateNestedManyWithoutUserInput
notification?: Prisma.NotificationCreateNestedManyWithoutUserInput
members?: Prisma.MemberCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxCreateNestedManyWithoutUserInput
items?: Prisma.ItemCreateNestedManyWithoutUserInput
}
export type UserUncheckedCreateWithoutInvitationsInput = {
@@ -904,6 +972,8 @@ export type UserUncheckedCreateWithoutInvitationsInput = {
audit?: Prisma.AuditUncheckedCreateNestedManyWithoutUserInput
notification?: Prisma.NotificationUncheckedCreateNestedManyWithoutUserInput
members?: Prisma.MemberUncheckedCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxUncheckedCreateNestedManyWithoutUserInput
items?: Prisma.ItemUncheckedCreateNestedManyWithoutUserInput
}
export type UserCreateOrConnectWithoutInvitationsInput = {
@@ -939,6 +1009,8 @@ export type UserUpdateWithoutInvitationsInput = {
audit?: Prisma.AuditUpdateManyWithoutUserNestedInput
notification?: Prisma.NotificationUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUpdateManyWithoutUserNestedInput
}
export type UserUncheckedUpdateWithoutInvitationsInput = {
@@ -958,6 +1030,8 @@ export type UserUncheckedUpdateWithoutInvitationsInput = {
audit?: Prisma.AuditUncheckedUpdateManyWithoutUserNestedInput
notification?: Prisma.NotificationUncheckedUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUncheckedUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUncheckedUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUncheckedUpdateManyWithoutUserNestedInput
}
export type UserCreateWithoutAuditInput = {
@@ -977,6 +1051,8 @@ export type UserCreateWithoutAuditInput = {
notification?: Prisma.NotificationCreateNestedManyWithoutUserInput
members?: Prisma.MemberCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxCreateNestedManyWithoutUserInput
items?: Prisma.ItemCreateNestedManyWithoutUserInput
}
export type UserUncheckedCreateWithoutAuditInput = {
@@ -996,6 +1072,8 @@ export type UserUncheckedCreateWithoutAuditInput = {
notification?: Prisma.NotificationUncheckedCreateNestedManyWithoutUserInput
members?: Prisma.MemberUncheckedCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationUncheckedCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxUncheckedCreateNestedManyWithoutUserInput
items?: Prisma.ItemUncheckedCreateNestedManyWithoutUserInput
}
export type UserCreateOrConnectWithoutAuditInput = {
@@ -1031,6 +1109,8 @@ export type UserUpdateWithoutAuditInput = {
notification?: Prisma.NotificationUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUpdateManyWithoutUserNestedInput
}
export type UserUncheckedUpdateWithoutAuditInput = {
@@ -1050,6 +1130,8 @@ export type UserUncheckedUpdateWithoutAuditInput = {
notification?: Prisma.NotificationUncheckedUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUncheckedUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUncheckedUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUncheckedUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUncheckedUpdateManyWithoutUserNestedInput
}
export type UserCreateWithoutNotificationInput = {
@@ -1069,6 +1151,8 @@ export type UserCreateWithoutNotificationInput = {
audit?: Prisma.AuditCreateNestedManyWithoutUserInput
members?: Prisma.MemberCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxCreateNestedManyWithoutUserInput
items?: Prisma.ItemCreateNestedManyWithoutUserInput
}
export type UserUncheckedCreateWithoutNotificationInput = {
@@ -1088,6 +1172,8 @@ export type UserUncheckedCreateWithoutNotificationInput = {
audit?: Prisma.AuditUncheckedCreateNestedManyWithoutUserInput
members?: Prisma.MemberUncheckedCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationUncheckedCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxUncheckedCreateNestedManyWithoutUserInput
items?: Prisma.ItemUncheckedCreateNestedManyWithoutUserInput
}
export type UserCreateOrConnectWithoutNotificationInput = {
@@ -1123,6 +1209,8 @@ export type UserUpdateWithoutNotificationInput = {
audit?: Prisma.AuditUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUpdateManyWithoutUserNestedInput
}
export type UserUncheckedUpdateWithoutNotificationInput = {
@@ -1142,6 +1230,208 @@ export type UserUncheckedUpdateWithoutNotificationInput = {
audit?: Prisma.AuditUncheckedUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUncheckedUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUncheckedUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUncheckedUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUncheckedUpdateManyWithoutUserNestedInput
}
export type UserCreateWithoutBoxesInput = {
id?: string
name: string
email: string
emailVerified?: boolean
image?: string | null
createdAt?: Date | string
updatedAt?: Date | string
role?: string | null
banned?: boolean | null
banReason?: string | null
banExpires?: Date | string | null
sessions?: Prisma.SessionCreateNestedManyWithoutUserInput
accounts?: Prisma.AccountCreateNestedManyWithoutUserInput
audit?: Prisma.AuditCreateNestedManyWithoutUserInput
notification?: Prisma.NotificationCreateNestedManyWithoutUserInput
members?: Prisma.MemberCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationCreateNestedManyWithoutUserInput
items?: Prisma.ItemCreateNestedManyWithoutUserInput
}
export type UserUncheckedCreateWithoutBoxesInput = {
id?: string
name: string
email: string
emailVerified?: boolean
image?: string | null
createdAt?: Date | string
updatedAt?: Date | string
role?: string | null
banned?: boolean | null
banReason?: string | null
banExpires?: Date | string | null
sessions?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput
accounts?: Prisma.AccountUncheckedCreateNestedManyWithoutUserInput
audit?: Prisma.AuditUncheckedCreateNestedManyWithoutUserInput
notification?: Prisma.NotificationUncheckedCreateNestedManyWithoutUserInput
members?: Prisma.MemberUncheckedCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationUncheckedCreateNestedManyWithoutUserInput
items?: Prisma.ItemUncheckedCreateNestedManyWithoutUserInput
}
export type UserCreateOrConnectWithoutBoxesInput = {
where: Prisma.UserWhereUniqueInput
create: Prisma.XOR<Prisma.UserCreateWithoutBoxesInput, Prisma.UserUncheckedCreateWithoutBoxesInput>
}
export type UserUpsertWithoutBoxesInput = {
update: Prisma.XOR<Prisma.UserUpdateWithoutBoxesInput, Prisma.UserUncheckedUpdateWithoutBoxesInput>
create: Prisma.XOR<Prisma.UserCreateWithoutBoxesInput, Prisma.UserUncheckedCreateWithoutBoxesInput>
where?: Prisma.UserWhereInput
}
export type UserUpdateToOneWithWhereWithoutBoxesInput = {
where?: Prisma.UserWhereInput
data: Prisma.XOR<Prisma.UserUpdateWithoutBoxesInput, Prisma.UserUncheckedUpdateWithoutBoxesInput>
}
export type UserUpdateWithoutBoxesInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
role?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
banned?: Prisma.NullableBoolFieldUpdateOperationsInput | boolean | null
banReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
banExpires?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
sessions?: Prisma.SessionUpdateManyWithoutUserNestedInput
accounts?: Prisma.AccountUpdateManyWithoutUserNestedInput
audit?: Prisma.AuditUpdateManyWithoutUserNestedInput
notification?: Prisma.NotificationUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUpdateManyWithoutUserNestedInput
}
export type UserUncheckedUpdateWithoutBoxesInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
role?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
banned?: Prisma.NullableBoolFieldUpdateOperationsInput | boolean | null
banReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
banExpires?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
sessions?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput
accounts?: Prisma.AccountUncheckedUpdateManyWithoutUserNestedInput
audit?: Prisma.AuditUncheckedUpdateManyWithoutUserNestedInput
notification?: Prisma.NotificationUncheckedUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUncheckedUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUncheckedUpdateManyWithoutUserNestedInput
items?: Prisma.ItemUncheckedUpdateManyWithoutUserNestedInput
}
export type UserCreateWithoutItemsInput = {
id?: string
name: string
email: string
emailVerified?: boolean
image?: string | null
createdAt?: Date | string
updatedAt?: Date | string
role?: string | null
banned?: boolean | null
banReason?: string | null
banExpires?: Date | string | null
sessions?: Prisma.SessionCreateNestedManyWithoutUserInput
accounts?: Prisma.AccountCreateNestedManyWithoutUserInput
audit?: Prisma.AuditCreateNestedManyWithoutUserInput
notification?: Prisma.NotificationCreateNestedManyWithoutUserInput
members?: Prisma.MemberCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxCreateNestedManyWithoutUserInput
}
export type UserUncheckedCreateWithoutItemsInput = {
id?: string
name: string
email: string
emailVerified?: boolean
image?: string | null
createdAt?: Date | string
updatedAt?: Date | string
role?: string | null
banned?: boolean | null
banReason?: string | null
banExpires?: Date | string | null
sessions?: Prisma.SessionUncheckedCreateNestedManyWithoutUserInput
accounts?: Prisma.AccountUncheckedCreateNestedManyWithoutUserInput
audit?: Prisma.AuditUncheckedCreateNestedManyWithoutUserInput
notification?: Prisma.NotificationUncheckedCreateNestedManyWithoutUserInput
members?: Prisma.MemberUncheckedCreateNestedManyWithoutUserInput
invitations?: Prisma.InvitationUncheckedCreateNestedManyWithoutUserInput
boxes?: Prisma.BoxUncheckedCreateNestedManyWithoutUserInput
}
export type UserCreateOrConnectWithoutItemsInput = {
where: Prisma.UserWhereUniqueInput
create: Prisma.XOR<Prisma.UserCreateWithoutItemsInput, Prisma.UserUncheckedCreateWithoutItemsInput>
}
export type UserUpsertWithoutItemsInput = {
update: Prisma.XOR<Prisma.UserUpdateWithoutItemsInput, Prisma.UserUncheckedUpdateWithoutItemsInput>
create: Prisma.XOR<Prisma.UserCreateWithoutItemsInput, Prisma.UserUncheckedCreateWithoutItemsInput>
where?: Prisma.UserWhereInput
}
export type UserUpdateToOneWithWhereWithoutItemsInput = {
where?: Prisma.UserWhereInput
data: Prisma.XOR<Prisma.UserUpdateWithoutItemsInput, Prisma.UserUncheckedUpdateWithoutItemsInput>
}
export type UserUpdateWithoutItemsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
role?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
banned?: Prisma.NullableBoolFieldUpdateOperationsInput | boolean | null
banReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
banExpires?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
sessions?: Prisma.SessionUpdateManyWithoutUserNestedInput
accounts?: Prisma.AccountUpdateManyWithoutUserNestedInput
audit?: Prisma.AuditUpdateManyWithoutUserNestedInput
notification?: Prisma.NotificationUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUpdateManyWithoutUserNestedInput
}
export type UserUncheckedUpdateWithoutItemsInput = {
id?: Prisma.StringFieldUpdateOperationsInput | string
name?: Prisma.StringFieldUpdateOperationsInput | string
email?: Prisma.StringFieldUpdateOperationsInput | string
emailVerified?: Prisma.BoolFieldUpdateOperationsInput | boolean
image?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
role?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
banned?: Prisma.NullableBoolFieldUpdateOperationsInput | boolean | null
banReason?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
banExpires?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
sessions?: Prisma.SessionUncheckedUpdateManyWithoutUserNestedInput
accounts?: Prisma.AccountUncheckedUpdateManyWithoutUserNestedInput
audit?: Prisma.AuditUncheckedUpdateManyWithoutUserNestedInput
notification?: Prisma.NotificationUncheckedUpdateManyWithoutUserNestedInput
members?: Prisma.MemberUncheckedUpdateManyWithoutUserNestedInput
invitations?: Prisma.InvitationUncheckedUpdateManyWithoutUserNestedInput
boxes?: Prisma.BoxUncheckedUpdateManyWithoutUserNestedInput
}
@@ -1156,6 +1446,8 @@ export type UserCountOutputType = {
notification: number
members: number
invitations: number
boxes: number
items: number
}
export type UserCountOutputTypeSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
@@ -1165,6 +1457,8 @@ export type UserCountOutputTypeSelect<ExtArgs extends runtime.Types.Extensions.I
notification?: boolean | UserCountOutputTypeCountNotificationArgs
members?: boolean | UserCountOutputTypeCountMembersArgs
invitations?: boolean | UserCountOutputTypeCountInvitationsArgs
boxes?: boolean | UserCountOutputTypeCountBoxesArgs
items?: boolean | UserCountOutputTypeCountItemsArgs
}
/**
@@ -1219,6 +1513,20 @@ export type UserCountOutputTypeCountInvitationsArgs<ExtArgs extends runtime.Type
where?: Prisma.InvitationWhereInput
}
/**
* UserCountOutputType without action
*/
export type UserCountOutputTypeCountBoxesArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
where?: Prisma.BoxWhereInput
}
/**
* UserCountOutputType without action
*/
export type UserCountOutputTypeCountItemsArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
where?: Prisma.ItemWhereInput
}
export type UserSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
@@ -1238,6 +1546,8 @@ export type UserSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = r
notification?: boolean | Prisma.User$notificationArgs<ExtArgs>
members?: boolean | Prisma.User$membersArgs<ExtArgs>
invitations?: boolean | Prisma.User$invitationsArgs<ExtArgs>
boxes?: boolean | Prisma.User$boxesArgs<ExtArgs>
items?: boolean | Prisma.User$itemsArgs<ExtArgs>
_count?: boolean | Prisma.UserCountOutputTypeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["user"]>
@@ -1291,6 +1601,8 @@ export type UserInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs =
notification?: boolean | Prisma.User$notificationArgs<ExtArgs>
members?: boolean | Prisma.User$membersArgs<ExtArgs>
invitations?: boolean | Prisma.User$invitationsArgs<ExtArgs>
boxes?: boolean | Prisma.User$boxesArgs<ExtArgs>
items?: boolean | Prisma.User$itemsArgs<ExtArgs>
_count?: boolean | Prisma.UserCountOutputTypeDefaultArgs<ExtArgs>
}
export type UserIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {}
@@ -1305,6 +1617,8 @@ export type $UserPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs =
notification: Prisma.$NotificationPayload<ExtArgs>[]
members: Prisma.$MemberPayload<ExtArgs>[]
invitations: Prisma.$InvitationPayload<ExtArgs>[]
boxes: Prisma.$BoxPayload<ExtArgs>[]
items: Prisma.$ItemPayload<ExtArgs>[]
}
scalars: runtime.Types.Extensions.GetPayloadResult<{
id: string
@@ -1718,6 +2032,8 @@ export interface Prisma__UserClient<T, Null = never, ExtArgs extends runtime.Typ
notification<T extends Prisma.User$notificationArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.User$notificationArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$NotificationPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
members<T extends Prisma.User$membersArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.User$membersArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$MemberPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
invitations<T extends Prisma.User$invitationsArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.User$invitationsArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$InvitationPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
boxes<T extends Prisma.User$boxesArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.User$boxesArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$BoxPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
items<T extends Prisma.User$itemsArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.User$itemsArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ItemPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
@@ -2289,6 +2605,54 @@ export type User$invitationsArgs<ExtArgs extends runtime.Types.Extensions.Intern
distinct?: Prisma.InvitationScalarFieldEnum | Prisma.InvitationScalarFieldEnum[]
}
/**
* User.boxes
*/
export type User$boxesArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Box
*/
select?: Prisma.BoxSelect<ExtArgs> | null
/**
* Omit specific fields from the Box
*/
omit?: Prisma.BoxOmit<ExtArgs> | null
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.BoxInclude<ExtArgs> | null
where?: Prisma.BoxWhereInput
orderBy?: Prisma.BoxOrderByWithRelationInput | Prisma.BoxOrderByWithRelationInput[]
cursor?: Prisma.BoxWhereUniqueInput
take?: number
skip?: number
distinct?: Prisma.BoxScalarFieldEnum | Prisma.BoxScalarFieldEnum[]
}
/**
* User.items
*/
export type User$itemsArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the Item
*/
select?: Prisma.ItemSelect<ExtArgs> | null
/**
* Omit specific fields from the Item
*/
omit?: Prisma.ItemOmit<ExtArgs> | null
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.ItemInclude<ExtArgs> | null
where?: Prisma.ItemWhereInput
orderBy?: Prisma.ItemOrderByWithRelationInput | Prisma.ItemOrderByWithRelationInput[]
cursor?: Prisma.ItemWhereUniqueInput
take?: number
skip?: number
distinct?: Prisma.ItemScalarFieldEnum | Prisma.ItemScalarFieldEnum[]
}
/**
* User without action
*/

View File

@@ -28,6 +28,7 @@ import { Route as appauthKanriUsersRouteImport } from './routes/(app)/(auth)/kan
import { Route as appauthKanriSettingsRouteImport } from './routes/(app)/(auth)/kanri/settings'
import { Route as appauthKanriLogsRouteImport } from './routes/(app)/(auth)/kanri/logs'
import { Route as appauthKanriHousesRouteImport } from './routes/(app)/(auth)/kanri/houses'
import { Route as appauthKanriBoxesRouteImport } from './routes/(app)/(auth)/kanri/boxes'
import { Route as appauthAccountSettingsRouteImport } from './routes/(app)/(auth)/account/settings'
import { Route as appauthAccountProfileRouteImport } from './routes/(app)/(auth)/account/profile'
import { Route as appauthAccountChangePasswordRouteImport } from './routes/(app)/(auth)/account/change-password'
@@ -127,6 +128,11 @@ const appauthKanriHousesRoute = appauthKanriHousesRouteImport.update({
path: '/houses',
getParentRoute: () => appauthKanriRouteRoute,
} as any)
const appauthKanriBoxesRoute = appauthKanriBoxesRouteImport.update({
id: '/boxes',
path: '/boxes',
getParentRoute: () => appauthKanriRouteRoute,
} as any)
const appauthAccountSettingsRoute = appauthAccountSettingsRouteImport.update({
id: '/settings',
path: '/settings',
@@ -155,6 +161,7 @@ export interface FileRoutesByFullPath {
'/account/change-password': typeof appauthAccountChangePasswordRoute
'/account/profile': typeof appauthAccountProfileRoute
'/account/settings': typeof appauthAccountSettingsRoute
'/kanri/boxes': typeof appauthKanriBoxesRoute
'/kanri/houses': typeof appauthKanriHousesRoute
'/kanri/logs': typeof appauthKanriLogsRoute
'/kanri/settings': typeof appauthKanriSettingsRoute
@@ -174,6 +181,7 @@ export interface FileRoutesByTo {
'/account/change-password': typeof appauthAccountChangePasswordRoute
'/account/profile': typeof appauthAccountProfileRoute
'/account/settings': typeof appauthAccountSettingsRoute
'/kanri/boxes': typeof appauthKanriBoxesRoute
'/kanri/houses': typeof appauthKanriHousesRoute
'/kanri/logs': typeof appauthKanriLogsRoute
'/kanri/settings': typeof appauthKanriSettingsRoute
@@ -199,6 +207,7 @@ export interface FileRoutesById {
'/(app)/(auth)/account/change-password': typeof appauthAccountChangePasswordRoute
'/(app)/(auth)/account/profile': typeof appauthAccountProfileRoute
'/(app)/(auth)/account/settings': typeof appauthAccountSettingsRoute
'/(app)/(auth)/kanri/boxes': typeof appauthKanriBoxesRoute
'/(app)/(auth)/kanri/houses': typeof appauthKanriHousesRoute
'/(app)/(auth)/kanri/logs': typeof appauthKanriLogsRoute
'/(app)/(auth)/kanri/settings': typeof appauthKanriSettingsRoute
@@ -223,6 +232,7 @@ export interface FileRouteTypes {
| '/account/change-password'
| '/account/profile'
| '/account/settings'
| '/kanri/boxes'
| '/kanri/houses'
| '/kanri/logs'
| '/kanri/settings'
@@ -242,6 +252,7 @@ export interface FileRouteTypes {
| '/account/change-password'
| '/account/profile'
| '/account/settings'
| '/kanri/boxes'
| '/kanri/houses'
| '/kanri/logs'
| '/kanri/settings'
@@ -266,6 +277,7 @@ export interface FileRouteTypes {
| '/(app)/(auth)/account/change-password'
| '/(app)/(auth)/account/profile'
| '/(app)/(auth)/account/settings'
| '/(app)/(auth)/kanri/boxes'
| '/(app)/(auth)/kanri/houses'
| '/(app)/(auth)/kanri/logs'
| '/(app)/(auth)/kanri/settings'
@@ -420,6 +432,13 @@ declare module '@tanstack/react-router' {
preLoaderRoute: typeof appauthKanriHousesRouteImport
parentRoute: typeof appauthKanriRouteRoute
}
'/(app)/(auth)/kanri/boxes': {
id: '/(app)/(auth)/kanri/boxes'
path: '/boxes'
fullPath: '/kanri/boxes'
preLoaderRoute: typeof appauthKanriBoxesRouteImport
parentRoute: typeof appauthKanriRouteRoute
}
'/(app)/(auth)/account/settings': {
id: '/(app)/(auth)/account/settings'
path: '/settings'
@@ -462,6 +481,7 @@ const appauthAccountRouteRouteWithChildren =
appauthAccountRouteRoute._addFileChildren(appauthAccountRouteRouteChildren)
interface appauthKanriRouteRouteChildren {
appauthKanriBoxesRoute: typeof appauthKanriBoxesRoute
appauthKanriHousesRoute: typeof appauthKanriHousesRoute
appauthKanriLogsRoute: typeof appauthKanriLogsRoute
appauthKanriSettingsRoute: typeof appauthKanriSettingsRoute
@@ -470,6 +490,7 @@ interface appauthKanriRouteRouteChildren {
}
const appauthKanriRouteRouteChildren: appauthKanriRouteRouteChildren = {
appauthKanriBoxesRoute: appauthKanriBoxesRoute,
appauthKanriHousesRoute: appauthKanriHousesRoute,
appauthKanriLogsRoute: appauthKanriLogsRoute,
appauthKanriSettingsRoute: appauthKanriSettingsRoute,

View File

@@ -0,0 +1,48 @@
import SearchInput from '@/components/ui/search-input';
import useDebounced from '@/hooks/use-debounced';
import { m } from '@/paraglide/messages';
import { PackageIcon } from '@phosphor-icons/react';
import { createFileRoute } from '@tanstack/react-router';
import { Card, CardContent, CardHeader, CardTitle } from '@ui/card';
import { useState } from 'react';
export const Route = createFileRoute('/(app)/(auth)/kanri/boxes')({
component: RouteComponent,
staticData: { breadcrumb: () => m.nav_boxes() },
});
function RouteComponent() {
const [page, setPage] = useState(1);
const [pageLimit, setPageLimit] = useState(10);
const [searchKeyword, setSearchKeyword] = useState('');
const debouncedSearch = useDebounced(searchKeyword, 500);
const onSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {
setSearchKeyword(e.target.value);
setPage(1);
};
return (
<div className="@container/main flex flex-1 flex-col gap-2 p-4">
<div className="*:data-[slot=card]:from-primary/5 *:data-[slot=card]:to-card dark:*:data-[slot=card]:bg-card *:data-[slot=card]:bg-linear-to-br *:data-[slot=card]:shadow-xs">
<Card>
<CardHeader>
<CardTitle className="text-xl flex items-center gap-2">
<PackageIcon size={24} />
{m.boxes_pages_ui_title()}
</CardTitle>
</CardHeader>
<CardContent className="flex flex-col gap-4">
<div className="flex items-center justify-between gap-2">
<SearchInput
keywords={searchKeyword}
setKeyword={setSearchKeyword}
onChange={onSearchChange}
/>
</div>
</CardContent>
</Card>
</div>
</div>
);
}

View File

@@ -1,4 +1,3 @@
import { AppError } from '@/lib/errors';
import fs, { writeFile } from 'fs/promises';
import path from 'path';
@@ -20,10 +19,8 @@ export async function saveFile(key: string, file: Buffer | File) {
return key;
} catch (error) {
console.error(`Error saving file: ${key}`, error);
throw new AppError(
'FILE_SAVE_ERROR',
throw new Error(
`Failed to save file: ${error instanceof Error ? error.message : 'Unknown error'}`,
500,
);
}
}

View File

@@ -3,5 +3,6 @@ import '@tanstack/react-table';
declare module '@tanstack/react-table' {
interface ColumnMeta<TData, TValue> {
thClass?: string;
mLabel?: string;
}
}