feat(index): full sync operations (#11178)
Closes: FRMW-2892, FRMW-2893
**What**
Wired up the building block that we merged previously in order to manage data synchronization. The flow is as follow
- On application start
- Build schema object representation from configuration
- Check configuration changes
- if new entities configured
- Data synchronizer initialize orchestrator and start sync
- for each entity
- acquire lock
- mark existing data as staled
- sync all data by batch
- marked them not staled anymore
- acknowledge each processed batch and renew lock
- update metadata with last synced cursor for entity X
- release lock
- remove all remaining staled data
- if any entities removed from last configuration
- remove the index data and relations
Co-authored-by: Carlos R. L. Rodrigues <37986729+carlos-r-l-rodrigues@users.noreply.github.com>
This commit is contained in:
co-authored by
Carlos R. L. Rodrigues
parent
60f46e07fd
commit
a33aebd895
@@ -1,4 +1,8 @@
|
||||
const { defineConfig, Modules } = require("@medusajs/framework/utils")
|
||||
const {
|
||||
defineConfig,
|
||||
Modules,
|
||||
ContainerRegistrationKeys,
|
||||
} = require("@medusajs/framework/utils")
|
||||
const { schema } = require("./schema")
|
||||
|
||||
export const dbName = "medusa-index-integration-2024"
|
||||
@@ -26,13 +30,19 @@ Object.keys(config.modules).forEach((key) => {
|
||||
|
||||
config.modules[Modules.INDEX] = {
|
||||
resolve: "@medusajs/index",
|
||||
dependencies: [Modules.EVENT_BUS],
|
||||
dependencies: [
|
||||
Modules.EVENT_BUS,
|
||||
Modules.LOCKING,
|
||||
ContainerRegistrationKeys.REMOTE_QUERY,
|
||||
ContainerRegistrationKeys.QUERY,
|
||||
],
|
||||
options: {
|
||||
schema,
|
||||
},
|
||||
}
|
||||
|
||||
config.modules[Modules.PRODUCT] = true
|
||||
config.modules[Modules.LOCKING] = true
|
||||
config.modules[Modules.PRICING] = true
|
||||
|
||||
export default config
|
||||
|
||||
Reference in New Issue
Block a user