@powersync/common 1.48.0 → 1.49.0
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.
- package/dist/bundle.cjs +148 -8
- package/dist/bundle.cjs.map +1 -1
- package/dist/bundle.mjs +147 -9
- package/dist/bundle.mjs.map +1 -1
- package/dist/bundle.node.cjs +148 -8
- package/dist/bundle.node.cjs.map +1 -1
- package/dist/bundle.node.mjs +147 -9
- package/dist/bundle.node.mjs.map +1 -1
- package/dist/index.d.cts +64 -12
- package/lib/client/triggers/TriggerManager.d.ts +13 -1
- package/lib/client/triggers/TriggerManagerImpl.d.ts +2 -2
- package/lib/client/triggers/TriggerManagerImpl.js +19 -7
- package/lib/client/triggers/TriggerManagerImpl.js.map +1 -1
- package/lib/db/DBAdapter.d.ts +48 -8
- package/lib/db/DBAdapter.js +126 -0
- package/lib/db/DBAdapter.js.map +1 -1
- package/package.json +1 -1
- package/src/client/triggers/TriggerManager.ts +15 -2
- package/src/client/triggers/TriggerManagerImpl.ts +18 -6
- package/src/db/DBAdapter.ts +160 -8
package/dist/index.d.cts
CHANGED
|
@@ -61,7 +61,7 @@ interface DBGetUtils {
|
|
|
61
61
|
/** Execute a read-only query and return the first result, error if the ResultSet is empty. */
|
|
62
62
|
get<T>(sql: string, parameters?: any[]): Promise<T>;
|
|
63
63
|
}
|
|
64
|
-
interface
|
|
64
|
+
interface SqlExecutor {
|
|
65
65
|
/** Execute a single write statement. */
|
|
66
66
|
execute: (query: string, params?: any[] | undefined) => Promise<QueryResult>;
|
|
67
67
|
/**
|
|
@@ -79,7 +79,23 @@ interface LockContext extends DBGetUtils {
|
|
|
79
79
|
* ```[ { id: '33', name: 'list 1', content: 'Post content', list_id: '1' } ]```
|
|
80
80
|
*/
|
|
81
81
|
executeRaw: (query: string, params?: any[] | undefined) => Promise<any[][]>;
|
|
82
|
+
executeBatch: (query: string, params?: any[][]) => Promise<QueryResult>;
|
|
83
|
+
}
|
|
84
|
+
interface LockContext extends SqlExecutor, DBGetUtils {
|
|
82
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Implements {@link DBGetUtils} on a {@link SqlRunner}.
|
|
88
|
+
*/
|
|
89
|
+
declare function DBGetUtilsDefaultMixin<TBase extends new (...args: any[]) => Omit<SqlExecutor, 'executeBatch'>>(Base: TBase): {
|
|
90
|
+
new (...args: any[]): {
|
|
91
|
+
getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
|
|
92
|
+
getOptional<T>(sql: string, parameters?: any[]): Promise<T | null>;
|
|
93
|
+
get<T>(sql: string, parameters?: any[]): Promise<T>;
|
|
94
|
+
executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
|
|
95
|
+
execute: (query: string, params?: any[] | undefined) => Promise<QueryResult>;
|
|
96
|
+
executeRaw: (query: string, params?: any[] | undefined) => Promise<any[][]>;
|
|
97
|
+
};
|
|
98
|
+
} & TBase;
|
|
83
99
|
interface Transaction extends LockContext {
|
|
84
100
|
/** Commit multiple changes to the local DB using the Transaction context. */
|
|
85
101
|
commit: () => Promise<QueryResult>;
|
|
@@ -121,21 +137,45 @@ interface DBAdapterListener extends BaseListener {
|
|
|
121
137
|
interface DBLockOptions {
|
|
122
138
|
timeoutMs?: number;
|
|
123
139
|
}
|
|
124
|
-
interface
|
|
125
|
-
close: () => void | Promise<void>;
|
|
126
|
-
execute: (query: string, params?: any[]) => Promise<QueryResult>;
|
|
127
|
-
executeRaw: (query: string, params?: any[]) => Promise<any[][]>;
|
|
128
|
-
executeBatch: (query: string, params?: any[][]) => Promise<QueryResult>;
|
|
140
|
+
interface ConnectionPool extends BaseObserverInterface<DBAdapterListener> {
|
|
129
141
|
name: string;
|
|
142
|
+
close: () => void | Promise<void>;
|
|
130
143
|
readLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
131
|
-
readTransaction: <T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
132
144
|
writeLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
133
|
-
writeTransaction: <T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
134
145
|
/**
|
|
135
146
|
* This method refreshes the schema information across all connections. This is for advanced use cases, and should generally not be needed.
|
|
136
147
|
*/
|
|
137
148
|
refreshSchema: () => Promise<void>;
|
|
138
149
|
}
|
|
150
|
+
interface DBAdapter extends ConnectionPool, SqlExecutor, DBGetUtils {
|
|
151
|
+
readTransaction: <T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
152
|
+
writeTransaction: <T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* A mixin to implement {@link DBAdapter} by delegating to {@link ConnectionPool.readLock} and
|
|
156
|
+
* {@link ConnectionPool.writeLock}.
|
|
157
|
+
*/
|
|
158
|
+
declare function DBAdapterDefaultMixin<TBase extends new (...args: any[]) => ConnectionPool>(Base: TBase): {
|
|
159
|
+
new (...args: any[]): {
|
|
160
|
+
readTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
|
|
161
|
+
writeTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
|
|
162
|
+
getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
|
|
163
|
+
getOptional<T>(sql: string, parameters?: any[]): Promise<T | null>;
|
|
164
|
+
get<T>(sql: string, parameters?: any[]): Promise<T>;
|
|
165
|
+
execute(query: string, params?: any[]): Promise<QueryResult>;
|
|
166
|
+
executeRaw(query: string, params?: any[]): Promise<any[][]>;
|
|
167
|
+
executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
|
|
168
|
+
name: string;
|
|
169
|
+
close: () => void | Promise<void>;
|
|
170
|
+
readLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
171
|
+
writeLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
172
|
+
/**
|
|
173
|
+
* This method refreshes the schema information across all connections. This is for advanced use cases, and should generally not be needed.
|
|
174
|
+
*/
|
|
175
|
+
refreshSchema: () => Promise<void>;
|
|
176
|
+
registerListener(listener: Partial<DBAdapterListener>): () => void;
|
|
177
|
+
};
|
|
178
|
+
} & TBase;
|
|
139
179
|
declare function isBatchedUpdateNotification(update: BatchedUpdateNotification | UpdateNotification): update is BatchedUpdateNotification;
|
|
140
180
|
declare function extractTableUpdates(update: BatchedUpdateNotification | UpdateNotification): string[];
|
|
141
181
|
|
|
@@ -2684,12 +2724,24 @@ interface CreateDiffTriggerOptions extends BaseCreateDiffTriggerOptions {
|
|
|
2684
2724
|
* This table will be dropped once the trigger is removed.
|
|
2685
2725
|
*/
|
|
2686
2726
|
destination: string;
|
|
2727
|
+
/**
|
|
2728
|
+
* Context to use for the setup operation.
|
|
2729
|
+
* This is useful for when the setup operation needs to be executed in a specific context.
|
|
2730
|
+
*/
|
|
2731
|
+
setupContext?: LockContext;
|
|
2732
|
+
}
|
|
2733
|
+
/**
|
|
2734
|
+
* @experimental
|
|
2735
|
+
* Options for {@link TriggerRemoveCallback}.
|
|
2736
|
+
*/
|
|
2737
|
+
interface TriggerRemoveCallbackOptions {
|
|
2738
|
+
context?: LockContext;
|
|
2687
2739
|
}
|
|
2688
2740
|
/**
|
|
2689
2741
|
* @experimental
|
|
2690
2742
|
* Callback to drop a trigger after it has been created.
|
|
2691
2743
|
*/
|
|
2692
|
-
type TriggerRemoveCallback = () => Promise<void>;
|
|
2744
|
+
type TriggerRemoveCallback = (options?: TriggerRemoveCallbackOptions) => Promise<void>;
|
|
2693
2745
|
/**
|
|
2694
2746
|
* @experimental
|
|
2695
2747
|
* Options for {@link TriggerDiffHandlerContext#withDiff}.
|
|
@@ -2974,7 +3026,7 @@ declare class TriggerManagerImpl implements TriggerManager {
|
|
|
2974
3026
|
* Cleanup any SQLite triggers or tables that are no longer in use.
|
|
2975
3027
|
*/
|
|
2976
3028
|
cleanupResources(): Promise<void>;
|
|
2977
|
-
createDiffTrigger(options: CreateDiffTriggerOptions): Promise<() => Promise<void>>;
|
|
3029
|
+
createDiffTrigger(options: CreateDiffTriggerOptions): Promise<(options?: TriggerRemoveCallbackOptions) => Promise<void>>;
|
|
2978
3030
|
trackTableDiff(options: TrackDiffOptions): Promise<TriggerRemoveCallback>;
|
|
2979
3031
|
}
|
|
2980
3032
|
|
|
@@ -4313,5 +4365,5 @@ interface ParsedQuery {
|
|
|
4313
4365
|
}
|
|
4314
4366
|
declare const parseQuery: <T>(query: string | CompilableQuery<T>, parameters: any[]) => ParsedQuery;
|
|
4315
4367
|
|
|
4316
|
-
export { ATTACHMENT_TABLE, AbortOperation, AbstractPowerSyncDatabase, AbstractPowerSyncDatabaseOpenFactory, AbstractQueryProcessor, AbstractRemote, AbstractStreamingSyncImplementation, ArrayComparator, AttachmentContext, AttachmentQueue, AttachmentService, AttachmentState, AttachmentTable, BaseObserver, Column, ColumnType, ConnectionClosedError, ConnectionManager, ControlledExecutor, CrudBatch, CrudEntry, CrudTransaction, DEFAULT_CRUD_BATCH_LIMIT, DEFAULT_CRUD_UPLOAD_THROTTLE_MS, DEFAULT_INDEX_COLUMN_OPTIONS, DEFAULT_INDEX_OPTIONS, DEFAULT_LOCK_TIMEOUT_MS, DEFAULT_POWERSYNC_CLOSE_OPTIONS, DEFAULT_POWERSYNC_DB_OPTIONS, DEFAULT_PRESSURE_LIMITS, DEFAULT_REMOTE_LOGGER, DEFAULT_REMOTE_OPTIONS, DEFAULT_RETRY_DELAY_MS, DEFAULT_ROW_COMPARATOR, DEFAULT_STREAMING_SYNC_OPTIONS, DEFAULT_STREAM_CONNECTION_OPTIONS, DEFAULT_SYNC_CLIENT_IMPLEMENTATION, DEFAULT_TABLE_OPTIONS, DEFAULT_WATCH_QUERY_OPTIONS, DEFAULT_WATCH_THROTTLE_MS, DataStream, DiffTriggerOperation, DifferentialQueryProcessor, EMPTY_DIFFERENTIAL, EncodingType, FalsyComparator, FetchImplementationProvider, FetchStrategy, GetAllQuery, Index, IndexedColumn, InvalidSQLCharacters, LockType, LogLevel, MAX_AMOUNT_OF_COLUMNS, MAX_OP_ID, MEMORY_TRIGGER_CLAIM_MANAGER, OnChangeQueryProcessor, OpType, OpTypeEnum, OplogEntry, PSInternalTable, PowerSyncControlCommand, RowUpdateType, Schema, SqliteBucketStorage, SyncClientImplementation, SyncDataBatch, SyncDataBucket, SyncProgress, SyncStatus, SyncStreamConnectionMethod, SyncingService, Table, TableV2, TriggerManagerImpl, UpdateType, UploadQueueStats, WatchedQueryListenerEvent, attachmentFromSql, column, compilableQueryWatch, createBaseLogger, createLogger, extractTableUpdates, isBatchedUpdateNotification, isContinueCheckpointRequest, isDBAdapter, isPowerSyncDatabaseOptionsWithSettings, isSQLOpenFactory, isSQLOpenOptions, isStreamingKeepalive, isStreamingSyncCheckpoint, isStreamingSyncCheckpointComplete, isStreamingSyncCheckpointDiff, isStreamingSyncCheckpointPartiallyComplete, isStreamingSyncData, isSyncNewCheckpointRequest, mutexRunExclusive, parseQuery, runOnSchemaChange, sanitizeSQL, sanitizeUUID };
|
|
4317
|
-
export type { AbstractQueryProcessorOptions, AbstractRemoteOptions, AbstractStreamingSyncImplementationOptions, AdditionalConnectionOptions, ArrayComparatorOptions, ArrayQueryDefinition, AttachmentData, AttachmentErrorHandler, AttachmentRecord, AttachmentTableOptions, BSONImplementation, BaseColumnType, BaseConnectionOptions, BaseListener, BaseObserverInterface, BasePowerSyncDatabaseOptions, BaseTriggerDiffRecord, BatchedUpdateNotification, BucketChecksum, BucketDescription, BucketOperationProgress, BucketRequest, BucketState, BucketStorageAdapter, BucketStorageListener, Checkpoint, ChecksumCache, ColumnOptions, ColumnsType, CompilableQuery, CompilableQueryWatchHandler, CompiledQuery, ConnectionManagerListener, ConnectionManagerOptions, ConnectionManagerSyncImplementationResult, ContinueCheckpointRequest, ControlledExecutorOptions, CreateDiffTriggerOptions, CreateLoggerOptions, CreateSyncImplementationOptions, CrudRequest, CrudResponse, CrudUploadNotification, DBAdapter, DBAdapterListener, DBGetUtils, DBLockOptions, DataStreamCallback, DataStreamListener, DataStreamOptions, DifferentialQueryProcessorOptions, DifferentialWatchedQuery, DifferentialWatchedQueryComparator, DifferentialWatchedQueryListener, DifferentialWatchedQueryOptions, DifferentialWatchedQuerySettings, DisconnectAndClearOptions, Disposable, ExtractColumnValueType, ExtractedTriggerDiffRecord, FetchImplementation, GetAllQueryOptions, IndexColumnOptions, IndexOptions, IndexShorthand, InternalConnectionOptions, InternalSubscriptionAdapter, LinkQueryOptions, LocalStorageAdapter, LockContext, LockOptions, MutableWatchedQueryState, OnChangeQueryProcessorOptions, OpId, OpTypeJSON, OplogEntryJSON, ParsedQuery, PendingStatement, PendingStatementParameter, PowerSyncBackendConnector, PowerSyncCloseOptions, PowerSyncConnectionOptions, PowerSyncCredentials, PowerSyncDBListener, PowerSyncDatabaseOptions, PowerSyncDatabaseOptionsWithDBAdapter, PowerSyncDatabaseOptionsWithOpenFactory, PowerSyncDatabaseOptionsWithSettings, PowerSyncOpenFactoryOptions, ProgressWithOperations, Query, QueryParam, QueryResult, RawTableType, RemoteConnector, RemoteStorageAdapter, RequiredAdditionalConnectionOptions, RequiredPowerSyncConnectionOptions, RowType, SQLOnChangeOptions, SQLOpenFactory, SQLOpenOptions, SQLWatchOptions, SavedProgress, SchemaTableType, SocketSyncStreamOptions, StandardWatchedQuery, StandardWatchedQueryOptions, StreamingSyncCheckpoint, StreamingSyncCheckpointComplete, StreamingSyncCheckpointDiff, StreamingSyncCheckpointPartiallyComplete, StreamingSyncDataJSON, StreamingSyncImplementation, StreamingSyncImplementationListener, StreamingSyncKeepalive, StreamingSyncLine, StreamingSyncLineOrCrudUploadComplete, StreamingSyncRequest, StreamingSyncRequestParameterType, SubscribedStream, SyncDataBucketJSON, SyncDataFlowStatus, SyncLocalDatabaseResult, SyncNewCheckpointRequest, SyncPriorityStatus, SyncRequest, SyncResponse, SyncStatusOptions, SyncStream, SyncStreamDescription, SyncStreamOptions, SyncStreamStatus, SyncStreamSubscribeOptions, SyncStreamSubscription, SyncSubscriptionDescription, TableOptions, TableOrRawTableOptions, TableUpdateOperation, TableV2Options, TrackDiffOptions, TrackPreviousOptions, Transaction, TriggerClaimManager, TriggerCreationHooks, TriggerDiffDeleteRecord, TriggerDiffHandlerContext, TriggerDiffInsertRecord, TriggerDiffRecord, TriggerDiffUpdateRecord, TriggerManager, TriggerManagerConfig, TriggerRemoveCallback, UpdateNotification, WatchCompatibleQuery, WatchExecuteOptions, WatchHandler, WatchOnChangeEvent, WatchOnChangeHandler, WatchedAttachmentItem, WatchedQuery, WatchedQueryComparator, WatchedQueryDifferential, WatchedQueryListener, WatchedQueryOptions, WatchedQueryRowDifferential, WatchedQuerySettings, WatchedQueryState, WithDiffOptions };
|
|
4368
|
+
export { ATTACHMENT_TABLE, AbortOperation, AbstractPowerSyncDatabase, AbstractPowerSyncDatabaseOpenFactory, AbstractQueryProcessor, AbstractRemote, AbstractStreamingSyncImplementation, ArrayComparator, AttachmentContext, AttachmentQueue, AttachmentService, AttachmentState, AttachmentTable, BaseObserver, Column, ColumnType, ConnectionClosedError, ConnectionManager, ControlledExecutor, CrudBatch, CrudEntry, CrudTransaction, DBAdapterDefaultMixin, DBGetUtilsDefaultMixin, DEFAULT_CRUD_BATCH_LIMIT, DEFAULT_CRUD_UPLOAD_THROTTLE_MS, DEFAULT_INDEX_COLUMN_OPTIONS, DEFAULT_INDEX_OPTIONS, DEFAULT_LOCK_TIMEOUT_MS, DEFAULT_POWERSYNC_CLOSE_OPTIONS, DEFAULT_POWERSYNC_DB_OPTIONS, DEFAULT_PRESSURE_LIMITS, DEFAULT_REMOTE_LOGGER, DEFAULT_REMOTE_OPTIONS, DEFAULT_RETRY_DELAY_MS, DEFAULT_ROW_COMPARATOR, DEFAULT_STREAMING_SYNC_OPTIONS, DEFAULT_STREAM_CONNECTION_OPTIONS, DEFAULT_SYNC_CLIENT_IMPLEMENTATION, DEFAULT_TABLE_OPTIONS, DEFAULT_WATCH_QUERY_OPTIONS, DEFAULT_WATCH_THROTTLE_MS, DataStream, DiffTriggerOperation, DifferentialQueryProcessor, EMPTY_DIFFERENTIAL, EncodingType, FalsyComparator, FetchImplementationProvider, FetchStrategy, GetAllQuery, Index, IndexedColumn, InvalidSQLCharacters, LockType, LogLevel, MAX_AMOUNT_OF_COLUMNS, MAX_OP_ID, MEMORY_TRIGGER_CLAIM_MANAGER, OnChangeQueryProcessor, OpType, OpTypeEnum, OplogEntry, PSInternalTable, PowerSyncControlCommand, RowUpdateType, Schema, SqliteBucketStorage, SyncClientImplementation, SyncDataBatch, SyncDataBucket, SyncProgress, SyncStatus, SyncStreamConnectionMethod, SyncingService, Table, TableV2, TriggerManagerImpl, UpdateType, UploadQueueStats, WatchedQueryListenerEvent, attachmentFromSql, column, compilableQueryWatch, createBaseLogger, createLogger, extractTableUpdates, isBatchedUpdateNotification, isContinueCheckpointRequest, isDBAdapter, isPowerSyncDatabaseOptionsWithSettings, isSQLOpenFactory, isSQLOpenOptions, isStreamingKeepalive, isStreamingSyncCheckpoint, isStreamingSyncCheckpointComplete, isStreamingSyncCheckpointDiff, isStreamingSyncCheckpointPartiallyComplete, isStreamingSyncData, isSyncNewCheckpointRequest, mutexRunExclusive, parseQuery, runOnSchemaChange, sanitizeSQL, sanitizeUUID };
|
|
4369
|
+
export type { AbstractQueryProcessorOptions, AbstractRemoteOptions, AbstractStreamingSyncImplementationOptions, AdditionalConnectionOptions, ArrayComparatorOptions, ArrayQueryDefinition, AttachmentData, AttachmentErrorHandler, AttachmentRecord, AttachmentTableOptions, BSONImplementation, BaseColumnType, BaseConnectionOptions, BaseListener, BaseObserverInterface, BasePowerSyncDatabaseOptions, BaseTriggerDiffRecord, BatchedUpdateNotification, BucketChecksum, BucketDescription, BucketOperationProgress, BucketRequest, BucketState, BucketStorageAdapter, BucketStorageListener, Checkpoint, ChecksumCache, ColumnOptions, ColumnsType, CompilableQuery, CompilableQueryWatchHandler, CompiledQuery, ConnectionManagerListener, ConnectionManagerOptions, ConnectionManagerSyncImplementationResult, ConnectionPool, ContinueCheckpointRequest, ControlledExecutorOptions, CreateDiffTriggerOptions, CreateLoggerOptions, CreateSyncImplementationOptions, CrudRequest, CrudResponse, CrudUploadNotification, DBAdapter, DBAdapterListener, DBGetUtils, DBLockOptions, DataStreamCallback, DataStreamListener, DataStreamOptions, DifferentialQueryProcessorOptions, DifferentialWatchedQuery, DifferentialWatchedQueryComparator, DifferentialWatchedQueryListener, DifferentialWatchedQueryOptions, DifferentialWatchedQuerySettings, DisconnectAndClearOptions, Disposable, ExtractColumnValueType, ExtractedTriggerDiffRecord, FetchImplementation, GetAllQueryOptions, IndexColumnOptions, IndexOptions, IndexShorthand, InternalConnectionOptions, InternalSubscriptionAdapter, LinkQueryOptions, LocalStorageAdapter, LockContext, LockOptions, MutableWatchedQueryState, OnChangeQueryProcessorOptions, OpId, OpTypeJSON, OplogEntryJSON, ParsedQuery, PendingStatement, PendingStatementParameter, PowerSyncBackendConnector, PowerSyncCloseOptions, PowerSyncConnectionOptions, PowerSyncCredentials, PowerSyncDBListener, PowerSyncDatabaseOptions, PowerSyncDatabaseOptionsWithDBAdapter, PowerSyncDatabaseOptionsWithOpenFactory, PowerSyncDatabaseOptionsWithSettings, PowerSyncOpenFactoryOptions, ProgressWithOperations, Query, QueryParam, QueryResult, RawTableType, RemoteConnector, RemoteStorageAdapter, RequiredAdditionalConnectionOptions, RequiredPowerSyncConnectionOptions, RowType, SQLOnChangeOptions, SQLOpenFactory, SQLOpenOptions, SQLWatchOptions, SavedProgress, SchemaTableType, SocketSyncStreamOptions, SqlExecutor, StandardWatchedQuery, StandardWatchedQueryOptions, StreamingSyncCheckpoint, StreamingSyncCheckpointComplete, StreamingSyncCheckpointDiff, StreamingSyncCheckpointPartiallyComplete, StreamingSyncDataJSON, StreamingSyncImplementation, StreamingSyncImplementationListener, StreamingSyncKeepalive, StreamingSyncLine, StreamingSyncLineOrCrudUploadComplete, StreamingSyncRequest, StreamingSyncRequestParameterType, SubscribedStream, SyncDataBucketJSON, SyncDataFlowStatus, SyncLocalDatabaseResult, SyncNewCheckpointRequest, SyncPriorityStatus, SyncRequest, SyncResponse, SyncStatusOptions, SyncStream, SyncStreamDescription, SyncStreamOptions, SyncStreamStatus, SyncStreamSubscribeOptions, SyncStreamSubscription, SyncSubscriptionDescription, TableOptions, TableOrRawTableOptions, TableUpdateOperation, TableV2Options, TrackDiffOptions, TrackPreviousOptions, Transaction, TriggerClaimManager, TriggerCreationHooks, TriggerDiffDeleteRecord, TriggerDiffHandlerContext, TriggerDiffInsertRecord, TriggerDiffRecord, TriggerDiffUpdateRecord, TriggerManager, TriggerManagerConfig, TriggerRemoveCallback, TriggerRemoveCallbackOptions, UpdateNotification, WatchCompatibleQuery, WatchExecuteOptions, WatchHandler, WatchOnChangeEvent, WatchOnChangeHandler, WatchedAttachmentItem, WatchedQuery, WatchedQueryComparator, WatchedQueryDifferential, WatchedQueryListener, WatchedQueryOptions, WatchedQueryRowDifferential, WatchedQuerySettings, WatchedQueryState, WithDiffOptions };
|
|
@@ -198,12 +198,24 @@ export interface CreateDiffTriggerOptions extends BaseCreateDiffTriggerOptions {
|
|
|
198
198
|
* This table will be dropped once the trigger is removed.
|
|
199
199
|
*/
|
|
200
200
|
destination: string;
|
|
201
|
+
/**
|
|
202
|
+
* Context to use for the setup operation.
|
|
203
|
+
* This is useful for when the setup operation needs to be executed in a specific context.
|
|
204
|
+
*/
|
|
205
|
+
setupContext?: LockContext;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* @experimental
|
|
209
|
+
* Options for {@link TriggerRemoveCallback}.
|
|
210
|
+
*/
|
|
211
|
+
export interface TriggerRemoveCallbackOptions {
|
|
212
|
+
context?: LockContext;
|
|
201
213
|
}
|
|
202
214
|
/**
|
|
203
215
|
* @experimental
|
|
204
216
|
* Callback to drop a trigger after it has been created.
|
|
205
217
|
*/
|
|
206
|
-
export type TriggerRemoveCallback = () => Promise<void>;
|
|
218
|
+
export type TriggerRemoveCallback = (options?: TriggerRemoveCallbackOptions) => Promise<void>;
|
|
207
219
|
/**
|
|
208
220
|
* @experimental
|
|
209
221
|
* Options for {@link TriggerDiffHandlerContext#withDiff}.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { LockContext } from '../../db/DBAdapter.js';
|
|
2
2
|
import { Schema } from '../../db/schema/Schema.js';
|
|
3
3
|
import type { AbstractPowerSyncDatabase } from '../AbstractPowerSyncDatabase.js';
|
|
4
|
-
import { CreateDiffTriggerOptions, DiffTriggerOperation, TrackDiffOptions, TriggerManager, TriggerManagerConfig, TriggerRemoveCallback } from './TriggerManager.js';
|
|
4
|
+
import { CreateDiffTriggerOptions, DiffTriggerOperation, TrackDiffOptions, TriggerManager, TriggerManagerConfig, TriggerRemoveCallback, TriggerRemoveCallbackOptions } from './TriggerManager.js';
|
|
5
5
|
export type TriggerManagerImplOptions = TriggerManagerConfig & {
|
|
6
6
|
db: AbstractPowerSyncDatabase;
|
|
7
7
|
schema: Schema;
|
|
@@ -34,6 +34,6 @@ export declare class TriggerManagerImpl implements TriggerManager {
|
|
|
34
34
|
* Cleanup any SQLite triggers or tables that are no longer in use.
|
|
35
35
|
*/
|
|
36
36
|
cleanupResources(): Promise<void>;
|
|
37
|
-
createDiffTrigger(options: CreateDiffTriggerOptions): Promise<() => Promise<void>>;
|
|
37
|
+
createDiffTrigger(options: CreateDiffTriggerOptions): Promise<(options?: TriggerRemoveCallbackOptions) => Promise<void>>;
|
|
38
38
|
trackTableDiff(options: TrackDiffOptions): Promise<TriggerRemoveCallback>;
|
|
39
39
|
}
|
|
@@ -141,7 +141,7 @@ export class TriggerManagerImpl {
|
|
|
141
141
|
}
|
|
142
142
|
async createDiffTrigger(options) {
|
|
143
143
|
await this.db.waitForReady();
|
|
144
|
-
const { source, destination, columns, when, hooks,
|
|
144
|
+
const { source, destination, columns, when, hooks, setupContext,
|
|
145
145
|
// Fall back to the provided default if not given on this level
|
|
146
146
|
useStorage = this.defaultConfig.useStorageByDefault } = options;
|
|
147
147
|
const operations = Object.keys(when);
|
|
@@ -196,13 +196,20 @@ export class TriggerManagerImpl {
|
|
|
196
196
|
* we need to ensure we can cleanup the created resources.
|
|
197
197
|
* We unfortunately cannot rely on transaction rollback.
|
|
198
198
|
*/
|
|
199
|
-
const cleanup = async () => {
|
|
199
|
+
const cleanup = async (options) => {
|
|
200
|
+
const { context } = options ?? {};
|
|
200
201
|
disposeWarningListener();
|
|
201
|
-
|
|
202
|
+
const doCleanup = async (tx) => {
|
|
202
203
|
await this.removeTriggers(tx, triggerIds);
|
|
203
|
-
await tx.execute(
|
|
204
|
+
await tx.execute(`DROP TABLE IF EXISTS ${destination};`);
|
|
204
205
|
await releaseStorageClaim?.();
|
|
205
|
-
}
|
|
206
|
+
};
|
|
207
|
+
if (context) {
|
|
208
|
+
await doCleanup(context);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
await this.db.writeLock(doCleanup);
|
|
212
|
+
}
|
|
206
213
|
};
|
|
207
214
|
const setup = async (tx) => {
|
|
208
215
|
// Allow user code to execute in this lock context before the trigger is created.
|
|
@@ -276,12 +283,17 @@ export class TriggerManagerImpl {
|
|
|
276
283
|
}
|
|
277
284
|
};
|
|
278
285
|
try {
|
|
279
|
-
|
|
286
|
+
if (setupContext) {
|
|
287
|
+
await setup(setupContext);
|
|
288
|
+
}
|
|
289
|
+
else {
|
|
290
|
+
await this.db.writeLock(setup);
|
|
291
|
+
}
|
|
280
292
|
return cleanup;
|
|
281
293
|
}
|
|
282
294
|
catch (error) {
|
|
283
295
|
try {
|
|
284
|
-
await cleanup();
|
|
296
|
+
await cleanup(setupContext ? { context: setupContext } : undefined);
|
|
285
297
|
}
|
|
286
298
|
catch (cleanupError) {
|
|
287
299
|
throw new AggregateError([error, cleanupError], 'Error during operation and cleanup');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriggerManagerImpl.js","sourceRoot":"","sources":["../../../src/client/triggers/TriggerManagerImpl.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TriggerManagerImpl.js","sourceRoot":"","sources":["../../../src/client/triggers/TriggerManagerImpl.ts"],"names":[],"mappings":"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"}
|
package/lib/db/DBAdapter.d.ts
CHANGED
|
@@ -36,7 +36,7 @@ export interface DBGetUtils {
|
|
|
36
36
|
/** Execute a read-only query and return the first result, error if the ResultSet is empty. */
|
|
37
37
|
get<T>(sql: string, parameters?: any[]): Promise<T>;
|
|
38
38
|
}
|
|
39
|
-
export interface
|
|
39
|
+
export interface SqlExecutor {
|
|
40
40
|
/** Execute a single write statement. */
|
|
41
41
|
execute: (query: string, params?: any[] | undefined) => Promise<QueryResult>;
|
|
42
42
|
/**
|
|
@@ -54,7 +54,23 @@ export interface LockContext extends DBGetUtils {
|
|
|
54
54
|
* ```[ { id: '33', name: 'list 1', content: 'Post content', list_id: '1' } ]```
|
|
55
55
|
*/
|
|
56
56
|
executeRaw: (query: string, params?: any[] | undefined) => Promise<any[][]>;
|
|
57
|
+
executeBatch: (query: string, params?: any[][]) => Promise<QueryResult>;
|
|
58
|
+
}
|
|
59
|
+
export interface LockContext extends SqlExecutor, DBGetUtils {
|
|
57
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Implements {@link DBGetUtils} on a {@link SqlRunner}.
|
|
63
|
+
*/
|
|
64
|
+
export declare function DBGetUtilsDefaultMixin<TBase extends new (...args: any[]) => Omit<SqlExecutor, 'executeBatch'>>(Base: TBase): {
|
|
65
|
+
new (...args: any[]): {
|
|
66
|
+
getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
|
|
67
|
+
getOptional<T>(sql: string, parameters?: any[]): Promise<T | null>;
|
|
68
|
+
get<T>(sql: string, parameters?: any[]): Promise<T>;
|
|
69
|
+
executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
|
|
70
|
+
execute: (query: string, params?: any[] | undefined) => Promise<QueryResult>;
|
|
71
|
+
executeRaw: (query: string, params?: any[] | undefined) => Promise<any[][]>;
|
|
72
|
+
};
|
|
73
|
+
} & TBase;
|
|
58
74
|
export interface Transaction extends LockContext {
|
|
59
75
|
/** Commit multiple changes to the local DB using the Transaction context. */
|
|
60
76
|
commit: () => Promise<QueryResult>;
|
|
@@ -96,20 +112,44 @@ export interface DBAdapterListener extends BaseListener {
|
|
|
96
112
|
export interface DBLockOptions {
|
|
97
113
|
timeoutMs?: number;
|
|
98
114
|
}
|
|
99
|
-
export interface
|
|
100
|
-
close: () => void | Promise<void>;
|
|
101
|
-
execute: (query: string, params?: any[]) => Promise<QueryResult>;
|
|
102
|
-
executeRaw: (query: string, params?: any[]) => Promise<any[][]>;
|
|
103
|
-
executeBatch: (query: string, params?: any[][]) => Promise<QueryResult>;
|
|
115
|
+
export interface ConnectionPool extends BaseObserverInterface<DBAdapterListener> {
|
|
104
116
|
name: string;
|
|
117
|
+
close: () => void | Promise<void>;
|
|
105
118
|
readLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
106
|
-
readTransaction: <T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
107
119
|
writeLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
108
|
-
writeTransaction: <T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
109
120
|
/**
|
|
110
121
|
* This method refreshes the schema information across all connections. This is for advanced use cases, and should generally not be needed.
|
|
111
122
|
*/
|
|
112
123
|
refreshSchema: () => Promise<void>;
|
|
113
124
|
}
|
|
125
|
+
export interface DBAdapter extends ConnectionPool, SqlExecutor, DBGetUtils {
|
|
126
|
+
readTransaction: <T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
127
|
+
writeTransaction: <T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* A mixin to implement {@link DBAdapter} by delegating to {@link ConnectionPool.readLock} and
|
|
131
|
+
* {@link ConnectionPool.writeLock}.
|
|
132
|
+
*/
|
|
133
|
+
export declare function DBAdapterDefaultMixin<TBase extends new (...args: any[]) => ConnectionPool>(Base: TBase): {
|
|
134
|
+
new (...args: any[]): {
|
|
135
|
+
readTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
|
|
136
|
+
writeTransaction<T>(fn: (tx: Transaction) => Promise<T>, options?: DBLockOptions): Promise<T>;
|
|
137
|
+
getAll<T>(sql: string, parameters?: any[]): Promise<T[]>;
|
|
138
|
+
getOptional<T>(sql: string, parameters?: any[]): Promise<T | null>;
|
|
139
|
+
get<T>(sql: string, parameters?: any[]): Promise<T>;
|
|
140
|
+
execute(query: string, params?: any[]): Promise<QueryResult>;
|
|
141
|
+
executeRaw(query: string, params?: any[]): Promise<any[][]>;
|
|
142
|
+
executeBatch(query: string, params?: any[][]): Promise<QueryResult>;
|
|
143
|
+
name: string;
|
|
144
|
+
close: () => void | Promise<void>;
|
|
145
|
+
readLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
146
|
+
writeLock: <T>(fn: (tx: LockContext) => Promise<T>, options?: DBLockOptions) => Promise<T>;
|
|
147
|
+
/**
|
|
148
|
+
* This method refreshes the schema information across all connections. This is for advanced use cases, and should generally not be needed.
|
|
149
|
+
*/
|
|
150
|
+
refreshSchema: () => Promise<void>;
|
|
151
|
+
registerListener(listener: Partial<DBAdapterListener>): () => void;
|
|
152
|
+
};
|
|
153
|
+
} & TBase;
|
|
114
154
|
export declare function isBatchedUpdateNotification(update: BatchedUpdateNotification | UpdateNotification): update is BatchedUpdateNotification;
|
|
115
155
|
export declare function extractTableUpdates(update: BatchedUpdateNotification | UpdateNotification): string[];
|
package/lib/db/DBAdapter.js
CHANGED
|
@@ -2,6 +2,49 @@
|
|
|
2
2
|
* Set of generic interfaces to allow PowerSync compatibility with
|
|
3
3
|
* different SQLite DB implementations.
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* Implements {@link DBGetUtils} on a {@link SqlRunner}.
|
|
7
|
+
*/
|
|
8
|
+
export function DBGetUtilsDefaultMixin(Base) {
|
|
9
|
+
return class extends Base {
|
|
10
|
+
async getAll(sql, parameters) {
|
|
11
|
+
const res = await this.execute(sql, parameters);
|
|
12
|
+
return res.rows?._array ?? [];
|
|
13
|
+
}
|
|
14
|
+
async getOptional(sql, parameters) {
|
|
15
|
+
const res = await this.execute(sql, parameters);
|
|
16
|
+
return res.rows?.item(0) ?? null;
|
|
17
|
+
}
|
|
18
|
+
async get(sql, parameters) {
|
|
19
|
+
const res = await this.execute(sql, parameters);
|
|
20
|
+
const first = res.rows?.item(0);
|
|
21
|
+
if (!first) {
|
|
22
|
+
throw new Error('Result set is empty');
|
|
23
|
+
}
|
|
24
|
+
return first;
|
|
25
|
+
}
|
|
26
|
+
async executeBatch(query, params = []) {
|
|
27
|
+
// If this context can run batch statements natively, use that.
|
|
28
|
+
// @ts-ignore
|
|
29
|
+
if (super.executeBatch) {
|
|
30
|
+
// @ts-ignore
|
|
31
|
+
return super.executeBatch(query, params);
|
|
32
|
+
}
|
|
33
|
+
// Emulate executeBatch by running statements individually.
|
|
34
|
+
let lastInsertId;
|
|
35
|
+
let rowsAffected = 0;
|
|
36
|
+
for (const set of params) {
|
|
37
|
+
const result = await this.execute(query, set);
|
|
38
|
+
lastInsertId = result.insertId;
|
|
39
|
+
rowsAffected += result.rowsAffected;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
rowsAffected,
|
|
43
|
+
insertId: lastInsertId
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
5
48
|
/**
|
|
6
49
|
* Update table operation numbers from SQLite
|
|
7
50
|
*/
|
|
@@ -11,6 +54,89 @@ export var RowUpdateType;
|
|
|
11
54
|
RowUpdateType[RowUpdateType["SQLITE_DELETE"] = 9] = "SQLITE_DELETE";
|
|
12
55
|
RowUpdateType[RowUpdateType["SQLITE_UPDATE"] = 23] = "SQLITE_UPDATE";
|
|
13
56
|
})(RowUpdateType || (RowUpdateType = {}));
|
|
57
|
+
/**
|
|
58
|
+
* A mixin to implement {@link DBAdapter} by delegating to {@link ConnectionPool.readLock} and
|
|
59
|
+
* {@link ConnectionPool.writeLock}.
|
|
60
|
+
*/
|
|
61
|
+
export function DBAdapterDefaultMixin(Base) {
|
|
62
|
+
return class extends Base {
|
|
63
|
+
readTransaction(fn, options) {
|
|
64
|
+
return this.readLock((ctx) => TransactionImplementation.runWith(ctx, fn), options);
|
|
65
|
+
}
|
|
66
|
+
writeTransaction(fn, options) {
|
|
67
|
+
return this.writeLock((ctx) => TransactionImplementation.runWith(ctx, fn), options);
|
|
68
|
+
}
|
|
69
|
+
getAll(sql, parameters) {
|
|
70
|
+
return this.readLock((ctx) => ctx.getAll(sql, parameters));
|
|
71
|
+
}
|
|
72
|
+
getOptional(sql, parameters) {
|
|
73
|
+
return this.readLock((ctx) => ctx.getOptional(sql, parameters));
|
|
74
|
+
}
|
|
75
|
+
get(sql, parameters) {
|
|
76
|
+
return this.readLock((ctx) => ctx.get(sql, parameters));
|
|
77
|
+
}
|
|
78
|
+
execute(query, params) {
|
|
79
|
+
return this.writeLock((ctx) => ctx.execute(query, params));
|
|
80
|
+
}
|
|
81
|
+
executeRaw(query, params) {
|
|
82
|
+
return this.writeLock((ctx) => ctx.executeRaw(query, params));
|
|
83
|
+
}
|
|
84
|
+
executeBatch(query, params) {
|
|
85
|
+
return this.writeTransaction((tx) => tx.executeBatch(query, params));
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
class BaseTransaction {
|
|
90
|
+
inner;
|
|
91
|
+
finalized = false;
|
|
92
|
+
constructor(inner) {
|
|
93
|
+
this.inner = inner;
|
|
94
|
+
}
|
|
95
|
+
async commit() {
|
|
96
|
+
if (this.finalized) {
|
|
97
|
+
return { rowsAffected: 0 };
|
|
98
|
+
}
|
|
99
|
+
this.finalized = true;
|
|
100
|
+
return this.inner.execute('COMMIT');
|
|
101
|
+
}
|
|
102
|
+
async rollback() {
|
|
103
|
+
if (this.finalized) {
|
|
104
|
+
return { rowsAffected: 0 };
|
|
105
|
+
}
|
|
106
|
+
this.finalized = true;
|
|
107
|
+
return this.inner.execute('ROLLBACK');
|
|
108
|
+
}
|
|
109
|
+
execute(query, params) {
|
|
110
|
+
return this.inner.execute(query, params);
|
|
111
|
+
}
|
|
112
|
+
executeRaw(query, params) {
|
|
113
|
+
return this.inner.executeRaw(query, params);
|
|
114
|
+
}
|
|
115
|
+
executeBatch(query, params) {
|
|
116
|
+
return this.inner.executeBatch(query, params);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
class TransactionImplementation extends DBGetUtilsDefaultMixin(BaseTransaction) {
|
|
120
|
+
static async runWith(ctx, fn) {
|
|
121
|
+
let tx = new TransactionImplementation(ctx);
|
|
122
|
+
try {
|
|
123
|
+
await ctx.execute('BEGIN IMMEDIATE');
|
|
124
|
+
const result = await fn(tx);
|
|
125
|
+
await tx.commit();
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
catch (ex) {
|
|
129
|
+
try {
|
|
130
|
+
await tx.rollback();
|
|
131
|
+
}
|
|
132
|
+
catch (ex2) {
|
|
133
|
+
// In rare cases, a rollback may fail.
|
|
134
|
+
// Safe to ignore.
|
|
135
|
+
}
|
|
136
|
+
throw ex;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
14
140
|
export function isBatchedUpdateNotification(update) {
|
|
15
141
|
return 'tables' in update;
|
|
16
142
|
}
|
package/lib/db/DBAdapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DBAdapter.js","sourceRoot":"","sources":["../../src/db/DBAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"DBAdapter.js","sourceRoot":"","sources":["../../src/db/DBAdapter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -223,14 +223,27 @@ export interface CreateDiffTriggerOptions extends BaseCreateDiffTriggerOptions {
|
|
|
223
223
|
* This table will be dropped once the trigger is removed.
|
|
224
224
|
*/
|
|
225
225
|
destination: string;
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* Context to use for the setup operation.
|
|
229
|
+
* This is useful for when the setup operation needs to be executed in a specific context.
|
|
230
|
+
*/
|
|
231
|
+
setupContext?: LockContext;
|
|
226
232
|
}
|
|
227
233
|
|
|
228
234
|
/**
|
|
229
235
|
* @experimental
|
|
230
|
-
*
|
|
236
|
+
* Options for {@link TriggerRemoveCallback}.
|
|
231
237
|
*/
|
|
232
|
-
export
|
|
238
|
+
export interface TriggerRemoveCallbackOptions {
|
|
239
|
+
context?: LockContext;
|
|
240
|
+
}
|
|
233
241
|
|
|
242
|
+
/**
|
|
243
|
+
* @experimental
|
|
244
|
+
* Callback to drop a trigger after it has been created.
|
|
245
|
+
*/
|
|
246
|
+
export type TriggerRemoveCallback = (options?: TriggerRemoveCallbackOptions) => Promise<void>;
|
|
234
247
|
/**
|
|
235
248
|
* @experimental
|
|
236
249
|
* Options for {@link TriggerDiffHandlerContext#withDiff}.
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
TriggerManager,
|
|
10
10
|
TriggerManagerConfig,
|
|
11
11
|
TriggerRemoveCallback,
|
|
12
|
+
TriggerRemoveCallbackOptions,
|
|
12
13
|
WithDiffOptions
|
|
13
14
|
} from './TriggerManager.js';
|
|
14
15
|
|
|
@@ -201,6 +202,7 @@ export class TriggerManagerImpl implements TriggerManager {
|
|
|
201
202
|
columns,
|
|
202
203
|
when,
|
|
203
204
|
hooks,
|
|
205
|
+
setupContext,
|
|
204
206
|
// Fall back to the provided default if not given on this level
|
|
205
207
|
useStorage = this.defaultConfig.useStorageByDefault
|
|
206
208
|
} = options;
|
|
@@ -268,13 +270,19 @@ export class TriggerManagerImpl implements TriggerManager {
|
|
|
268
270
|
* we need to ensure we can cleanup the created resources.
|
|
269
271
|
* We unfortunately cannot rely on transaction rollback.
|
|
270
272
|
*/
|
|
271
|
-
const cleanup = async () => {
|
|
273
|
+
const cleanup = async (options?: TriggerRemoveCallbackOptions) => {
|
|
274
|
+
const { context } = options ?? {};
|
|
272
275
|
disposeWarningListener();
|
|
273
|
-
|
|
276
|
+
const doCleanup = async (tx: LockContext) => {
|
|
274
277
|
await this.removeTriggers(tx, triggerIds);
|
|
275
|
-
await tx.execute(
|
|
278
|
+
await tx.execute(`DROP TABLE IF EXISTS ${destination};`);
|
|
276
279
|
await releaseStorageClaim?.();
|
|
277
|
-
}
|
|
280
|
+
};
|
|
281
|
+
if (context) {
|
|
282
|
+
await doCleanup(context);
|
|
283
|
+
} else {
|
|
284
|
+
await this.db.writeLock(doCleanup);
|
|
285
|
+
}
|
|
278
286
|
};
|
|
279
287
|
|
|
280
288
|
const setup = async (tx: LockContext) => {
|
|
@@ -360,11 +368,15 @@ export class TriggerManagerImpl implements TriggerManager {
|
|
|
360
368
|
};
|
|
361
369
|
|
|
362
370
|
try {
|
|
363
|
-
|
|
371
|
+
if (setupContext) {
|
|
372
|
+
await setup(setupContext);
|
|
373
|
+
} else {
|
|
374
|
+
await this.db.writeLock(setup);
|
|
375
|
+
}
|
|
364
376
|
return cleanup;
|
|
365
377
|
} catch (error) {
|
|
366
378
|
try {
|
|
367
|
-
await cleanup();
|
|
379
|
+
await cleanup(setupContext ? { context: setupContext } : undefined);
|
|
368
380
|
} catch (cleanupError) {
|
|
369
381
|
throw new AggregateError([error, cleanupError], 'Error during operation and cleanup');
|
|
370
382
|
}
|