Refactor the database structure from DISABLED to DECIDED relation

- First Step.
- Apply properties to the relation.
This commit is contained in:
Wolfgang Huß 2019-10-25 16:48:25 +02:00
parent 98029a6d46
commit 6593c6ec5c
10 changed files with 24 additions and 12 deletions

View File

@ -27,7 +27,7 @@ module.exports = {
},
disabledBy: {
type: 'relationship',
relationship: 'DISABLED',
relationship: 'DECIDED',
target: 'User',
direction: 'in',
},

View File

@ -19,7 +19,7 @@ module.exports = {
disabled: { type: 'boolean', default: false },
disabledBy: {
type: 'relationship',
relationship: 'DISABLED',
relationship: 'DECIDED',
target: 'User',
direction: 'in',
},

View File

@ -44,7 +44,7 @@ module.exports = {
friends: { type: 'relationship', relationship: 'FRIENDS', target: 'User', direction: 'both' },
disabledBy: {
type: 'relationship',
relationship: 'DISABLED',
relationship: 'DECIDED',
target: 'User',
direction: 'in',
},

View File

@ -68,7 +68,7 @@ export default {
hasOne: {
author: '<-[:WROTE]-(related:User)',
post: '-[:COMMENTS]->(related:Post)',
disabledBy: '<-[:DISABLED]-(related:User)',
disabledBy: '<-[:DECIDED]-(related:User)',
},
}),
},

View File

@ -8,7 +8,16 @@ export default {
MATCH (resource {id: $id})
WHERE resource:User OR resource:Comment OR resource:Post
SET resource.disabled = true
MERGE (resource)<-[:DISABLED]-(u)
MERGE (resource)<-[decided:DECIDED]-(u)
SET (
CASE
WHEN decided.createdAt IS NOT NULL
THEN decided END).updatedAt = toString(datetime())
SET (
CASE
WHEN decided.createdAt IS NULL
THEN decided END).createdAt = toString(datetime())
SET decided.disabled = true
RETURN resource {.id}
`
const session = driver.session()
@ -23,11 +32,14 @@ export default {
enable: async (object, params, { user, driver }) => {
const { id } = params
const cypher = `
MATCH (resource {id: $id})<-[d:DISABLED]-()
MATCH (resource {id: $id})<-[decided:DECIDED]-(:User)
SET resource.disabled = false
DELETE d
DELETE decided
RETURN resource {.id}
`
// Wolle
// SET decided.updatedAt = toString(datetime())
// SET decided.disabled = false
const session = driver.session()
const res = await session.run(cypher, { id })
session.close()

View File

@ -306,7 +306,7 @@ export default {
},
hasOne: {
author: '<-[:WROTE]-(related:User)',
disabledBy: '<-[:DISABLED]-(related:User)',
disabledBy: '<-[:DECIDED]-(related:User)',
pinnedBy: '<-[:PINNED]-(related:User)',
},
count: {

View File

@ -198,7 +198,7 @@ export default {
},
hasOne: {
invitedBy: '<-[:INVITED]-(related:User)',
disabledBy: '<-[:DISABLED]-(related:User)',
disabledBy: '<-[:DECIDED]-(related:User)',
location: '-[:IS_IN]->(related:Location)',
},
hasMany: {

View File

@ -9,7 +9,7 @@ type Comment {
updatedAt: String
deleted: Boolean
disabled: Boolean
disabledBy: User @relation(name: "DISABLED", direction: "IN")
disabledBy: User @relation(name: "DECIDED", direction: "IN")
}
type Mutation {

View File

@ -47,7 +47,7 @@ type Post {
deleted: Boolean
disabled: Boolean
pinned: Boolean
disabledBy: User @relation(name: "DISABLED", direction: "IN")
disabledBy: User @relation(name: "DECIDED", direction: "IN")
createdAt: String
updatedAt: String
language: String

View File

@ -8,7 +8,7 @@ type User {
coverImg: String
deleted: Boolean
disabled: Boolean
disabledBy: User @relation(name: "DISABLED", direction: "IN")
disabledBy: User @relation(name: "DECIDED", direction: "IN")
role: UserGroup!
publicKey: String
invitedBy: User @relation(name: "INVITED", direction: "IN")