import { DB } from "../_helpers/models/modelsDb"
import { AutoBack } from "./autoBack"
const autoback = new AutoBack("postgres://postgres:password@localhost:5432/test", DB.POSTGRES)
autoback.activeAuth({
config: {
basicUser: {
username: 'admin',
password: 'adminTest24',
email: 'darkelle24@gmail.com',
role: 'Admin'
}
}})
const test = autoback.defineTable('testTable', {
id: { type: ABDataType.BIGINT, primaryKey: true, autoIncrement: true },
status: { type: ABDataType.BOOLEAN, defaultValue: true, allowNull: true }
})
autoback.setUpTables()
test.basicRouting({auth: {role: ["Admin"]}})
autoback.start(8081)
Il s'agit d'un module Node.js disponible via le registre npm.
S'il s'agit d'un tout nouveau projet, assurez-vous de créer d'abord un package.json
avec la commande npm init
.
L'installation se fait à l'aide de la commande npm install
:
npm install autoback
Création de la classe Autoback -> Définition des tables et/ou Activer l'authentification -> Appelle de setUpTables -> Définition des customs route et/ou Définition des basics route -> Allumage du serveur
La methode addMailAccount permet d'ajouter un compte mail au serveur Autoback. Et retourne l index dans l'array.
autoback.addMailAccount("test", {
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
user: "test@gmail.com",
pass: "test",
},
})
addMailAccount(
name: string,
transport?: string | SMTPTransport | SMTPTransport.Options
): number
name doit contenir un string.
Cette string permet de definir le nom du compte.
port doit contenir soit un string, un SMTPTransport ou un SMTPTransport.Options.
Cela permet de configurer sa boite mail.
Pour un savoir plus allez voir nodemailer.
La methode sendMail permet d'envoyer un mail.
autoback.addMailAccount("test", {
from: "test@gmail.com",
to: "receiver@gmail.com",
subject: 'New Contact Form Submission',
text: `test`,
})
sendMail(
accountName: string,
mailOptions: Mail.Options
): Promise<any> | undefined
accountName doit contenir un string.
Cette string permet de trouver le nom du compte.
port doit contenir Mail.Options.
Cela permet de configurer le mail.
Pour un savoir plus allez voir nodemailer.
Autoback est la classe principale du projet Autoback. Elle permet de centraliser toutes les tables créées et les routes liées a ces table.
AutoBack(
connnectionStr: string,
db: DB = DB.POSTGRES,
activeHealthRoute: boolean = true,
fileInfo?: filePathInfo,
serverPath: string = "api/",
activeLog: boolean = true,
socketActive: boolean = false
)
connectionStr doit contenir la string de connexion a la base de donnée.
db doit contenir la classe correspondant au nom de la base donnée utilisée.
Par defaut cette valeur est DB.POSTGRES
.
activeHealthRoute doit contenir un boolean.
Il permet d'activer la route GET ${serverPath}/health
. Cette route permet de savoir si le serveur est en ligne et depuis combien de temps.
Par defaut cette valeur est true.
fileInfo doit contenir un objet filePathInfo ou undefined.
L'objet permet de definir le path du dossier sur la machine contenant les fichiers et le path virtuel du dossier. Par defaut cette valeur est
{
folderPath: 'uploads',
virtualPath: 'uploads'
}
serverPath doit contenir une string.
Cette string permet de definir le debut de toutes les routes de l'autoback.
Par defaut cette valeur est api/
serverPath doit contenir un boolean.
Ce boolean permet de definir si oui ou non l'autoback devra etre logger. Les logs se trouveront dans le dossier logs. Par defaut cette valeur est true
socketActive doit contenir un boolean.
Ce boolean permet de definir si oui ou non les socket sont activer. Par defaut cette valeur est false
La methode start permet de démarrer le serveur Autoback.
autoback.start(8081)
async start(
port: number = 8080,
httpServer?: http.Server
): Promise<void>
port doit contenir un nombre.
Ce nombre permet de definir le port de connexion du serveur AutoBack. Par defaut cette valeur est 8080
port doit contenir soit undefined ou un http.Server
Cela permet de demarrer avec un serveur node.js plutot que seulement express.
La methode defineTable permet de definir des tables dans Autoback.
autoback.defineTable('testTable', {
id: { type: ABDataType.BIGINT, primaryKey: true, autoIncrement: true },
status: { type: ABDataType.BOOLEAN, defaultValue: true, allowNull: true }
}, 'testRoute')
defineTable(
nameTable: string,
table: Table,
originRoutePath?: string,
description?: string,
socketInfo?: SocketInfo
): TableClass<any> | undefined
nameTable doit contenir une string.
Cette string permet de definir le nom de la table.
table doit contenir un objet Table.
Cette objet permet de definir le template de la table.
originRoutePath doit contenir une string ou undefined.
Cette string permet de definir la suite de la route. Toutes les routes qui appartiennent a cette table auront avant leur path originRoutePath. Exemple ${serverPath}/${originRoutePath}/${path_des_routes_de_cette_table}
.
Par defaut cette valeur est le nom de la table.
description doit contenir un string.
Cela permet de definir une description pour le postman ou le mode de debug.
socketInfo doit contenir un SocketInfo
Ce SocketInfo permet de definir l'etat des socket sur une modification de la table.
La methode setUpTables permet de finaliser la création des tables dans Autoback. Aprés l'appelle de cette fonction vous pourrez definir des routes mais plus définir des tables
autoback.setUpTables()
La methode activeAuth permet de definir des tables dans Autoback.
autoback.activeAuth({
config: {
basicUser: {
username: 'admin',
password: 'adminTest24',
email: 'zoulou@gmail.com',
role: 'Admin'
}
}})
activeAuth(
auth?: authConfigAutoBack | boolean,
userDefine: Table = userTableDefine,
userTableClass: typeof UserTableClass = UserTableClass,
mergeUserDefine: boolean = true
): void
auth doit contenir un objet authConfigAutoBack, un boolean ou juste undefined.
Elle permet de utiliser la table user predefinie et grace a authConfigAutoBack on peut definir le premier utilisateur de la table user. Par defaut cette valeur est false.
userDefine doit contenir un objet Table ou juste undefined.
Elle permet de pouvoir définir les colonnes de la table User. Par defaut cette valeur est
{
id: { type: ABDataType.BIGINT, primaryKey: true, autoIncrement: true },
username: { type: ABDataType.STRING, unique: true },
password: { type: ABDataType.STRING, validate: { isStrongPassword: { minLength: 6, maxLength: 20, minLowercase: 1, minUppercase: 0, minNumbers: 1, minSymbols: 0 }}, transformSet: (value: string, table: UserTableClass<any>) => { return table.getHash().update(value).digest('hex') } },
email: { type: ABDataType.STRING, validate: {isEmail: true} },
phone: { type: ABDataType.STRING, allowNull: true },
role: {type: ABDataType.STRING, validate: { equals: {comparaison: ["Admin", "SuperAdmin"]}}}
}
Chaque valeur manquante sera remplacer par celle par défaut grace à loadash merge.
userDefine doit contenir une classe non construite de type UserTableClass ou juste undefined.
Permet de définir le comportement de la table User. Par defaut cette valeur est UserTableClass.
userDefine doit contenir un boolean ou juste undefined.
Permet de définir si le userDefine
va merge avec les valeurs par defauts.
Par defaut cette valeur est true
.
TableCLass est la classe des tables créer grace à la méthode defineTable de la classe Autoback du projet Autoback. Elle permet de créer et centraliser toutes les routes lier a cette table.
La methode basicRouting permet de definir les routes de base de la table. Les routes GET POST PUT DELETE
test.basicRouting({auth: {role: ["Admin"]}})
basicRouting(
getRoute: basicRouteParams = {},
postRoute: basicRouteParams = {},
putRoute: basicRouteParams = {},
deleteRoute: basicRouteParams = {}
): void
getRoute, postRoute, putRoute, deleteRoute doivent contenir un objet basicRouteParams ou undefined.
L'objet basicRouteParams permet de definir si la route est activer et/ou definir les role d'utilisateur qui on le droit d'accéder a cette route. Par defaut chaque paramétres a pour valeur
{
active: true,
auth: undefined
}
La methode addRoute permet de créer une route.
test.addRoute({
type: TypeRoute.POST,
path: '/postTest',
columsAccept: {
inverse: true,
list: ["id"]
},
dataAs: {
comment: {
where: InfoPlace.QUERYPARAMS,
force: false
}
},
auth: {
role: ['User', 'Admin']
}
})
addRoute(
route: Route
): RouteClass | undefined
route doit contenir un objet Route.
Cette objet permet de definir le comportement de la route créer.
- Interface Route
- Interface Table
- Interface dataTableInfo
- Interface dataLinkTable
- Interface basicRouteParams
- Interface access
- Interface authConfigAutoBack
- Interface userTableConfig
- Interface acceptData
- Interface ListFilter
- Interface FilterInfo
- Interface ListValueInfo
- Interface ValueInfo
- SocketInfo
Cette interface permet de définir une route.
let route = {
type: TypeRoute.POST,
path: '/postTest',
columsAccept: {
inverse: true,
list: ["id"]
},
dataAs: {
comment: {
where: InfoPlace.QUERYPARAMS,
force: false
}
},
auth: {
role: ['User', 'Admin']
}
}
il a différent interface route en fonction du type de route que vous-soulez créer.
Il y a 4 types possibles de route: GET, POST, PUT, DELETE. Mais ils ont tous en commun l'interface RouteBasic.
interface RouteBasic {
path: string,
auth?: access,
doSomething?(req: any, res: any, route: RouteClass): any
}
path doit contenir une string.
Cette string permet de definir le path de la route.
Il peut etre formatter comme sur Express. Le debut du path va etre le path du serveur + le path de la table lier.
Exemple ${serverPath}/${originRoutePath}/${path_des_routes_de_cette_table}
auth doit contenir un access ou undefined.
auth ne marchera que si la table user de l'Autoback est crée et activée.
Si l'auth est égale a undefined, l'utilisateur n'as pas besoin d'étre authentifier pour avoir acces a la route.
doSomething doit contenir une fonction ou undefined.
Si doSomething n'est pas égale a undefined alors toutes les autres function du code a l'exception de JsonToDB, DBToJson, checkError, transformSet seront passées.
type RouteGet = {
readonly type: TypeRoute.GET,
limit?: FilterInfo,
offset?: FilterInfo,
returnColumns?: acceptData,
filters?: ListFilter,
fileReturnWithHost?: boolean,
solo?: boolean,
beforeGet?(request: any, respond: any, routeClass: RouteGetClass<any>, filters: any): void,
beforeSend?(request: any, respond: any, routeClass: RouteGetClass<any>, datas: any[]): void,
beforeSendAfterRecursive?(request: any, respond: any, routeClass: RouteGetClass<any>, datas: any[]): void
} & RouteBasic
type doit contenir un TypeRoute.
Permet de définir le type de route.
limit doit contenir un FilterInfo ou undefined.
Permet de définir le moyen de récuperer la valeur pour avoir définir le nombre d'objet maximum a retourner. Si limit est undefined alors l'utilisateur n'as pas de moyen de définir le nombre d'objet maximum a retourner.
offset doit contenir un FilterInfo ou undefined.
Permet de définir le moyen de récuperer la valeur pour avoir le début de sélection des objets a retourner. Si offset est undefined alors l'utilisateur n'as pas de moyen de définir le début de sélection des objets a retourner.
returnColumns doit contenir un acceptData ou undefined.
Permet de définir les colonnes de la table a retourné pour chaque data. Si returnColumns est undefined alors toutes les colonnes de la table sont retournés.
filters doit contenir un ListFilter ou undefined.
Permet de définir les filtres activés. Si filters est undefined alors juste les filtres de base des types sont activés.
fileReturnWithHost doit contenir un boolean ou undefined.
Si true ou undefined alors le path des fichier sera renvoyer avec l'hostname du serveur.
solo doit contenir un boolean ou undefined.
Si true alors le get renvoie qu une seul valeur.
beforeGet doit contenir une fonction ou undefined.
Permet de pouvoir executée une fonction juste avant de get les données.
beforeSend doit contenir une fonction ou undefined.
Permet de pouvoir executée une fonction juste avant d'envoyer les données.
beforeSendAfterRecursive doit contenir une fonction ou undefined.
Permet de pouvoir executée une fonction juste avant d'envoyer les données mais aprés la recupération de table ne récursive.
type RoutePost = {
readonly type: TypeRoute.POST,
columsAccept?: acceptData,
returnColumns?: acceptData,
dataAs?: ListValueInfo,
fileReturnWithHost?: boolean,
beforeSetValue?(request: any, respond: any, routeClass: RoutePostClass<any>): void,
beforeSend?(request: any, respond: any, routeClass: RoutePostClass<any>, data: any): void,
beforeSendAfterRecursive?(request: any, respond: any, routeClass: RoutePostClass<any>, data: any): void,
socketNotif?: SocketNotifInfo
} & RouteBasic
type doit contenir un TypeRoute.
Permet de définir le type de route.
columsAccept doit contenir un acceptData ou undefined.
Permet de définir les donnée pris en compte par le serveur. Si columsAccept est undefined alors toutes les donnée seront pris en compte.
returnColumns doit contenir un acceptData ou undefined.
Permet de définir les colonnes de la table a retourné pour chaque data. Si returnColumns est undefined alors toutes les colonnes de la table sont retournés.
dataAs doit contenir un ListValueInfo ou undefined.
Permet de chercher des informations ailleurs que dans le body et les mettre dans le body.
fileReturnWithHost doit contenir un boolean ou undefined.
Si true ou undefined alors le path des fichier sera renvoyer avec l'hostname du serveur.
beforeSetValue doit contenir une fonction ou undefined.
Permet de pouvoir executée une fonction juste avant d'enregistrer les données.
beforeSend doit contenir une fonction ou undefined.
Permet de pouvoir executée une fonction juste avant d'envoyer les données.
beforeSendAfterRecursive doit contenir une fonction ou undefined.
Permet de pouvoir executée une fonction juste avant d'envoyer les données mais aprés la recupération de table ne récursive.
socketNotif doit contenir un SocketNotifInfo ou undefined.
Permet de configurer l envoie de socket au user connecter au socket correspondant a la table.
type RoutePut = {
readonly type: TypeRoute.PUT,
columsAccept?: acceptData,
returnColumns?: acceptData,
dataAs?: ListValueInfo,
filters?: ListFilter,
fileReturnWithHost?: boolean,
beforeSetValue?(request: any, respond: any, routeClass: RoutePutClass<any>, row: Model<any>): void,
beforeSend?(request: any, respond: any, routeClass: RoutePutClass<any>, data: any): void,
beforeSendAfterRecursive?(request: any, respond: any, routeClass: RoutePutClass<any>, data: any): void,
socketNotif?: SocketNotifInfo
} & RouteBasic
type doit contenir un TypeRoute.
Permet de définir le type de route.
columsAccept doit contenir un acceptData ou undefined.
Permet de définir les donnée pris en compte par le serveur. Si columsAccept est undefined alors toutes les donnée seront pris en compte.
returnColumns doit contenir un acceptData ou undefined.
Permet de définir les colonnes de la table a retourné pour chaque data. Si returnColumns est undefined alors toutes les colonnes de la table sont retournés.
dataAs doit contenir un ListValueInfo ou undefined.
Permet de chercher des informations ailleurs que dans le body et les mettre dans le body.
filters doit contenir un ListFilter ou undefined.
Permet de définir les filtres activés. Si filters est undefined alors juste les filtres de base des types sont activés.
fileReturnWithHost doit contenir un boolean ou undefined.
Si true ou undefined alors le path des fichier sera renvoyer avec l'hostname du serveur.
beforeSetValue doit contenir une fonction ou undefined.
Permet de pouvoir executée une fonction juste avant d'enregistrer les données.
beforeSend doit contenir une fonction ou undefined.
Permet de pouvoir executée une fonction juste avant d'envoyer les données.
beforeSendAfterRecursive doit contenir une fonction ou undefined.
Permet de pouvoir executée une fonction juste avant d'envoyer les données mais aprés la recupération de table ne récursive.
socketNotif doit contenir un SocketNotifInfo ou undefined.
Permet de configurer l envoie de socket au user connecter au socket correspondant a la table.
type RouteDelete = {
readonly type: TypeRoute.DELETE,
filters?: ListFilter,
beforeDelete?(request: any, respond: any, routeClass: RouteDeleteClass<any>, data: any): void,
beforeSend?(request: any, respond: any, routeClass: RouteDeleteClass<any>, data: any): void,
socketNotif?: SocketNotifInfo
} & RouteBasic
type doit contenir un TypeRoute.
Permet de définir le type de route.
filters doit contenir un ListFilter ou undefined.
Permet de définir les filtres activés. Si filters est undefined alors juste les filtres de base des types sont activés.
beforeSetValue doit contenir une fonction ou undefined.
Permet de pouvoir executée une fonction juste avant de supprimé les données.
beforeSend doit contenir une fonction ou undefined.
Permet de pouvoir executée une fonction juste avant d'envoyer les données.
socketNotif doit contenir un SocketNotifInfo ou undefined.
Permet de configurer l envoie de socket au user connecter au socket correspondant a la table.
interface Table {
[key: string]: dataTableInfo | dataLinkTable
}
C'est un dictionnaire js qui va contenir des string en key et en value des dataTableInfo ou dataLinkTable
interface dataTableInfo {
type: ABDataType,
primaryKey?: boolean,
autoIncrement?: boolean,
allowNull?: boolean,
initValue?: any,
defaultValue?: any,
neverShow?: boolean,
unique?: boolean,
keepOldValue?: boolean,
transformSet?(value: any, table: TableClass<any>): any
transformGet?(value: any, table: TableClass<any>): any,
validate?: ModelValidator
}
type doit contenir un ABDataType.
Permet de pouvoir définir le type de donnée enregistrer dans cette colonne.
primaryKey doit contenir un boolean ou undefined.
Permet de définir si cette colonne est la primary key de la table. Si undefined alors primaryKey est égale a false.
autoIncrement doit contenir un boolean ou undefined.
Permet de définir si cette colonne doit s'auto incrementé pour chaque valeur ajouter. Fonctionne que si le type de la collonne est de type nombre. Si undefined alors autoIncrement est égale a false.
allowNull doit contenir un boolean ou undefined.
Permet de définir si l'utilisateur peut ne rien envoyer ou envoyer null pour cette colonne. Si undefined alors allowNull est égale a false.
initValue doit contenir une valeur ou undefined.
Permet de définir si l'utilisateur créer une nouvelle entrer de mettre des valeur initial si l'utilisateur n'as pas défini encore une valeur. Par defaut initValue est égale à undefined.
defaultValue doit contenir une valeur ou undefined.
Permet de définir si l'utilisateur envoie null ou undefined pour cette colonne de mettre une valeur. Par defaut defaultValue est égale à undefined.
neverShow doit contenir un boolean ou undefined.
Permet de définir si la valeur ne sera jamais dans les reponses en recursives et normal. Par defaut neverShow est égale à false.
unique doit contenir une boolean ou undefined.
Permet de définir si l'utilisateur peut envoyer plusieurs fois la meme valeur. Par defaut unique est égale à false.
keepOldValue doit contenir une boolean ou undefined.
Permet de définir si l'utilisateur envoye null a pour cette colonne de garder l'ancienne valeur. Par defaut keepOldValue est égale à true.
transformSet doit contenir une fonction ou undefined.
Permet de définir d'executer une fonction avant l'execution de la fonction dataTypeInfo.JsonToDB mais aprés validate. Par defaut transformSet est égale à undefined.
transformGet doit contenir une fonction ou undefined.
Permet de définir d'executer une fonction aprés l'execution de la fonction dataTypeInfo.DBToJson. Par defaut transformGet est égale à undefined.
validate doit contenir une ModelValidator ou undefined.
Permet de définir de défénir des contrainte sur les données entrente dans cette colonne en plus de celle imposer par les ABDataType. Par defaut validate est égale à .
type dataLinkTable = {
tableToLink: string,
columnsLink: string,
type: ABDataType.TABLE_LINK | ABDataType.MULTIPLE_LINK_TABLE ,
onDelete?: DeleteAction,
rename?: string,
multipleResult?: boolean,
transformGetLinkedData?(value: any): void
} & dataTableInfo
dataLinkTable herite de dataTableInfo
tableToLink doit contenir un string. tableToLink doit etre le nom d'une table.
Permet de définir la table qui sera lier a cette colonne.
columnsLink doit contenir un string.
Permet de définir la colonne qui sera utiliser pour trouver les comparée les donnée dans la table lier.
Par exemple columnsLink = 'id'
permettera de chercher grace a l'id les donnée que l'utilisateur a stocker dans la table lier.
columnsLink doit contenir un ABDataType.TABLE_LINK
ou ABDataType.MULTIPLE_LINK_TABLE
.
Permet de définir si il y a plusieur lien a une meme table grace a ABDataType.MULTIPLE_LINK_TABLE
ou si type est egale a ABDataType.TABLE_LINK
alors il y a qu un seul lien dans l'autre table.
onDelete doit contenir soit DELETE
, SET_DEFAULT
, SET_NULL
.
DELETE
si la / les lignes liées sont détruite alors le lien sera supprimer seront supprimer.
SET_DEFAULT
si la / les lignes liées sont détruite alors le lien sera remis a la valeur par defaut.
SET_NULL
si la / les lignes liées sont détruite alors le lien sera egale a null.
Par default onDelete est egale a DELETE.
rename doit contenir une string ou undefined.
Permet de renommer la colonne quandd la ligne est renvoyer a l'utilisateur. Par defaut rename est égale à undefined.
multipleResult doit contenir une boolean ou undefined.
Permet de de definir si quand la ligne est renvoyer a l'utilisateur d'afficher plusieur resultat sous la forme d'une array. Par defaut rename est égale à true.
transformGetLinkedData doit contenir une fonction ou undefined.
Permet de définir d'executer une fonction aprés la récupération de donnée dans une recursive. Par defaut transformGetLinkedData est égale à undefined.
interface basicRouteParams {
active?: boolean,
auth?: access
}
active doit contenir un boolean ou undefined.
Permet de pouvoir activer ou non une basic route. Par défaut la value est true.
active doit contenir un access ou undefined.
Permet de pouvoir définir le processus d'authenfication sur cette basic route.
export interface access {
role?: string[],
inverse?: boolean
}
role doit contenir un string[] ou undefined.
Permet de défénir les role qui auront accés a la route. Si undefined alors tous les roles sont acceptée. Par défaut la valeur est undefined.
inverse doit contenir un boolean ou undefined.
Permet d'inverser la séléction des roles. Par exemple, si role est undefined alors tous les roles sont refusée. Par défaut la value est false.
interface authConfigAutoBack {
config?: userTableConfig,
getRoute?: basicRouteParams,
postRoute?: basicRouteParams,
putRoute?: basicRouteParams,
deleteRoute?: basicRouteParams
}
config doit contenir un userTableConfig ou undefined.
Permet de définir la configuration des compte. Voir plus dans le chapitre lié a userTableConfig. Par défaut la valeur de config est
tokenSecret: "wVmNfh6YPJMHtwtbj0Wa43wSh3cvJpoKqoQzZK8QbwjTGEVBNYO8xllNQC2G0U7lfKcVMK5lsn1Tshwl",
passwordSecret: "pBvhLoQrwTKyk9amfwSabc0zwh5EuV7DDTYpbGG4K52vV9WGftSDhmlz90hMvASJlHk1azg24Uvdturqomx819kz10NS9S",
expiresIn: "7 days",
roles: ["SuperAdmin", "Admin", "User"],
basicUser: auth.basicUser
getRoute doivent contenir un objet basicRouteParams ou undefined.
L'objet basicRouteParams permet de definir si la route est activer et/ou definir les role d'utilisateur qui on le droit d'accéder a cette route.
postRoute doivent contenir un objet basicRouteParams ou undefined.
L'objet basicRouteParams permet de definir si la route est activer et/ou definir les role d'utilisateur qui on le droit d'accéder a cette route.
putRoute doivent contenir un objet basicRouteParams ou undefined.
L'objet basicRouteParams permet de definir si la route est activer et/ou definir les role d'utilisateur qui on le droit d'accéder a cette route.
deleteRoute doivent contenir un objet basicRouteParams ou undefined.
L'objet basicRouteParams permet de definir si la route est activer et/ou definir les role d'utilisateur qui on le droit d'accéder a cette route.
interface userTableConfig {
readonly tokenSecret?: string,
readonly passwordSecret?: string,
expiresIn?: string,
roles?: string[],
basicUser?: {
username: string,
password: string,
email: string,
phone?: number,
role: string
}
}
tokenSecret doit contenir un string ou undefined.
Permet de définir le secret dans laquel les token seront crypter.
passwordSecret doit contenir un string ou undefined.
Permet de définir le secret dans laquel les password seront crypter.
passwordSecret doit contenir un string ou undefined.
Permet de définir la durée de vie du token.
roles doit contenir un string[] ou undefined.
Permet de définir les role possible.
basicUser doit contenir un objet ou undefined.
Permet de créer un utilisateur a la création de la data base.
interface acceptData {
list?: string[] | null,
inverse?: boolean
}
list doit contenir un string[] ou undefined ou null.
Permet de défénir la liste des donnée qui sont accepter. Si undefined alors tous les donnée sont acceptée a l'exception de la primaryKey. Si null alors tous les donnée sont acceptée a l'exception de la primaryKey.
inverse doit contenir un boolean ou undefined.
Permet d'inverser la liste. Par défaut la value est false.
interface ListFilter {
[columnsName: string]: FilterOperators
}
C'est un dictionnaire js qui va contenir des string en key qui corresponde au nom des colonne de la Table et en value des FilterOperators
interface FilterInfo {
name?: string
where?: InfoPlace,
transformValue?(value: any): any
}
name doit contenir un string ou undefined.
Permet de définir le nom de la donnée qui sera sélectionner.
Par défaut la value est {nom_de_la_colonne}_{name_du_filtre}
.
where doit contenir un InfoPlace ou undefined.
Permet de définir l'endroit ou est stocker la donnée.
Par défaut la value est InfoPlace.QUERYPARAMS
.
transformValue doit contenir un fonction ou undefined.
Permet d'executer une fonction quand la donnée sera recupérer.
Par défaut la value est transform
de dataTypeInfo
si transformValue
est égale undefined et dataTypeInfo.transform
est différent de undefined.
interface ListValueInfo {
[columnsName: string]: ValueInfo
}
C'est un dictionnaire js qui va contenir des string en key qui corresponde au nom des colonne de la Table et en value des ValueInfo
interface SocketInfo {
path?: string,
auth?: access,
notif?: SocketNotifInfo,
toDoOnSocketConnection?: (socket: Socket) => void
}
path doit contenir un string ou undefined.
Permet de définir le path de la socket sur la table. Si undefined alors prend le path de la table comme path de socket.
active doit contenir un access ou undefined.
Permet de pouvoir définir le processus d'authenfication sur cette socket.
notif doit contenir un SocketNotifInfo.
Permet de definir comment se comporterra les notification.
notif doit contenir une fonction ou undefined.
Permet d'executer une fonction quand un nouvelle utilisateur se connecte a la socket.
interface SocketNotifInfo {
activate?: boolean,
selectUserSendNotifs?: (userToSendNotif: (RemoteSocket<any>)[], req: any, dataChange: any, type: 'POST' | 'PUT' | 'DELETE' ) => (RemoteSocket<any>)[],
toSendForNotif?: (packageToSend: {eventName: string, toSend: {data: any, type: 'POST' | 'PUT' | 'DELETE' }}, req: any) => {eventName: string, toSend: any}
}
activate doit contenir un boolean ou undefined.
Permet de définir si les notifications sont activer. Si undefined alors activate est agale a true.
selectUserSendNotifs doit contenir une fonction ou undefined.
Permet de selectionner la liste des user qui vont recevoir la notif.
toSendForNotif doit contenir une fonction ou undefined.
Permet de selectionner quoi envoyer au user qui vont recevoir la notif.