Skip to content

Commit 483660e

Browse files
authored
Merge pull request #203 from EdgeApp/paul/addReplication
Paul/add replication
2 parents 04d2e31 + 7065912 commit 483660e

File tree

7 files changed

+64
-18
lines changed

7 files changed

+64
-18
lines changed

.vscode/launch.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,20 @@
118118
"skipFiles": [
119119
"<node_internals>/**"
120120
]
121+
},
122+
{
123+
"type": "node",
124+
"request": "launch",
125+
"name": "setup",
126+
"args": [
127+
"-r",
128+
"sucrase/register",
129+
"${workspaceFolder}/src/initDbs.ts"
130+
],
131+
"internalConsoleOptions": "openOnSessionStart",
132+
"skipFiles": [
133+
"<node_internals>/**"
134+
]
121135
}
122136

123137
]

package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
"fio:promo": "node -r sucrase/register src/bin/fioPromo/fioPromo.ts",
1818
"lifi": "node -r sucrase/register src/bin/lifiReporter.ts",
1919
"precommit": "lint-staged && npm run prepare",
20-
"prepare": "./scripts/prepare.sh && npm-run-all clean configure -p build.*",
20+
"prepare": "./scripts/prepare.sh && npm-run-all clean configure -p build.* && npm run setup",
21+
"setup": "node -r sucrase/register src/initDbs.ts",
2122
"start": "node -r sucrase/register src/indexQuery.ts",
2223
"start:cache": "node -r sucrase/register src/indexCache.ts",
2324
"start:rates": "node -r sucrase/register src/indexRates.ts",
@@ -49,7 +50,7 @@
4950
"csv-stringify": "^6.2.0",
5051
"date-fns": "^2.16.1",
5152
"date-fns-tz": "^1.1.4",
52-
"edge-server-tools": "^0.2.19",
53+
"edge-server-tools": "^0.2.22",
5354
"express": "^4.17.3",
5455
"express-promise-router": "^4.1.1",
5556
"nano": "^10.1.0",

src/cacheEngine.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import nano from 'nano'
33
import { getAnalytics } from './apiAnalytics'
44
import { config } from './config'
55
import { asDbReq } from './dbutils'
6-
import { initDbs } from './initDbs'
76
import { asApps } from './types'
87
import {
98
datelog,
@@ -30,8 +29,6 @@ export async function cacheEngine(): Promise<void> {
3029
datelog('Starting Cache Engine')
3130
console.time('cacheEngine')
3231

33-
await initDbs()
34-
3532
const reportsApps = nanoDb.use('reports_apps')
3633
const reportsTransactions = nanoDb.use('reports_transactions')
3734
const reportsHour = nanoDb.use('reports_hour')

src/config.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { makeConfig } from 'cleaner-config'
22
import { asArray, asNumber, asObject, asOptional, asString } from 'cleaners'
3+
import { asCouchCredentials } from 'edge-server-tools'
34

45
export const asConfig = asObject({
56
couchDbFullpath: asOptional(
@@ -15,7 +16,9 @@ export const asConfig = asObject({
1516
soloPartnerIds: asOptional(asArray(asString), null),
1617

1718
timeoutOverrideMins: asOptional(asNumber, 1200),
18-
cacheLookbackMonths: asOptional(asNumber, 24)
19+
cacheLookbackMonths: asOptional(asNumber, 24),
20+
couchMainCluster: asOptional(asString, 'wusa'),
21+
couchUris: asOptional(asCouchCredentials)
1922
})
2023

2124
export const config = makeConfig(asConfig, 'config.json')

src/initDbs.ts

Lines changed: 39 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
import {
2+
asReplicatorSetupDocument,
3+
connectCouch,
24
DatabaseSetup,
35
JsDesignDocument,
46
makeMangoIndex,
57
MangoDesignDocument,
6-
setupDatabase
8+
setupDatabase,
9+
SetupDatabaseOptions,
10+
syncedDocument
711
} from 'edge-server-tools'
812

913
import { config } from './config'
@@ -106,10 +110,40 @@ const databases = [
106110
monthDatabaseSetup
107111
]
108112

113+
export const reportsReplication = syncedDocument(
114+
'replication',
115+
asReplicatorSetupDocument
116+
)
117+
118+
const couchSettingsSetup: DatabaseSetup = {
119+
name: 'reports_settings',
120+
syncedDocuments: [reportsReplication]
121+
}
122+
123+
const options: SetupDatabaseOptions = {
124+
replicatorSetup: reportsReplication
125+
}
126+
109127
export async function initDbs(): Promise<void> {
110-
await Promise.all(
111-
databases.map(
112-
async setup => await setupDatabase(config.couchDbFullpath, setup)
128+
if (config.couchUris != null) {
129+
const pool = connectCouch(config.couchMainCluster, config.couchUris)
130+
await setupDatabase(pool, couchSettingsSetup, options)
131+
await Promise.all(
132+
databases.map(async setup => await setupDatabase(pool, setup, options))
133+
)
134+
} else {
135+
await Promise.all(
136+
databases.map(
137+
async setup =>
138+
await setupDatabase(config.couchDbFullpath, setup, options)
139+
)
113140
)
114-
)
141+
}
142+
console.log('Done')
143+
process.exit(0)
115144
}
145+
146+
initDbs().catch(err => {
147+
console.error(err)
148+
process.exit(1)
149+
})

src/queryEngine.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import nano from 'nano'
22

33
import { config } from './config'
44
import { pagination } from './dbutils'
5-
import { initDbs } from './initDbs'
65
import { banxa } from './partners/banxa'
76
import { bitaccess } from './partners/bitaccess'
87
import { bitrefill } from './partners/bitrefill'
@@ -78,8 +77,6 @@ const snooze: Function = async (ms: number) =>
7877
await new Promise((resolve: Function) => setTimeout(resolve, ms))
7978

8079
export async function queryEngine(): Promise<void> {
81-
await initDbs()
82-
8380
const dbProgress = nanoDb.db.use('reports_progresscache')
8481
const dbApps = nanoDb.db.use('reports_apps')
8582

yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2713,10 +2713,10 @@ ecc-jsbn@~0.1.1:
27132713
jsbn "~0.1.0"
27142714
safer-buffer "^2.1.0"
27152715

2716-
edge-server-tools@^0.2.19:
2717-
version "0.2.19"
2718-
resolved "https://registry.yarnpkg.com/edge-server-tools/-/edge-server-tools-0.2.19.tgz#495a7c691b32c9a2d9abee3115bca38ad72efd5e"
2719-
integrity sha512-iCHxop9064CwrJtpgmbXlMfx93FuNiwmq63c1q/i+mSk5Q0+QCRVP81GXmuxzm9ts0z2s4smhkbd715QTH2Ebw==
2716+
edge-server-tools@^0.2.22:
2717+
version "0.2.22"
2718+
resolved "https://registry.yarnpkg.com/edge-server-tools/-/edge-server-tools-0.2.22.tgz#c4571747a25ee1d3ae27613a718fe2356c21c70c"
2719+
integrity sha512-C7U3Cc+smlVzPtOy6pwQbyFyrBxwj80hCePmHOK0VwGPCjfrXpYqlw/sdwdRY5gYFfm6vVoq5KrEb3hxhSJNwQ==
27202720
dependencies:
27212721
cleaners "^0.3.11"
27222722
nano "^10.1.3"

0 commit comments

Comments
 (0)