From 9cb490948191855956c3a21a109f81fd99013b65 Mon Sep 17 00:00:00 2001 From: Kevin Date: Sun, 28 Jun 2026 11:37:12 +0200 Subject: [PATCH] fix --- .gitea/workflows/build.yml | 12 +--- app/controllers/components_controller.ts | 7 ++- app/transformers/user_transformer.ts | 4 +- app/validators/Components/update.ts | 10 ++++ app/validators/Computers/store.ts | 14 +++++ app/validators/Computers/update.ts | 14 +++++ inertia/app.ts | 5 +- inertia/layouts/default.vue | 70 ------------------------ package-lock.json | 21 +++++++ package.json | 3 + tsconfig.json | 6 +- types/UItypes.ts | 12 ++++ 12 files changed, 89 insertions(+), 89 deletions(-) create mode 100644 app/validators/Components/update.ts create mode 100644 app/validators/Computers/store.ts create mode 100644 app/validators/Computers/update.ts delete mode 100644 inertia/layouts/default.vue create mode 100644 types/UItypes.ts diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index cd98dd3..353f3fd 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -11,15 +11,9 @@ jobs: container: node:24 # Utilise l'image officielle Node.js 24 steps: - name: Checkout repository - run: | - git config --global advice.detachedHead false - git checkout -- . - git submodule update --init --recursive - - - name: Setup Node.js - run: | - curl -fsSL https://deb.nodesource.com/setup_24.x | bash - - apt-get install -y nodejs + uses: actions/checkout@v4 # Action Gitea pour checkout + with: + fetch-depth: 0 - name: Install dependencies run: npm ci diff --git a/app/controllers/components_controller.ts b/app/controllers/components_controller.ts index a17f2dd..44126b9 100644 --- a/app/controllers/components_controller.ts +++ b/app/controllers/components_controller.ts @@ -1,4 +1,5 @@ import type { HttpContext } from '@adonisjs/core/http' +import { DateTime } from 'luxon' import { storeComponentValidator } from '#validators/Components/store' import { updateComponentValidator } from '#validators/Components/update' import Component from '#models/component' @@ -26,6 +27,7 @@ export default class ComponentsController { for (let i = 0; i < quantity; i++) { await Component.create({ ...componentData, + purchaseDate: DateTime.fromFormat(componentData.purchaseDate, 'yyyy-MM-dd'), userId: user.id, }) } @@ -63,7 +65,10 @@ export default class ComponentsController { .where('userId', user.id) .andWhere('id', params.id) .firstOrFail() - component.merge(componentData) + component.merge({ + ...componentData, + purchaseDate: DateTime.fromFormat(componentData.purchaseDate, 'yyyy-MM-dd'), + }) await component.save() return response.redirect('/components') } diff --git a/app/transformers/user_transformer.ts b/app/transformers/user_transformer.ts index b645919..61e1265 100644 --- a/app/transformers/user_transformer.ts +++ b/app/transformers/user_transformer.ts @@ -1,9 +1,9 @@ -import { BaseModel } from '@adonisjs/lucid/orm' +import type User from '#models/user' export default class UserTransformer { static exclude = ['password'] - transform(user: BaseModel) { + static transform(user: typeof User.prototype) { return { id: user.id, name: user.name, diff --git a/app/validators/Components/update.ts b/app/validators/Components/update.ts new file mode 100644 index 0000000..4b49771 --- /dev/null +++ b/app/validators/Components/update.ts @@ -0,0 +1,10 @@ +import vine from '@vinejs/vine' + +export const updateComponentValidator = vine.compile( + vine.object({ + name: vine.string().trim().minLength(1), + price: vine.number().decimal([0, 2]).min(0), + typeId: vine.number().min(1), + purchaseDate: vine.string().regex(/^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/), + }) +) diff --git a/app/validators/Computers/store.ts b/app/validators/Computers/store.ts new file mode 100644 index 0000000..1cb3b31 --- /dev/null +++ b/app/validators/Computers/store.ts @@ -0,0 +1,14 @@ +import vine from '@vinejs/vine' + +export const storeComputerValidator = vine.compile( + vine.object({ + title: vine.string().trim().minLength(1), + sellPrice: vine.number().decimal([0, 2]).min(0), + gpuScore: vine.number().min(0), + cpuScore: vine.number().min(0), + globalScore: vine.number().min(0), + stateId: vine.number().min(1), + componentsId: vine.array(vine.number()), + pictures: vine.array(vine.object({})), + }) +) diff --git a/app/validators/Computers/update.ts b/app/validators/Computers/update.ts new file mode 100644 index 0000000..3fb8113 --- /dev/null +++ b/app/validators/Computers/update.ts @@ -0,0 +1,14 @@ +import vine from '@vinejs/vine' + +export const updateComputerValidator = vine.compile( + vine.object({ + title: vine.string().trim().minLength(1), + sellPrice: vine.number().decimal([0, 2]).min(0), + gpuScore: vine.number().min(0), + cpuScore: vine.number().min(0), + globalScore: vine.number().min(0), + stateId: vine.number().min(1), + componentsId: vine.array(vine.number()), + pictures: vine.array(vine.object({})), + }) +) diff --git a/inertia/app.ts b/inertia/app.ts index e542ca7..a7c532c 100644 --- a/inertia/app.ts +++ b/inertia/app.ts @@ -1,14 +1,13 @@ import './css/app.css' import 'vue-sonner/style.css' import { client } from '~/client' -import Layout from '~/layouts/default.vue' import { createInertiaApp } from '@inertiajs/vue3' import { TuyauProvider } from '@adonisjs/inertia/vue' import { createApp, type DefineComponent, h } from 'vue' import { resolvePageComponent } from '@adonisjs/inertia/helpers' -import DefaultLayout from '~/pages/layout/defaultLayout.vue' -import EmptyLayout from '~/pages/layout/emptyLayout.vue' +import DefaultLayout from './pages/layout/defaultLayout.vue' +import EmptyLayout from './pages/layout/emptyLayout.vue' // directives // @ts-ignore diff --git a/inertia/layouts/default.vue b/inertia/layouts/default.vue deleted file mode 100644 index b0749b1..0000000 --- a/inertia/layouts/default.vue +++ /dev/null @@ -1,70 +0,0 @@ - - - diff --git a/package-lock.json b/package-lock.json index 060752a..0fad267 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "@adonisjs/vite": "^5.1.1", "@inertiajs/vue3": "^2.3.24", "@tuyau/core": "^1.2.2", + "@types/uuid": "^10.0.0", "@vinejs/vine": "^4.4.0", "@vue/server-renderer": "^3.5.35", "@vuepic/vue-datepicker": "^13.0.0", @@ -28,6 +29,7 @@ "luxon": "^3.7.2", "mysql2": "^3.22.4", "reflect-metadata": "^0.2.2", + "uuid": "^14.0.1", "vue": "^3.5.35", "vue-sonner": "^2.0.9", "vue3-carousel": "^0.17.0" @@ -3115,6 +3117,12 @@ "integrity": "sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==", "license": "MIT" }, + "node_modules/@types/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", + "license": "MIT" + }, "node_modules/@types/validator": { "version": "13.15.10", "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.15.10.tgz", @@ -9679,6 +9687,19 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, + "node_modules/uuid": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-14.0.1.tgz", + "integrity": "sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist-node/bin/uuid" + } + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", diff --git a/package.json b/package.json index 6cd95a4..e5bc6db 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "#generated/*": "./.adonisjs/server/*.js", "#middleware/*": "./app/middleware/*.js", "#transformers/*": "./app/transformers/*.js", + "#types/*": "./types/*.js", "#validators/*": "./app/validators/*.js", "#providers/*": "./providers/*.js", "#policies/*": "./app/policies/*.js", @@ -74,6 +75,7 @@ "@adonisjs/vite": "^5.1.1", "@inertiajs/vue3": "^2.3.24", "@tuyau/core": "^1.2.2", + "@types/uuid": "^10.0.0", "@vinejs/vine": "^4.4.0", "@vue/server-renderer": "^3.5.35", "@vuepic/vue-datepicker": "^13.0.0", @@ -82,6 +84,7 @@ "luxon": "^3.7.2", "mysql2": "^3.22.4", "reflect-metadata": "^0.2.2", + "uuid": "^14.0.1", "vue": "^3.5.35", "vue-sonner": "^2.0.9", "vue3-carousel": "^0.17.0" diff --git a/tsconfig.json b/tsconfig.json index 32a388d..4039e79 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,8 +1,6 @@ { "extends": "@adonisjs/tsconfig/tsconfig.app.json", "compilerOptions": { - "rootDir": "./", - "outDir": "./build" - }, - "references": [{ "path": "./tsconfig.inertia.json" }] + "outDir": "build" + } } diff --git a/types/UItypes.ts b/types/UItypes.ts new file mode 100644 index 0000000..9c29d6e --- /dev/null +++ b/types/UItypes.ts @@ -0,0 +1,12 @@ +interface ServerImage { + id: number + link: string + order: number +} + +interface NewImage { + file: File + order: number +} + +export type Image = ServerImage | NewImage