Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
9ed8943
Added members controller and seeder + factories
Apr 13, 2026
12ead87
Corrected lint and typecheck
Apr 13, 2026
105b54f
Ran prettier --write for the files
Apr 13, 2026
84c4069
Prettier members_controller.ts
Apr 13, 2026
7934ef2
feat(categories): add controller
Apr 14, 2026
2b1ab42
Runned prettier
Apr 14, 2026
a83d788
Added furniture controller
Apr 14, 2026
480229e
Added Products and relation to furniture
Apr 14, 2026
f650ed4
Added goods (not product associated)
Apr 14, 2026
4685b48
Fixed category_id problem beeing null
Apr 15, 2026
4380583
Fixed 0n relationships between goods, products and furnitures
Apr 15, 2026
a386e61
Fixed linter naming
Apr 15, 2026
9cf1495
Added basic supplier CRUD
Apr 15, 2026
5a2f232
Added relation between good and supplier
Apr 15, 2026
99615ee
Fixed relation between good and supplier
Apr 15, 2026
8c57d31
Added restock
Apr 15, 2026
bc93ee0
Added restock files
Apr 15, 2026
b71f34f
Fixed member - user relationship
Apr 15, 2026
a6ad878
Added stock-movement and stock-batch
Apr 15, 2026
9e76ba5
Added logs
Apr 15, 2026
bd1c958
Added roles
Apr 16, 2026
f6b4dae
Added permission files and unique choices from seeder
Apr 16, 2026
700ea43
Added role_permission seeder (not functional)
Apr 16, 2026
91af891
Fixed warnings
Apr 16, 2026
9c30519
Added fast-passes
Apr 16, 2026
53601b2
Added subscription
Apr 16, 2026
343321b
chore: format
lucas-luchack Apr 20, 2026
c8fc06c
fix: typecheck
lucas-luchack Apr 20, 2026
f38090a
Merge branch 'main' into MemberCRUD
lucas-luchack Apr 20, 2026
31e4c19
feat: add missing factories
lucas-luchack Apr 20, 2026
6f75f01
fix
lucas-luchack Apr 20, 2026
5dc4e66
format
lucas-luchack Apr 20, 2026
9cc416b
Update database/factories/permission_factory.ts
ThibaultLatxague Apr 21, 2026
4f9441c
Update database/factories/good_factory.ts
ThibaultLatxague Apr 21, 2026
9a65ed5
Update database/factories/members_factory.ts
ThibaultLatxague Apr 21, 2026
1b5db6a
refactor: replace comma-operator route declarations
Copilot Apr 21, 2026
0cf963c
chore: revert unrelated generated adonis index updates
Copilot Apr 21, 2026
e978bc7
Resolved conflicts
Apr 21, 2026
48d3b7e
Corrected Copilot mistakes
Apr 21, 2026
e337545
Runned pnpm run format for prettier
Apr 21, 2026
4f98e98
Merge branch 'main' into MemberCRUD
ThibaultLatxague Apr 21, 2026
04294c4
Apply suggestion from @Copilot
ThibaultLatxague Apr 30, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .adonisjs/client/data.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
/**
* This file is automatically generated.
* DO NOT EDIT manually
*/

/// <reference path="./manifest.d.ts" />
import type { InferData, InferVariants } from '@adonisjs/core/types/transformers'
import type UserTransformer from '#transformers/user_transformer'
Expand Down
6 changes: 6 additions & 0 deletions .adonisjs/client/manifest.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
/**
* This file is automatically generated.
* DO NOT EDIT manually
*/

/// <reference path="../../adonisrc.ts" />
/// <reference path="../../config/auth.ts" />
/// <reference path="../../config/hash.ts" />
/// <reference path="../../config/jwt.ts" />
/// <reference path="../../config/logger.ts" />
18 changes: 18 additions & 0 deletions .adonisjs/server/controllers.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
/**
* This file is automatically generated.
* DO NOT EDIT manually
*/

export const controllers = {
AccessToken: () => import('#controllers/access_token_controller'),
Categories: () => import('#controllers/categories_controller'),
FastPasses: () => import('#controllers/fast_passes_controller'),
Furnitures: () => import('#controllers/furnitures_controller'),
Goods: () => import('#controllers/goods_controller'),
Logs: () => import('#controllers/logs_controller'),
Members: () => import('#controllers/members_controller'),
NewAccount: () => import('#controllers/new_account_controller'),
Permissions: () => import('#controllers/permissions_controller'),
Products: () => import('#controllers/products_controller'),
Profile: () => import('#controllers/profile_controller'),
Restocks: () => import('#controllers/restocks_controller'),
Roles: () => import('#controllers/roles_controller'),
StockBatches: () => import('#controllers/stock_batches_controller'),
StockMovements: () => import('#controllers/stock_movements_controller'),
Suppliers: () => import('#controllers/suppliers_controller'),
}
5 changes: 5 additions & 0 deletions .adonisjs/server/events.ts
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
/**
* This file is automatically generated.
* DO NOT EDIT manually
*/

export const events = {}
5 changes: 5 additions & 0 deletions .adonisjs/server/listeners.ts
Original file line number Diff line number Diff line change
@@ -1 +1,6 @@
/**
* This file is automatically generated.
* DO NOT EDIT manually
*/

export const listeners = {}
44 changes: 44 additions & 0 deletions app/controllers/categories_controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import type { HttpContext } from '@adonisjs/core/http'
import Category from '#models/category'

export default class CategoriesController {
/**
* Display a list of resource
*/
async index({}: HttpContext) {
return Category.all()
}

/**
* Handle form submission for the create action
*/
async store({ request }: HttpContext) {
const data = request.all()
return Category.create(data)
}
Comment thread
lucas-luchack marked this conversation as resolved.

/**
* Show individual record
*/
async show({ params }: HttpContext) {
return Category.findOrFail(params.id)
}

/**
* Handle form submission for the edit action
*/
async update({ params, request }: HttpContext) {
const category = await Category.findOrFail(params.id)
const data = request.all()
category.merge(data)
return category.save()
}

/**
* Delete record
*/
async destroy({ params }: HttpContext) {
const category = await Category.findOrFail(params.id)
return category.delete()
}
}
54 changes: 54 additions & 0 deletions app/controllers/fast_passes_controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import type { HttpContext } from '@adonisjs/core/http'
import FastPass from '#models/fast_pass'

export default class FastPassesController {
/**
* Display a list of resource
*/
async index({}: HttpContext) {
return FastPass.query()
}

/**
* Handle form submission for the create action
*/
async store({ request }: HttpContext) {
const { price, duration, description, label } = request.all()
const fastPass = new FastPass()
fastPass.price = price
fastPass.duration = duration
fastPass.description = description
fastPass.label = label
await fastPass.save()
return fastPass
}

/**
* Show individual record
*/
async show({ params }: HttpContext) {
return FastPass.query().where('id', params.id).firstOrFail()
}

/**
* Handle form submission for the edit action
*/
async update({ params, request }: HttpContext) {
const fastPass = await FastPass.query().where('id', params.id).firstOrFail() // We get our fast pass by id
const { price, duration, description, label } = request.all() // We transfer the new data from the request to constants
fastPass.price = price // Assigning the data
fastPass.duration = duration
fastPass.description = description
fastPass.label = label
await fastPass.save() // We save the fast pass to the database
return fastPass
}

/**
* Delete record
*/
async destroy({ params }: HttpContext) {
const fastPass = await FastPass.query().where('id', params.id).firstOrFail()
await fastPass.delete()
}
}
44 changes: 44 additions & 0 deletions app/controllers/furnitures_controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import type { HttpContext } from '@adonisjs/core/http'
import Furniture from '#models/furniture'

export default class FurnituresController {
/**
* Display a list of resource
*/
async index({}: HttpContext) {
return Furniture.all()
}

/**
* Handle form submission for the create action
*/
async store({ request }: HttpContext) {
const { name, quantity, price } = request.all()
return Furniture.create({ name, quantity, price })
}

/**
* Show individual record
*/
async show({ params }: HttpContext) {
return Furniture.findOrFail(params.id)
}

/**
* Handle form submission for the edit action
*/
async update({ params, request }: HttpContext) {
const furniture = await Furniture.findOrFail(params.id)
const { name, quantity, price } = request.all()
furniture.merge({ name, quantity, price })
return furniture.save()
}

/**
* Delete record
*/
async destroy({ params }: HttpContext) {
const furniture = await Furniture.findOrFail(params.id)
return furniture.delete()
}
}
69 changes: 69 additions & 0 deletions app/controllers/goods_controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
import type { HttpContext } from '@adonisjs/core/http'
import Good from '#models/good'

export default class GoodsController {
/**
* Display a list of resource
*/
async index({}: HttpContext) {
return Good.query().preload('products').preload('category').preload('suppliers')
}

/**
* Handle form submission for the create action
*/
async store({ request }: HttpContext) {
const { name, unit, brand, categoryId } = request.all()
const good = new Good()
good.name = name
good.unit = unit
good.brand = brand
good.categoryId = categoryId
await good.save()
return good
}

/**
* Show individual record
*/
async show({ params }: HttpContext) {
return await Good.query()
.preload('products')
.preload('category')
.preload('suppliers')
.where('id', params.id)
.firstOrFail()
}

/**
* Handle form submission for the edit action
*/
async update({ params, request }: HttpContext) {
const good = await Good.query()
.preload('products')
.preload('category')
.preload('suppliers')
.where('id', params.id)
.firstOrFail() // We get our good by id
const { name, unit, brand, categoryId } = request.all()
good.name = name
good.unit = unit
good.brand = brand
good.categoryId = categoryId
await good.save()
return good
}

/**
* Delete record
*/
async destroy({ params }: HttpContext) {
const good = await Good.query()
.preload('products')
.preload('category')
.preload('suppliers')
.where('id', params.id)
.firstOrFail()
await good.delete()
}
}
62 changes: 62 additions & 0 deletions app/controllers/logs_controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import type { HttpContext } from '@adonisjs/core/http'
import Log from '#models/log'

export default class LogsController {
/**
* Display a list of resource
*/
async index({}: HttpContext) {
const logs = await Log.query().preload('user')
return logs
}

/**
* Handle form submission for the create action
*/
async store({ request }: HttpContext) {
const { level, message, method, url, ip, meta, userId } = request.all()
const log = await Log.create({
level,
message,
method,
url,
ip,
meta,
userId,
})
return log
}

/**
* Show individual record
*/
async show({ params }: HttpContext) {
const log = await Log.query().where('id', params.id).preload('user').firstOrFail()
return log
}

/**
* Handle form submission for the edit action
*/
async update({ params, request }: HttpContext) {
const log = await Log.query().where('id', params.id).firstOrFail()
const { level, message, method, url, ip, meta, userId } = request.all()
log.level = level
log.message = message
log.method = method
log.url = url
log.ip = ip
log.meta = meta
log.userId = userId
await log.save()
return log
}

/**
* Delete record
*/
async destroy({ params }: HttpContext) {
const log = await Log.query().where('id', params.id).preload('user').firstOrFail()
await log.delete()
}
}
61 changes: 61 additions & 0 deletions app/controllers/members_controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import type { HttpContext } from '@adonisjs/core/http'
import Member from '#models/member'

export default class MembersController {
/**
* Display a list of resource
*/
async index({}: HttpContext) {
const members = await Member.query().preload('role')
return members
}

/**
* Handle form submission for the create action
*/
async store({ request }: HttpContext) {
const { firstName, lastName } = request.all()
const member = new Member()
member.firstName = firstName
member.lastName = lastName
await member.save()
return member
Comment thread
ThibaultLatxague marked this conversation as resolved.
}

/**
* Show individual record
*/
async show({ params }: HttpContext) {
const member = await Member.query().preload('role').where('id', params.id).first()
if (!member) {
throw new Error('Member not found')
}
Comment thread
ThibaultLatxague marked this conversation as resolved.
return member
}

/**
* Handle form submission for the edit action
*/
async update({ params, request }: HttpContext) {
const member = await Member.query().preload('role').where('id', params.id).first()
if (!member) {
throw new Error('Member not found')
}
Comment thread
ThibaultLatxague marked this conversation as resolved.
const { firstName, lastName } = request.all()
member.firstName = firstName
member.lastName = lastName
await member.save()
return member
}

/**
* Delete record
*/
async destroy({ params }: HttpContext) {
const member = await Member.query().preload('role').where('id', params.id).first()
if (!member) {
throw new Error('Member not found')
}
await member.delete()
}
}
Loading
Loading