@wizim-dev/crud
v0.0.1
Published
Helper to create automatic CRUD routes
Readme
Snark-CRUD
Ce projet ajoute côté back les routes permettant de faire du CRUD.
C'est le successeur de @snark/crud-server.
Il a les fonctionnalités suivantes :
- Validation automatique selon un schéma de description
- Population de champs
- Filtre dans les champs de l'objet ET dans les champs populés
- Tri dans les champs de l'objet ET dans les champs populés.
- Pagination
Ce CRUD est utilisé en tant que CRUD V2 par le @snark/backoffice en spécifiant apiVersion = 2.
installation
yarn add @snark/crudconfiguration
import createCRUD from "@snark/crud";
// configuration typique mais pouvant être réalisée autrement.
let api = logger.createRouter();
let db = new Database(options); // @snark/mongodb-operator
// pour chaque collection
createCrud<T>(api, "/route", db, "collection", options);- T est le type typescript des objets contenus dans la collection
- api est un router express.
- db est une instance de Database de @snark/mongodb-operator
- collection est le nom de la collection
- route est le prefixe des routes de CRUD pour cette collection.
- options permet de configurer plus spécifiquement les routes
L'appelle à createCrud va créer les routes suivantes sur le router spécifier :
| | Méthode | route | description | fonctionnalités | |---|---------|-------------|-------------------------------------------|--------------------------------------------------| | L | GET | /route | liste des éléments de la collection | filter, population, sort, pagination, projection | | C | POST | /route | Créer 1 nouvel élément dans la collection | population, projection | | R | GET | /route/:id | Récupère 1 seul élément de la collection | population, projection | | U | PUT | /route/:id | Modifie 1 élément de la collection | population, projection | | D | DELETE | /route/:id | Supprime 1 élément de la collection | - |
Options de création
export type CRUDOptions = {
logger?: {log: (...any) => void}
logLevel?: string
realDeletion?: boolean
idFieldName?: string
createdAtFieldName?: string
updatedAtFieldName?: string
autoTimestamp?: boolean
removeUnknownField?: boolean
noVerification?: boolean
queryFieldPrefix?: string
randomFieldName?: string
textSearchLanguage?: string
schema?: CRUDSchema
lastFilter?: LastFilterFunction | {
hiddenFields: Array<string>
},
beforeUpdate?: BeforeUpdateFunction
beforeCreate?: BeforeCreateFunction
afterCreate?: AfterCreateFunction
beforeDelete?: BeforeDeleteFunction
verifyUpdateData?: VerifyUpdateDataFunction
verifyCreateData?: VerifyCreateDataFunction
}Aucune option n'est obligatoire mais par défaut, voici les valeurs qu'elles ont :
const defaultCRUDOptions = {
logLevel: "debug",
realDeletion: true,
idFieldName: "_id",
createdAtFieldName: "createdAt",
updatedAtFieldName: "updatedAt",
autoTimestamp: true,
removeUnknownField: false,
noVerification: false,
queryFieldPrefix: "__",
randomFieldName: "__random__",
schema: null
};TODO: Finir la documentation de toutes les options.
