fix
Build Project / build (push) Successful in 31s

This commit is contained in:
Kevin
2026-06-28 11:37:12 +02:00
parent b217b33c2d
commit 9cb4909481
12 changed files with 89 additions and 89 deletions
+3 -9
View File
@@ -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
+6 -1
View File
@@ -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')
}
+2 -2
View File
@@ -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,
+10
View File
@@ -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])$/),
})
)
+14
View File
@@ -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({})),
})
)
+14
View File
@@ -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({})),
})
)
+2 -3
View File
@@ -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
-70
View File
@@ -1,70 +0,0 @@
<script setup lang="ts">
import { watch } from 'vue'
import { usePage } from '@inertiajs/vue3'
import { toast, Toaster } from 'vue-sonner'
import type { Data } from '@generated/data'
import { Link, Form } from '@adonisjs/inertia/vue'
const page = usePage<Data.SharedProps>()
watch(
() => page.url,
() => toast.dismiss()
)
watch(
() => page.props.flash,
(flashMessages) => {
if (flashMessages.error) {
toast.error(flashMessages.error)
}
if (flashMessages.success) {
toast.success(flashMessages.success)
}
},
{ immediate: true }
)
</script>
<template>
<header>
<div>
<div>
<Link route="home">
<svg
width="66"
height="24"
viewBox="0 0 105 38"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<path
d="M0 0h7.5v15H0ZM7.5 15h7.5v15H7.5ZM15 30h7.5v7.5H15ZM22.5 15h7.5v15H22.5ZM30 0h7.5v15H30ZM45 0h7.5v30h15v-30h7.5v37.5h-30v-37.5ZM82.5 37.5V0H105v7.5H90V15h15v7.5H90V30h15v7.5H82.5Z"
fill="currentColor"
/>
</svg>
</Link>
</div>
<div>
<nav>
<template v-if="page.props.user">
<span>{{ page.props.user.initials }}</span>
<Form route="session.destroy">
<button type="submit">Logout</button>
</Form>
</template>
<template v-else>
<Link route="new_account.create">Signup</Link>
<Link route="session.create">Login</Link>
</template>
</nav>
</div>
</div>
</header>
<main>
<slot />
</main>
<Toaster position="top-center" rich-colors />
</template>
+21
View File
@@ -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",
+3
View File
@@ -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"
+2 -4
View File
@@ -1,8 +1,6 @@
{
"extends": "@adonisjs/tsconfig/tsconfig.app.json",
"compilerOptions": {
"rootDir": "./",
"outDir": "./build"
},
"references": [{ "path": "./tsconfig.inertia.json" }]
"outDir": "build"
}
}
+12
View File
@@ -0,0 +1,12 @@
interface ServerImage {
id: number
link: string
order: number
}
interface NewImage {
file: File
order: number
}
export type Image = ServerImage | NewImage