1
1
import type { KyselyPlugin , PluginTransformQueryArgs , PluginTransformResultArgs , QueryResult , RootOperationNode , UnknownRow } from 'kysely'
2
- import type { QueryId } from 'kysely/dist/cjs/util/query-id'
3
2
import { SerializeParametersTransformer } from './sqlite-serialize-transformer'
4
3
import type { Deserializer , Serializer } from './sqlite-serialize'
5
4
import { defaultDeserializer } from './sqlite-serialize'
@@ -30,7 +29,6 @@ export interface SqliteSerializePluginOptions {
30
29
export class SqliteSerializePlugin implements KyselyPlugin {
31
30
private serializeParametersTransformer : SerializeParametersTransformer
32
31
private deserializer : Deserializer
33
- private ctx : WeakMap < QueryId , string >
34
32
35
33
/**
36
34
* _**THIS PLUGIN SHOULD BE PLACED AT THE END OF PLUGINS ARRAY !!!**_
@@ -96,17 +94,16 @@ export class SqliteSerializePlugin implements KyselyPlugin {
96
94
public constructor ( { deserializer, serializer } : SqliteSerializePluginOptions = { } ) {
97
95
this . serializeParametersTransformer = new SerializeParametersTransformer ( serializer )
98
96
this . deserializer = deserializer || defaultDeserializer
99
- this . ctx = new WeakMap ( )
100
97
}
101
98
102
- public transformQuery ( { node, queryId } : PluginTransformQueryArgs ) : RootOperationNode {
103
- if ( node . kind === 'SelectQueryNode' ) {
104
- this . ctx . set ( queryId , node . kind )
105
- }
99
+ public transformQuery ( { node } : PluginTransformQueryArgs ) : RootOperationNode {
106
100
return this . serializeParametersTransformer . transformNode ( node )
107
101
}
108
102
109
103
private async parseResult ( rows : any [ ] ) {
104
+ if ( ! rows . length ) {
105
+ return [ ]
106
+ }
110
107
return await Promise . all ( rows . map ( async ( row ) => {
111
108
const deserializedRow = { ...row }
112
109
for ( const key in deserializedRow ) {
@@ -117,16 +114,11 @@ export class SqliteSerializePlugin implements KyselyPlugin {
117
114
}
118
115
119
116
public async transformResult (
120
- { result, queryId } : PluginTransformResultArgs ,
117
+ { result } : PluginTransformResultArgs ,
121
118
) : Promise < QueryResult < UnknownRow > > {
122
- const { rows } = result
123
- const data = this . ctx . get ( queryId )
124
- this . ctx . delete ( queryId )
125
- return ( rows && data === 'SelectQueryNode' )
126
- ? {
127
- ...result ,
128
- rows : await this . parseResult ( rows ) ,
129
- }
130
- : result
119
+ return {
120
+ ...result ,
121
+ rows : await this . parseResult ( result . rows ) ,
122
+ }
131
123
}
132
124
}
0 commit comments