MCPcopy Create free account
hub / github.com/TanStack/db / createExpoSQLitePersistence

Function createExpoSQLitePersistence

packages/expo-db-sqlite-persistence/src/expo.ts:91–150  ·  view source on GitHub ↗
(
  options: ExpoSQLitePersistenceOptions,
)

Source from the content-addressed store, hash-verified

89}
90
91export function createExpoSQLitePersistence(
92 options: ExpoSQLitePersistenceOptions,
93): PersistedCollectionPersistence {
94 const { coordinator, schemaMismatchPolicy } = options
95 const driver = createInternalSQLiteDriver(options)
96 const adapterBaseOptions = resolveAdapterBaseOptions(options)
97 const resolvedCoordinator = coordinator ?? new SingleProcessCoordinator()
98 const adapterCache = new Map<
99 string,
100 ReturnType<typeof createSQLiteCorePersistenceAdapter>
101 >()
102
103 const getAdapterForCollection = (
104 mode: PersistedCollectionMode,
105 schemaVersion: number | undefined,
106 ) => {
107 const resolvedSchemaMismatchPolicy = resolveSchemaMismatchPolicy(
108 schemaMismatchPolicy,
109 mode,
110 )
111 const cacheKey = createAdapterCacheKey(
112 resolvedSchemaMismatchPolicy,
113 schemaVersion,
114 )
115 const cachedAdapter = adapterCache.get(cacheKey)
116 if (cachedAdapter) {
117 return cachedAdapter
118 }
119
120 const adapter = createSQLiteCorePersistenceAdapter({
121 ...adapterBaseOptions,
122 driver,
123 schemaMismatchPolicy: resolvedSchemaMismatchPolicy,
124 ...(schemaVersion === undefined ? {} : { schemaVersion }),
125 })
126 adapterCache.set(cacheKey, adapter)
127 return adapter
128 }
129
130 const createCollectionPersistence = (
131 mode: PersistedCollectionMode,
132 schemaVersion: number | undefined,
133 ): PersistedCollectionPersistence => ({
134 adapter: getAdapterForCollection(mode, schemaVersion),
135 coordinator: resolvedCoordinator,
136 })
137
138 const defaultPersistence = createCollectionPersistence(
139 `sync-absent`,
140 undefined,
141 )
142
143 return {
144 ...defaultPersistence,
145 resolvePersistenceForCollection: ({ mode, schemaVersion }) =>
146 createCollectionPersistence(mode, schemaVersion),
147 resolvePersistenceForMode: (mode) =>
148 createCollectionPersistence(mode, undefined),

Calls 3

Tested by 1

createPersistenceFunction · 0.72