API Reference
createCrudActions API
TL;DR
Create standard CRUD Actions in one line, automatically connected with permissions/logging:
const { getList, getDetail, create, update, delete: del } = createCrudActions(config).
⚙️ Exports
- createCrudActions(config, options?)
- createReadOnlyActions(config, options?)
- extendCrudActions(base, extensions)
👀 Quick Start
import { createCrudActions } from '@/lib/core/crud-helper'
export const {
getList: sysGetRoleList,
getDetail: sysGetRoleDetail,
create: sysCreateRole,
update: sysUpdateRole,
delete: sysDeleteRole,
batchDelete: sysBatchDeleteRole,
} = createCrudActions({
modelName: 'role',
tableName: 'roles', // Required for selects joins
primaryKey: 'id',
softDelete: true,
fields: {
creatable: ['name', 'remark'],
updatable: ['name', 'remark'],
searchable: ['name'],
},
query: {
defaultSort: { createdAt: 'desc' },
defaultPageSize: 20,
foreignDB: [], // Configure when joins are needed
},
validation: { // auto-schema validation
name: { required: true, minLength: 2, maxLength: 50 },
},
uniqueFields: ['name'],
})🔧 Parameters
createCrudActions(
config: {
modelName: string
tableName?: string // Required for selects queries
primaryKey?: string // Default 'id'
softDelete?: boolean // Default true
requireAdmin?: boolean // Admin only
fields?: {
creatable?: string[]
updatable?: string[]
searchable?: string[]
}
query?: {
defaultSort?: Record<string,'asc'|'desc'>
defaultPageSize?: number
baseFilter?: object
include?: object // Prisma include
foreignDB?: any[] // selects joins
}
validation?: Record<string, any> // auto-schema rules
uniqueFields?: string[]
hooks?: Record<string, Function>
transforms?: { input?: (d)=>any, output?: (r)=>any }
},
options?: { prefix?: 'sys'|'auth'|'pub', enableBatch?: boolean }
): {
getList, getDetail, create, update, delete, batchUpdate?, batchDelete?, _dao
}📌 Behavior
- Generated function names include prefix (default
sys*), automatically entering admin permission and RBAC checks; - getDetail defaults to using
config.query.foreignDBfor joins; - create/update/delete automatically log operations;
- Batch operations controlled by
options.enableBatch(default true).
🧪 Read-Only Actions
import { createReadOnlyActions } from '@/lib/core/crud-helper'
export const { getList, getDetail } = createReadOnlyActions({
modelName: 'actionLog',
query: { defaultSort: { createdAt: 'desc' } },
})