@aws-amplify/datastore-storage-adapter 2.0.52 → 2.0.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js +9 -0
  2. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js +195 -0
  3. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/SQLiteAdapter/SQLiteAdapter.js +9 -0
  4. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/SQLiteAdapter/SQLiteDatabase.js +114 -0
  5. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/CommonSQLiteAdapter.js +240 -0
  6. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/SQLiteUtils.js +349 -0
  7. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/constants.js +6 -0
  8. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/common/types.js +2 -0
  9. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/cjs/index.js +8 -0
  10. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.d.ts +3 -0
  11. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteAdapter.js +6 -0
  12. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.d.ts +17 -0
  13. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/ExpoSQLiteAdapter/ExpoSQLiteDatabase.js +193 -0
  14. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/SQLiteAdapter/SQLiteAdapter.d.ts +3 -0
  15. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/SQLiteAdapter/SQLiteAdapter.js +6 -0
  16. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/SQLiteAdapter/SQLiteDatabase.d.ts +17 -0
  17. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/SQLiteAdapter/SQLiteDatabase.js +111 -0
  18. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/CommonSQLiteAdapter.d.ts +23 -0
  19. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/CommonSQLiteAdapter.js +236 -0
  20. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/SQLiteUtils.d.ts +36 -0
  21. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/SQLiteUtils.js +331 -0
  22. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/constants.d.ts +1 -0
  23. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/constants.js +3 -0
  24. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/types.d.ts +16 -0
  25. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/common/types.js +1 -0
  26. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/index.d.ts +2 -0
  27. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/esm/index.js +4 -0
  28. package/.rollup.cache/home/runner/work/amplify-js/amplify-js/amplify-js/packages/datastore-storage-adapter/dist/meta/cjs.tsbuildinfo +1 -0
  29. package/CHANGELOG.md +8 -0
  30. package/package.json +4 -4
@@ -0,0 +1,111 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import SQLite from 'react-native-sqlite-storage';
4
+ import { ConsoleLogger } from '@aws-amplify/core';
5
+ import { DB_NAME } from '../common/constants';
6
+ const logger = new ConsoleLogger('SQLiteDatabase');
7
+ SQLite.enablePromise(true);
8
+ if (ConsoleLogger.LOG_LEVEL === 'DEBUG') {
9
+ SQLite.DEBUG(true);
10
+ }
11
+ /*
12
+
13
+ Note:
14
+ I purposely avoided using arrow functions () => {} in this class,
15
+ Because I ran into issues with them in some of the SQLite method callbacks
16
+
17
+ Also, even though the SQLite library is promisified, certain operations
18
+ only work correctly with callbacks. Specifically, any time you need to
19
+ get the result of an `executeSql` command inside of a transaction
20
+ (see the batchQuery method below)
21
+
22
+ */
23
+ class SQLiteDatabase {
24
+ async init() {
25
+ // only open database once.
26
+ if (!this.db) {
27
+ this.db = await SQLite.openDatabase({
28
+ name: DB_NAME,
29
+ location: 'default',
30
+ });
31
+ }
32
+ }
33
+ async createSchema(statements) {
34
+ return await this.executeStatements(statements);
35
+ }
36
+ async clear() {
37
+ await this.closeDB();
38
+ logger.debug('Deleting database');
39
+ await SQLite.deleteDatabase({ name: DB_NAME, location: 'default' });
40
+ logger.debug('Database deleted');
41
+ }
42
+ async get(statement, params) {
43
+ const results = await this.getAll(statement, params);
44
+ return results[0];
45
+ }
46
+ async getAll(statement, params) {
47
+ const [resultSet] = await this.db.executeSql(statement, params);
48
+ const result = resultSet &&
49
+ resultSet.rows &&
50
+ resultSet.rows.length &&
51
+ resultSet.rows.raw &&
52
+ resultSet.rows.raw();
53
+ return result || [];
54
+ }
55
+ async save(statement, params) {
56
+ await this.db.executeSql(statement, params);
57
+ }
58
+ async batchQuery(queryParameterizedStatements) {
59
+ const results = [];
60
+ await this.db.readTransaction(tx => {
61
+ for (const [statement, params] of queryParameterizedStatements) {
62
+ tx.executeSql(statement, params, (_, res) => {
63
+ results.push(res.rows.raw()[0]);
64
+ }, logger.warn);
65
+ }
66
+ });
67
+ return results;
68
+ }
69
+ async batchSave(saveParameterizedStatements, deleteParameterizedStatements) {
70
+ await this.db.transaction(tx => {
71
+ for (const [statement, params] of saveParameterizedStatements) {
72
+ tx.executeSql(statement, params);
73
+ }
74
+ });
75
+ if (deleteParameterizedStatements) {
76
+ await this.db.transaction(tx => {
77
+ for (const [statement, params] of deleteParameterizedStatements) {
78
+ tx.executeSql(statement, params);
79
+ }
80
+ });
81
+ }
82
+ }
83
+ async selectAndDelete(queryParameterizedStatement, deleteParameterizedStatement) {
84
+ let results = [];
85
+ const [queryStatement, queryParams] = queryParameterizedStatement;
86
+ const [deleteStatement, deleteParams] = deleteParameterizedStatement;
87
+ await this.db.transaction(tx => {
88
+ tx.executeSql(queryStatement, queryParams, (_, res) => {
89
+ results = res.rows.raw();
90
+ }, logger.warn);
91
+ tx.executeSql(deleteStatement, deleteParams, () => { }, logger.warn);
92
+ });
93
+ return results;
94
+ }
95
+ async executeStatements(statements) {
96
+ await this.db.transaction(tx => {
97
+ for (const statement of statements) {
98
+ tx.executeSql(statement);
99
+ }
100
+ });
101
+ }
102
+ async closeDB() {
103
+ if (this.db) {
104
+ logger.debug('Closing Database');
105
+ await this.db.close();
106
+ logger.debug('Database closed');
107
+ this.db = undefined;
108
+ }
109
+ }
110
+ }
111
+ export default SQLiteDatabase;
@@ -0,0 +1,23 @@
1
+ import { StorageAdapter, ModelInstanceCreator, InternalSchema, ModelPredicate, NamespaceResolver, NAMESPACES, OpType, PaginationInput, PersistentModel, PersistentModelConstructor, QueryOne } from '@aws-amplify/datastore';
2
+ import { CommonSQLiteDatabase, ModelInstanceMetadataWithId } from './types';
3
+ export declare class CommonSQLiteAdapter implements StorageAdapter {
4
+ private schema;
5
+ private namespaceResolver;
6
+ private modelInstanceCreator;
7
+ private getModelConstructorByModelName;
8
+ private db;
9
+ private initPromise;
10
+ private resolve;
11
+ private reject;
12
+ constructor(db: CommonSQLiteDatabase);
13
+ setUp(theSchema: InternalSchema, namespaceResolver: NamespaceResolver, modelInstanceCreator: ModelInstanceCreator, getModelConstructorByModelName: (namsespaceName: NAMESPACES, modelName: string) => PersistentModelConstructor<any>): Promise<void>;
14
+ clear(): Promise<void>;
15
+ save<T extends PersistentModel>(model: T, condition?: ModelPredicate<T>): Promise<[T, OpType.INSERT | OpType.UPDATE][]>;
16
+ private load;
17
+ query<T extends PersistentModel>(modelConstructor: PersistentModelConstructor<T>, predicate?: ModelPredicate<T>, pagination?: PaginationInput<T>): Promise<T[]>;
18
+ private getById;
19
+ private idFromPredicate;
20
+ queryOne<T extends PersistentModel>(modelConstructor: PersistentModelConstructor<T>, firstOrLast?: QueryOne): Promise<T | undefined>;
21
+ delete<T extends PersistentModel>(modelOrModelConstructor: T | PersistentModelConstructor<T>, condition?: ModelPredicate<T>): Promise<[T[], T[]]>;
22
+ batchSave<T extends PersistentModel>(modelConstructor: PersistentModelConstructor<any>, items: ModelInstanceMetadataWithId[]): Promise<[T, OpType][]>;
23
+ }
@@ -0,0 +1,236 @@
1
+ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { ConsoleLogger } from '@aws-amplify/core';
4
+ import { generateSchemaStatements, queryByIdStatement, modelUpdateStatement, modelInsertStatement, queryAllStatement, queryOneStatement, deleteByIdStatement, deleteByPredicateStatement, } from '../common/SQLiteUtils';
5
+ import { ModelPredicateCreator, ModelSortPredicateCreator, isPredicateObj, OpType, QueryOne, utils, } from '@aws-amplify/datastore';
6
+ const { traverseModel, validatePredicate, isModelConstructor } = utils;
7
+ const logger = new ConsoleLogger('DataStore');
8
+ export class CommonSQLiteAdapter {
9
+ constructor(db) {
10
+ this.db = db;
11
+ }
12
+ async setUp(theSchema, namespaceResolver, modelInstanceCreator, getModelConstructorByModelName) {
13
+ if (!this.initPromise) {
14
+ this.initPromise = new Promise((res, rej) => {
15
+ this.resolve = res;
16
+ this.reject = rej;
17
+ });
18
+ }
19
+ else {
20
+ await this.initPromise;
21
+ return;
22
+ }
23
+ this.schema = theSchema;
24
+ this.namespaceResolver = namespaceResolver;
25
+ this.modelInstanceCreator = modelInstanceCreator;
26
+ this.getModelConstructorByModelName = getModelConstructorByModelName;
27
+ try {
28
+ const usesCPKCodegen = Object.values(this.schema.namespaces.user.models).some(model => Object.values(model.fields).some(field => field.association?.hasOwnProperty('targetNames')));
29
+ if (usesCPKCodegen) {
30
+ logger.error('The SQLite adapter does not support schemas using custom primary key. Set `graphQLTransformer.respectPrimaryKeyAttributesOnConnectionField in `amplify/cli.json` to false to disable custom primary key. To regenerate your API, add or remove an empty newline to your GraphQL schema (to change the computed hash) then run `amplify push`.');
31
+ }
32
+ await this.db.init();
33
+ const statements = generateSchemaStatements(this.schema);
34
+ await this.db.createSchema(statements);
35
+ this.resolve();
36
+ }
37
+ catch (error) {
38
+ this.reject(error);
39
+ }
40
+ }
41
+ async clear() {
42
+ await this.db.clear();
43
+ this.initPromise = undefined;
44
+ }
45
+ async save(model, condition) {
46
+ const modelConstructor = Object.getPrototypeOf(model)
47
+ .constructor;
48
+ const { name: tableName } = modelConstructor;
49
+ const connectedModels = traverseModel(modelConstructor.name, model, this.schema.namespaces[this.namespaceResolver(modelConstructor)], this.modelInstanceCreator, this.getModelConstructorByModelName);
50
+ const connectionStoreNames = Object.values(connectedModels).map(({ modelName, item, instance }) => {
51
+ return { modelName, item, instance };
52
+ });
53
+ const [queryStatement, params] = queryByIdStatement(model.id, tableName);
54
+ const fromDB = await this.db.get(queryStatement, params);
55
+ if (condition && fromDB) {
56
+ const predicates = ModelPredicateCreator.getPredicates(condition);
57
+ const { predicates: predicateObjs, type } = predicates;
58
+ const isValid = validatePredicate(fromDB, type, predicateObjs);
59
+ if (!isValid) {
60
+ const msg = 'Conditional update failed';
61
+ logger.error(msg, { model: fromDB, condition: predicateObjs });
62
+ throw new Error(msg);
63
+ }
64
+ }
65
+ const result = [];
66
+ const saveStatements = new Set();
67
+ for await (const resItem of connectionStoreNames) {
68
+ const { modelName, item, instance } = resItem;
69
+ const { id } = item;
70
+ const [queryStatement, params] = queryByIdStatement(id, modelName);
71
+ const fromDB = await this.db.get(queryStatement, params);
72
+ const opType = fromDB === undefined ? OpType.INSERT : OpType.UPDATE;
73
+ const saveStatement = fromDB
74
+ ? modelUpdateStatement(instance, modelName)
75
+ : modelInsertStatement(instance, modelName);
76
+ if (id === model.id || opType === OpType.INSERT) {
77
+ saveStatements.add(saveStatement);
78
+ result.push([instance, opType]);
79
+ }
80
+ }
81
+ await this.db.batchSave(saveStatements);
82
+ return result;
83
+ }
84
+ async load(namespaceName, srcModelName, records) {
85
+ const namespace = this.schema.namespaces[namespaceName];
86
+ const relations = namespace.relationships[srcModelName].relationTypes;
87
+ const connectionTableNames = relations.map(({ modelName }) => modelName);
88
+ const modelConstructor = this.getModelConstructorByModelName(namespaceName, srcModelName);
89
+ if (connectionTableNames.length === 0) {
90
+ return records.map(record => this.modelInstanceCreator(modelConstructor, record));
91
+ }
92
+ // Remove related-model fields. They're all `null` in the database,
93
+ // and any that happen to be required will result in a false validation
94
+ // error when DataStore attempts to initialize with `null`.
95
+ // These fields aren't actually needed here. DataStore will use the FK's
96
+ // from the schema model.
97
+ return records.map(record => {
98
+ for (const r of relations) {
99
+ delete record[r.fieldName];
100
+ }
101
+ return this.modelInstanceCreator(modelConstructor, record);
102
+ });
103
+ }
104
+ async query(modelConstructor, predicate, pagination) {
105
+ const { name: tableName } = modelConstructor;
106
+ const namespaceName = this.namespaceResolver(modelConstructor);
107
+ const predicates = predicate && ModelPredicateCreator.getPredicates(predicate);
108
+ const sortPredicates = pagination &&
109
+ pagination.sort &&
110
+ ModelSortPredicateCreator.getPredicates(pagination.sort);
111
+ const limit = pagination && pagination.limit;
112
+ const page = limit && pagination.page;
113
+ const queryById = predicates && this.idFromPredicate(predicates);
114
+ const records = await (async () => {
115
+ if (queryById) {
116
+ const record = await this.getById(tableName, queryById);
117
+ return record ? [record] : [];
118
+ }
119
+ const [queryStatement, params] = queryAllStatement(tableName, predicates, sortPredicates, limit, page);
120
+ return await this.db.getAll(queryStatement, params);
121
+ })();
122
+ return await this.load(namespaceName, modelConstructor.name, records);
123
+ }
124
+ async getById(tableName, id) {
125
+ const [queryStatement, params] = queryByIdStatement(id, tableName);
126
+ const record = await this.db.get(queryStatement, params);
127
+ return record;
128
+ }
129
+ idFromPredicate(predicates) {
130
+ const { predicates: predicateObjs } = predicates;
131
+ const idPredicate = predicateObjs.length === 1 &&
132
+ predicateObjs.find(p => isPredicateObj(p) && p.field === 'id' && p.operator === 'eq');
133
+ return idPredicate && idPredicate.operand;
134
+ }
135
+ async queryOne(modelConstructor, firstOrLast = QueryOne.FIRST) {
136
+ const { name: tableName } = modelConstructor;
137
+ const [queryStatement, params] = queryOneStatement(firstOrLast, tableName);
138
+ const result = await this.db.get(queryStatement, params);
139
+ const modelInstance = result && this.modelInstanceCreator(modelConstructor, result);
140
+ return modelInstance;
141
+ }
142
+ // Currently does not cascade
143
+ // TODO: use FKs in relations and have `ON DELETE CASCADE` set
144
+ // For Has Many and Has One relations to have SQL handle cascades automatically
145
+ async delete(modelOrModelConstructor, condition) {
146
+ if (isModelConstructor(modelOrModelConstructor)) {
147
+ const modelConstructor = modelOrModelConstructor;
148
+ const namespaceName = this.namespaceResolver(modelConstructor);
149
+ const { name: tableName } = modelConstructor;
150
+ const predicates = condition && ModelPredicateCreator.getPredicates(condition);
151
+ const queryStatement = queryAllStatement(tableName, predicates);
152
+ const deleteStatement = deleteByPredicateStatement(tableName, predicates);
153
+ const models = await this.db.selectAndDelete(queryStatement, deleteStatement);
154
+ const modelInstances = await this.load(namespaceName, modelConstructor.name, models);
155
+ return [modelInstances, modelInstances];
156
+ }
157
+ else {
158
+ const model = modelOrModelConstructor;
159
+ const modelConstructor = Object.getPrototypeOf(model)
160
+ .constructor;
161
+ const { name: tableName } = modelConstructor;
162
+ if (condition) {
163
+ const [queryStatement, params] = queryByIdStatement(model.id, tableName);
164
+ const fromDB = await this.db.get(queryStatement, params);
165
+ if (fromDB === undefined) {
166
+ const msg = 'Model instance not found in storage';
167
+ logger.warn(msg, { model });
168
+ return [[model], []];
169
+ }
170
+ const predicates = ModelPredicateCreator.getPredicates(condition);
171
+ const { predicates: predicateObjs, type } = predicates;
172
+ const isValid = validatePredicate(fromDB, type, predicateObjs);
173
+ if (!isValid) {
174
+ const msg = 'Conditional update failed';
175
+ logger.error(msg, { model: fromDB, condition: predicateObjs });
176
+ throw new Error(msg);
177
+ }
178
+ const [deleteStatement, deleteParams] = deleteByIdStatement(model.id, tableName);
179
+ await this.db.save(deleteStatement, deleteParams);
180
+ return [[model], [model]];
181
+ }
182
+ else {
183
+ const [deleteStatement, params] = deleteByIdStatement(model.id, tableName);
184
+ await this.db.save(deleteStatement, params);
185
+ return [[model], [model]];
186
+ }
187
+ }
188
+ }
189
+ async batchSave(modelConstructor, items) {
190
+ const { name: tableName } = modelConstructor;
191
+ const result = [];
192
+ const itemsToSave = [];
193
+ // To determine whether an item should result in an insert or update operation
194
+ // We first need to query the local DB on the item id
195
+ const queryStatements = new Set();
196
+ // Deletes don't need to be queried first, because if the item doesn't exist,
197
+ // the delete operation will be a no-op
198
+ const deleteStatements = new Set();
199
+ const saveStatements = new Set();
200
+ for (const item of items) {
201
+ const connectedModels = traverseModel(modelConstructor.name, this.modelInstanceCreator(modelConstructor, item), this.schema.namespaces[this.namespaceResolver(modelConstructor)], this.modelInstanceCreator, this.getModelConstructorByModelName);
202
+ const { id, _deleted } = item;
203
+ const { instance } = connectedModels.find(({ instance }) => instance.id === id);
204
+ if (_deleted) {
205
+ // create the delete statements right away
206
+ const deleteStatement = deleteByIdStatement(instance.id, tableName);
207
+ deleteStatements.add(deleteStatement);
208
+ result.push([item, OpType.DELETE]);
209
+ }
210
+ else {
211
+ // query statements for the saves at first
212
+ const queryStatement = queryByIdStatement(id, tableName);
213
+ queryStatements.add(queryStatement);
214
+ // combination of insert and update items
215
+ itemsToSave.push(instance);
216
+ }
217
+ }
218
+ // returns the query results for each of the save items
219
+ const queryResponses = await this.db.batchQuery(queryStatements);
220
+ queryResponses.forEach((response, idx) => {
221
+ if (response === undefined) {
222
+ const insertStatement = modelInsertStatement(itemsToSave[idx], tableName);
223
+ saveStatements.add(insertStatement);
224
+ result.push([itemsToSave[idx], OpType.INSERT]);
225
+ }
226
+ else {
227
+ const updateStatement = modelUpdateStatement(itemsToSave[idx], tableName);
228
+ saveStatements.add(updateStatement);
229
+ result.push([itemsToSave[idx], OpType.UPDATE]);
230
+ }
231
+ });
232
+ // perform all of the insert/update/delete operations in a single transaction
233
+ await this.db.batchSave(saveStatements, deleteStatements);
234
+ return result;
235
+ }
236
+ }
@@ -0,0 +1,36 @@
1
+ import { InternalSchema, SchemaModel, PersistentModel, PredicatesGroup, SortPredicatesGroup, GraphQLScalarType } from '@aws-amplify/datastore';
2
+ import { ParameterizedStatement } from './types';
3
+ export declare function getSQLiteType(scalar: keyof Omit<typeof GraphQLScalarType, 'getJSType' | 'getValidationFunction' | 'getSQLiteType'>): 'TEXT' | 'INTEGER' | 'REAL' | 'BLOB';
4
+ export declare function generateSchemaStatements(schema: InternalSchema): string[];
5
+ export declare const implicitAuthFieldsForModel: (model: SchemaModel) => string[];
6
+ export declare function modelCreateTableStatement(model: SchemaModel, userModel?: boolean): string;
7
+ export declare function modelInsertStatement(model: PersistentModel, tableName: string): ParameterizedStatement;
8
+ export declare function modelUpdateStatement(model: PersistentModel, tableName: string): ParameterizedStatement;
9
+ export declare function queryByIdStatement(id: string, tableName: string): ParameterizedStatement;
10
+ declare const comparisonOperatorMap: {
11
+ eq: string;
12
+ ne: string;
13
+ le: string;
14
+ lt: string;
15
+ ge: string;
16
+ gt: string;
17
+ };
18
+ declare const logicalOperatorMap: {
19
+ beginsWith: string;
20
+ contains: string;
21
+ notContains: string;
22
+ between: string;
23
+ };
24
+ export declare const whereConditionFromPredicateObject: ({ field, operator, operand, }: {
25
+ field: string;
26
+ operator: keyof typeof logicalOperatorMap | keyof typeof comparisonOperatorMap;
27
+ operand: any;
28
+ }) => ParameterizedStatement;
29
+ export declare function whereClauseFromPredicate<T extends PersistentModel>(predicate: PredicatesGroup<T>): ParameterizedStatement;
30
+ export declare function orderByClauseFromSort<T extends PersistentModel>(sortPredicate?: SortPredicatesGroup<T>): string;
31
+ export declare function limitClauseFromPagination(limit: number, page?: number): ParameterizedStatement;
32
+ export declare function queryAllStatement<T extends PersistentModel>(tableName: string, predicate?: PredicatesGroup<T>, sort?: SortPredicatesGroup<T>, limit?: number, page?: number): ParameterizedStatement;
33
+ export declare function queryOneStatement(firstOrLast: any, tableName: string): ParameterizedStatement;
34
+ export declare function deleteByIdStatement(id: string, tableName: string): ParameterizedStatement;
35
+ export declare function deleteByPredicateStatement<T extends PersistentModel>(tableName: string, predicate?: PredicatesGroup<T>): ParameterizedStatement;
36
+ export {};