Create a naming strategy:
strategies/CamelCaseNamingStrategy.ts
import {string} from '@ioc:Adonis/Core/Helpers';
import {BaseModel, SnakeCaseNamingStrategy} from '@ioc:Adonis/Lucid/Orm';
export default class CamelCaseNamingStrategy extends SnakeCaseNamingStrategy {
serializedName(_model: typeof BaseModel, propertyName: string) {
return string.camelCase(propertyName);
}
}
Extend Model
and set the naming strategy:
AppBaseModel.ts
import {BaseModel} from '@ioc:Adonis/Lucid/Orm';
import CamelCaseNamingStrategy from './strategies/CamelCaseNamingStrategy';
export default class AppBaseModel extends BaseModel {
static namingStrategy = new CamelCaseNamingStrategy();
}
Use in in every model:
models/MembershipInvitation.ts
import ORM from '@ioc:Adonis/Lucid/Orm';
import {DateTime} from 'luxon';
import {v4 as uuidv4} from 'uuid';
import {InviteStatus} from '@/app/constants/InviteStatus';
import AppBaseModel from '@/app/modules/common/AppBaseModel';
import Org from '../../org/models/Org';
export default class MembershipInvitation extends AppBaseModel {
static selfAssignPrimaryKey = true;
@ORM.column({isPrimary: true})
id: string;
@ORM.column()
email: string;
@ORM.column()
orgId: string;
@ORM.column()
status: InviteStatus;
@ORM.column()
role: string;
@ORM.column.dateTime({autoCreate: true})
createdAt: DateTime;
@ORM.column.dateTime({autoCreate: true, autoUpdate: true})
updatedAt: DateTime;
@ORM.belongsTo(() => Org)
org: ORM.BelongsTo<typeof Org>;
@ORM.beforeCreate()
static assignToken(membershipInvitation: MembershipInvitation) {
membershipInvitation.id = uuidv4();
}
}
export type MembershipInvitationType =
ORM.ModelAttributes<MembershipInvitation>;