## Overview Implement the list assets endpoint with filtering and pagination inside `backend/contrib/`. ## Location All work must be inside `backend/contrib/src/assets/`. ## Acceptance Criteria - [ ] `GET /assets` endpoint implemented with query params: `search`, `status`, `condition`, `categoryId`, `departmentId`, `page` (default 1), `limit` (default 20) - [ ] `search` performs multi-column ILIKE across: `name`, `assetId`, `serialNumber`, `manufacturer`, `model` - [ ] Soft-deleted assets excluded by default (`withDeleted: false`) - [ ] Returns paginated response: `{ data: Asset[], total: number, page: number, limit: number }` - [ ] Uses `QueryBuilder` with `leftJoinAndSelect` for relations
Overview
Implement the list assets endpoint with filtering and pagination inside
backend/contrib/.Location
All work must be inside
backend/contrib/src/assets/.Acceptance Criteria
GET /assetsendpoint implemented with query params:search,status,condition,categoryId,departmentId,page(default 1),limit(default 20)searchperforms multi-column ILIKE across:name,assetId,serialNumber,manufacturer,modelwithDeleted: false){ data: Asset[], total: number, page: number, limit: number }QueryBuilderwithleftJoinAndSelectfor relations