Skip to content

Remove null handling for Node/Relationship Ids #940

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 5 additions & 9 deletions packages/bolt-connection/src/packstream/packstream-v5.js
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export class Unpacker extends v2.Unpacker {
this._verifyStructSize('Node', NODE_STRUCT_SIZE, structSize)

return new Node(
_valueOrDefault(this.unpack(buffer), this._defaultIdentity), // Identity
this.unpack(buffer), // Identity
this.unpack(buffer), // Labels
this.unpack(buffer), // Properties,
this.unpack(buffer) // ElementId
Expand All @@ -69,9 +69,9 @@ export class Unpacker extends v2.Unpacker {
this._verifyStructSize('Relationship', RELATIONSHIP_STRUCT_SIZE, structSize)

return new Relationship(
_valueOrDefault(this.unpack(buffer), this._defaultIdentity), // Identity
_valueOrDefault(this.unpack(buffer), this._defaultIdentity), // Start Node Identity
_valueOrDefault(this.unpack(buffer), this._defaultIdentity), // End Node Identity
this.unpack(buffer), // Identity
this.unpack(buffer), // Start Node Identity
this.unpack(buffer), // End Node Identity
this.unpack(buffer), // Type
this.unpack(buffer), // Properties,
this.unpack(buffer), // ElementId
Expand All @@ -88,14 +88,10 @@ export class Unpacker extends v2.Unpacker {
)

return new UnboundRelationship(
_valueOrDefault(this.unpack(buffer), this._defaultIdentity), // Identity
this.unpack(buffer), // Identity
this.unpack(buffer), // Type
this.unpack(buffer), // Properties
this.unpack(buffer) // ElementId
)
}
}

function _valueOrDefault (value, defaultValue) {
return value === null ? defaultValue : value
}
144 changes: 3 additions & 141 deletions packages/bolt-connection/test/packstream/packstream-v5.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -238,42 +238,6 @@ describe('#unit PackStreamV5', () => {
return [nodeStruct, expectedNode, { disableLosslessIntegers: true, useBigInt: false }]
}

function validWithoutOldIdentifiersLossy () {
const identity = null
const labels = ['a', 'b']
const properties = { a: 1, b: 2 }
const elementId = 'element_id_1'
const expectedNode = new Node(-1, labels, properties, elementId)
const nodeStruct = new Structure(0x4e, [
identity, labels, properties, elementId
])
return [nodeStruct, expectedNode, { disableLosslessIntegers: true, useBigInt: false }]
}

function validWithoutOldIdentifiersLosslessInteger () {
const identity = null
const labels = ['a', 'b']
const properties = { a: 1, b: 2 }
const elementId = 'element_id_1'
const expectedNode = new Node(int(-1), labels, properties, elementId)
const nodeStruct = new Structure(0x4e, [
identity, labels, properties, elementId
])
return [nodeStruct, expectedNode, { disableLosslessIntegers: false, useBigInt: false }]
}

function validWithoutOldIdentifiersBigInt () {
const identity = null
const labels = ['a', 'b']
const properties = { a: 1, b: 2 }
const elementId = 'element_id_1'
const expectedNode = new Node(BigInt(-1), labels, properties, elementId)
const nodeStruct = new Structure(0x4e, [
identity, labels, properties, elementId
])
return [nodeStruct, expectedNode, { disableLosslessIntegers: false, useBigInt: true }]
}

function validWithInt () {
const identity = int(1)
const labels = ['a', 'b']
Expand Down Expand Up @@ -301,10 +265,7 @@ describe('#unit PackStreamV5', () => {
return [
validWithNumber(),
validWithInt(),
validWithBigInt(),
validWithoutOldIdentifiersLossy(),
validWithoutOldIdentifiersLosslessInteger(),
validWithoutOldIdentifiersBigInt()
validWithBigInt()
]
}

Expand Down Expand Up @@ -335,63 +296,6 @@ describe('#unit PackStreamV5', () => {
return [relStruct, expectedRel, { disableLosslessIntegers: true, useBigInt: false }]
}

function validWithoutOldIdentifiersLossy () {
const identity = null
const start = null
const end = null
const type = 'KNOWS'
const properties = { a: 1, b: 2 }
const elementId = 'element_id_1'
const startNodeElementId = 'element_id_2'
const endNodeElementId = 'element_id_3'
const expectedRel = new Relationship(
-1, -1, -1, type, properties,
elementId, startNodeElementId, endNodeElementId)
const relStruct = new Structure(0x52, [
identity, start, end, type, properties, elementId,
startNodeElementId, endNodeElementId
])
return [relStruct, expectedRel, { disableLosslessIntegers: true, useBigInt: false }]
}

function validWithoutOldIdentifiersLossLess () {
const identity = null
const start = null
const end = null
const type = 'KNOWS'
const properties = { a: 1, b: 2 }
const elementId = 'element_id_1'
const startNodeElementId = 'element_id_2'
const endNodeElementId = 'element_id_3'
const expectedRel = new Relationship(
int(-1), int(-1), int(-1), type, properties,
elementId, startNodeElementId, endNodeElementId)
const relStruct = new Structure(0x52, [
identity, start, end, type, properties, elementId,
startNodeElementId, endNodeElementId
])
return [relStruct, expectedRel, { disableLosslessIntegers: false, useBigInt: false }]
}

function validWithoutOldIdentifiersBigInt () {
const identity = null
const start = null
const end = null
const type = 'KNOWS'
const properties = { a: 1, b: 2 }
const elementId = 'element_id_1'
const startNodeElementId = 'element_id_2'
const endNodeElementId = 'element_id_3'
const expectedRel = new Relationship(
BigInt(-1), BigInt(-1), BigInt(-1), type, properties,
elementId, startNodeElementId, endNodeElementId)
const relStruct = new Structure(0x52, [
identity, start, end, type, properties, elementId,
startNodeElementId, endNodeElementId
])
return [relStruct, expectedRel, { disableLosslessIntegers: true, useBigInt: true }]
}

function validWithInt () {
const identity = int(1)
const start = int(2)
Expand Down Expand Up @@ -433,10 +337,7 @@ describe('#unit PackStreamV5', () => {
return [
validWithNumber(),
validWithInt(),
validWithBigInt(),
validWithoutOldIdentifiersLossy(),
validWithoutOldIdentifiersLossLess(),
validWithoutOldIdentifiersBigInt()
validWithBigInt()
]
}

Expand All @@ -460,42 +361,6 @@ describe('#unit PackStreamV5', () => {
return [struct, expectedUnboundRel, { disableLosslessIntegers: true, useBigInt: false }]
}

function validWithoutOldIdentifiersLossy () {
const identity = null
const type = 'DOESNT_KNOW'
const properties = { a: 1, b: 2 }
const elementId = 'element_id_1'
const expectedUnboundRel = new UnboundRelationship(-1, type, properties, elementId)
const struct = new Structure(0x72, [
identity, type, properties, elementId
])
return [struct, expectedUnboundRel, { disableLosslessIntegers: true, useBigInt: false }]
}

function validWithoutOldIdentifiersLossless () {
const identity = null
const type = 'DOESNT_KNOW'
const properties = { a: 1, b: 2 }
const elementId = 'element_id_1'
const expectedUnboundRel = new UnboundRelationship(int(-1), type, properties, elementId)
const struct = new Structure(0x72, [
identity, type, properties, elementId
])
return [struct, expectedUnboundRel, { disableLosslessIntegers: false, useBigInt: false }]
}

function validWithoutOldIdentifiersBigInt () {
const identity = null
const type = 'DOESNT_KNOW'
const properties = { a: 1, b: 2 }
const elementId = 'element_id_1'
const expectedUnboundRel = new UnboundRelationship(BigInt(-1), type, properties, elementId)
const struct = new Structure(0x72, [
identity, type, properties, elementId
])
return [struct, expectedUnboundRel, { disableLosslessIntegers: false, useBigInt: true }]
}

function validWithInt () {
const identity = int(1)
const type = 'DOESNT_KNOW'
Expand Down Expand Up @@ -523,10 +388,7 @@ describe('#unit PackStreamV5', () => {
return [
validWithNumber(),
validWithInt(),
validWithBigInt(),
validWithoutOldIdentifiersLossy(),
validWithoutOldIdentifiersLossless(),
validWithoutOldIdentifiersBigInt()
validWithBigInt()
]
}

Expand Down