Readonly
optProtected
camelProtected
mapProtected
snakeThis is called for each query before it is executed. You can modify the query by transforming its OperationNode tree provided in args.node and returning the transformed tree. You'd usually want to use an OperationNodeTransformer for this.
If you need to pass some query-related data between this method and transformResult
you
can use a WeakMap
with args.queryId as the key:
const plugin = {
data: new WeakMap<QueryId, SomeData>(),
transformQuery(args: PluginTransformQueryArgs): RootOperationNode {
this.data.set(args.queryId, something)
return args.node
},
transformResult(args: PluginTransformResultArgs): QueryResult<UnknownRow> {
const data = this.data.get(args.queryId)
return args.result
}
}
You should use a WeakMap
instead of a Map
or some other strong references because transformQuery
is not always matched by a call to transformResult
which would leave orphaned items in the map
and cause a memory leak.
This method is called for each query after it has been executed. The result of the query can be accessed through args.result. You can modify the result and return the modifier result.
Generated using TypeDoc
A plugin that converts snake_case identifiers in the database into camelCase in the javascript side.
For example let's assume we have a table called
person_table
with columnsfirst_name
andlast_name
in the database. When usingCamelCasePlugin
we would setup Kysely like this:As you can see from the example, everything needs to be defined in camelCase in the typescript code: table names, columns, schemas, everything. When using the
CamelCasePlugin
Kysely works as if the database was defined in camelCase.There are various options you can give to the plugin to modify the way identifiers are converted. See CamelCasePluginOptions. If those options are not enough, you can override this plugin's
snakeCase
andcamelCase
methods to make the conversion exactly the way you like: