Skip to content

Commit 6a48868

Browse files
authored
Merge pull request #533 from michael-simons/feature/database_example
Create a database selection example.
2 parents 27bac93 + 19efc87 commit 6a48868

File tree

2 files changed

+75
-1
lines changed

2 files changed

+75
-1
lines changed

test/examples.test.js

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ describe('#integration examples', () => {
3636

3737
let driverGlobal
3838
let version
39+
let edition
3940
let originalTimeout
4041

4142
let consoleOverride
@@ -60,6 +61,7 @@ describe('#integration examples', () => {
6061
consoleOverride = { log: msg => consoleOverridePromiseResolve(msg) }
6162

6263
version = await sharedNeo4j.cleanupAndGetVersion(driverGlobal)
64+
edition = await sharedNeo4j.getEdition(driverGlobal)
6365
})
6466

6567
afterAll(async () => {
@@ -690,6 +692,66 @@ describe('#integration examples', () => {
690692
])
691693
})
692694

695+
it('use another database example', async () => {
696+
if (version.compareTo(VERSION_4_0_0) < 0 || edition !== 'enterprise') {
697+
return
698+
}
699+
700+
const console = consoleOverride
701+
const consoleLoggedMsg = consoleOverridePromise
702+
703+
const driver = driverGlobal
704+
const systemSession = driver.session({ database: 'system' })
705+
try {
706+
await systemSession.run('DROP DATABASE examples')
707+
} catch (err) {
708+
// Database probably didn't exists
709+
}
710+
711+
try {
712+
await systemSession.run('CREATE DATABASE examples')
713+
} finally {
714+
await systemSession.close()
715+
}
716+
717+
// tag::database-selection[]
718+
const session = driver.session({ database: 'examples' })
719+
try {
720+
const result = await session.writeTransaction(tx =>
721+
tx.run(
722+
'CREATE (a:Greeting {message: "Hello, Example-Database"}) RETURN a.message'
723+
)
724+
)
725+
726+
const singleRecord = result.records[0]
727+
const greeting = singleRecord.get(0)
728+
729+
console.log(greeting)
730+
} finally {
731+
await session.close()
732+
}
733+
734+
const readSession = driver.session({
735+
database: 'examples',
736+
defaultAccessMode: neo4j.READ
737+
})
738+
try {
739+
const result = await readSession.writeTransaction(tx =>
740+
tx.run('MATCH (a:Greeting) RETURN a.message')
741+
)
742+
743+
const singleRecord = result.records[0]
744+
const greeting = singleRecord.get(0)
745+
746+
console.log(greeting)
747+
} finally {
748+
await readSession.close()
749+
}
750+
// end::database-selection[]
751+
752+
expect(await consoleLoggedMsg).toContain('Hello, Example-Database')
753+
})
754+
693755
it('pass bookmarks example', done => {
694756
const driver = driverGlobal
695757

test/internal/shared-neo4j.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,17 @@ async function cleanupAndGetVersion (driver) {
312312
}
313313
}
314314

315+
async function getEdition (driver) {
316+
const session = driver.session({ defaultAccessMode: neo4j.session.READ })
317+
try {
318+
const result = await session.run('CALL dbms.components() YIELD edition')
319+
const singleRecord = result.records[0]
320+
return singleRecord.get(0)
321+
} finally {
322+
await session.close()
323+
}
324+
}
325+
315326
function runCommand (command, args) {
316327
const spawnResult = platform.spawn(command, args)
317328
return new RunCommandResult(spawnResult)
@@ -354,5 +365,6 @@ export default {
354365
authToken: authToken,
355366
logging: debugLogging,
356367
cleanupAndGetVersion: cleanupAndGetVersion,
357-
tlsConfig: tlsConfig
368+
tlsConfig: tlsConfig,
369+
getEdition: getEdition
358370
}

0 commit comments

Comments
 (0)