mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-12 23:35:58 +00:00
added middleware, new nodes and migrations
This commit is contained in:
parent
af8dba7f16
commit
0ad05e1a44
@ -19,10 +19,13 @@
|
||||
"dotenv": "^6.0.0",
|
||||
"faker": "^4.1.0",
|
||||
"graphql-custom-directives": "^0.2.13",
|
||||
"graphql-middleware": "^1.7.6",
|
||||
"graphql-tag": "^2.9.2",
|
||||
"neo4j-driver": "^1.6.1",
|
||||
"neo4j-graphql-js": "^1.0.2",
|
||||
"node-fetch": "^2.1.2"
|
||||
"node-fetch": "^2.1.2",
|
||||
"slug": "^0.9.1",
|
||||
"trunc-html": "^1.1.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-cli": "^6.26.0",
|
||||
|
||||
36
src/index.js
36
src/index.js
@ -1,8 +1,12 @@
|
||||
// import { GraphQLServer } from 'graphql-yoga'
|
||||
import { applyMiddleware } from 'graphql-middleware'
|
||||
import { ApolloServer, makeExecutableSchema } from 'apollo-server'
|
||||
import { augmentSchema } from 'neo4j-graphql-js'
|
||||
import { typeDefs, resolvers } from './graphql-schema'
|
||||
import { v1 as neo4j } from 'neo4j-driver'
|
||||
import passwordMiddleware from './middleware/passwordMiddleware'
|
||||
import sluggifyMiddleware from './middleware/sluggifyMiddleware'
|
||||
import excerptMiddleware from './middleware/excerptMiddleware'
|
||||
import dotenv from 'dotenv'
|
||||
import {
|
||||
GraphQLLowerCaseDirective,
|
||||
@ -40,12 +44,42 @@ const driver = neo4j.driver(
|
||||
const MOCK = (process.env.MOCK === 'true')
|
||||
console.log('MOCK:', MOCK)
|
||||
|
||||
/* const logInput = async (resolve, root, args, context, info) => {
|
||||
console.log(args)
|
||||
if (args.email) {
|
||||
args.email = args.email.toLowerCase()
|
||||
}
|
||||
console.log(`1. logInput: ${JSON.stringify(args)}`)
|
||||
const result = await resolve(root, args, context, info)
|
||||
console.log(`5. logInput`)
|
||||
return result
|
||||
}
|
||||
|
||||
const logResult = async (resolve, root, args, context, info) => {
|
||||
console.log(`2. logResult`)
|
||||
let result = await resolve(root, args, context, info)
|
||||
console.log('RESULT:', result)
|
||||
if (Array.isArray(result)) {
|
||||
result.forEach(res => {
|
||||
if (res.email) {
|
||||
res.email = '******'
|
||||
// res.email = res.email.toLowerCase()
|
||||
}
|
||||
})
|
||||
} else if (typeof result === 'string' && info.fieldName === 'email') {
|
||||
result = '******'
|
||||
// result = result.toLowerCase()
|
||||
}
|
||||
console.log(`4. logResult: ${JSON.stringify(result)}`)
|
||||
return result
|
||||
} */
|
||||
|
||||
const server = new ApolloServer({
|
||||
context: {
|
||||
driver
|
||||
},
|
||||
tracing: true,
|
||||
schema: augmentedSchema,
|
||||
schema: applyMiddleware(augmentedSchema, passwordMiddleware, sluggifyMiddleware, excerptMiddleware),
|
||||
mocks: MOCK ? {
|
||||
User: () => ({
|
||||
name: () => `${faker.name.firstName()} ${faker.name.lastName()}`,
|
||||
|
||||
21
src/middleware/excerptMiddleware.js
Normal file
21
src/middleware/excerptMiddleware.js
Normal file
@ -0,0 +1,21 @@
|
||||
import trunc from 'trunc-html'
|
||||
|
||||
export default {
|
||||
Mutation: {
|
||||
CreatePost: async (resolve, root, args, context, info) => {
|
||||
args.contentExcerpt = trunc(args.content, 120).html
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
},
|
||||
CreateComment: async (resolve, root, args, context, info) => {
|
||||
args.contentExcerpt = trunc(args.content, 180).html
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
},
|
||||
CreateOrganization: async (resolve, root, args, context, info) => {
|
||||
args.descriptionExcerpt = trunc(args.description, 120).html
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
}
|
||||
}
|
||||
}
|
||||
17
src/middleware/passwordMiddleware.js
Normal file
17
src/middleware/passwordMiddleware.js
Normal file
@ -0,0 +1,17 @@
|
||||
export default {
|
||||
Mutation: {
|
||||
CreateUser: async (resolve, root, args, context, info) => {
|
||||
args.password = 'TRY TO ENCRYPT IT'
|
||||
const result = await resolve(root, args, context, info)
|
||||
result.password = '*****'
|
||||
return result
|
||||
}
|
||||
},
|
||||
Query: async (resolve, root, args, context, info) => {
|
||||
const result = await resolve(root, args, context, info)
|
||||
if (result.password) {
|
||||
result.password = '*****'
|
||||
}
|
||||
return result
|
||||
}
|
||||
}
|
||||
40
src/middleware/sluggifyMiddleware.js
Normal file
40
src/middleware/sluggifyMiddleware.js
Normal file
@ -0,0 +1,40 @@
|
||||
import slug from 'slug'
|
||||
|
||||
export default {
|
||||
Mutation: {
|
||||
CreatePost: async (resolve, root, args, context, info) => {
|
||||
args.slug = slug(args.title, {
|
||||
lower: true
|
||||
})
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
},
|
||||
CreateUser: async (resolve, root, args, context, info) => {
|
||||
if (!args.slug) {
|
||||
args.slug = slug(args.name, {
|
||||
lower: true
|
||||
})
|
||||
}
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
},
|
||||
CreateOrganization: async (resolve, root, args, context, info) => {
|
||||
if (!args.slug) {
|
||||
args.slug = slug(args.name, {
|
||||
lower: true
|
||||
})
|
||||
}
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
},
|
||||
CreateCategory: async (resolve, root, args, context, info) => {
|
||||
if (!args.slug) {
|
||||
args.slug = slug(args.name, {
|
||||
lower: true
|
||||
})
|
||||
}
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -25,6 +25,9 @@ type User {
|
||||
id: ID!
|
||||
name: String!
|
||||
email: String
|
||||
slug: String
|
||||
password: String!
|
||||
avatar: String
|
||||
disabled: Boolean @default(to: false)
|
||||
role: UserGroupEnum
|
||||
|
||||
@ -58,12 +61,16 @@ type Post {
|
||||
id: ID!
|
||||
author: WrittenPost
|
||||
title: String!
|
||||
slug: String!
|
||||
slug: String
|
||||
content: String!
|
||||
contentExcerpt: String!
|
||||
contentExcerpt: String
|
||||
image: String
|
||||
visibility: VisibilityEnum
|
||||
disabled: Boolean @default(to: false)
|
||||
|
||||
# relatedContributions: [Post]! @cypher(statement: "MATCH (this)-[:TAGGED]->(t:Tag)<-[:TAGGED]-(p1:Post) MATCH (this)-[:CATEGORIZED]->(t:Category)<-[:CATEGORIZED]-(p2:Post) RETURN collect(distinct p2) + p1")
|
||||
relatedContributions: [Post]! @cypher(statement: "MATCH (this)-[:TAGGED]->(t:Tag)<-[:TAGGED]-(p:Post) return p")
|
||||
|
||||
tags: [Tag]! @relation(name: "TAGGED", direction: "OUT")
|
||||
categories: [Category]! @relation(name: "CATEGORIZED", direction: "OUT")
|
||||
|
||||
@ -78,7 +85,7 @@ type Comment {
|
||||
id: ID!
|
||||
author: WrittenComment
|
||||
content: String!
|
||||
contentExcerpt: String!
|
||||
contentExcerpt: String
|
||||
post: Post @relation(name: "COMMENT", direction: "OUT")
|
||||
disabled: Boolean @default(to: false)
|
||||
}
|
||||
@ -86,7 +93,7 @@ type Comment {
|
||||
type Category {
|
||||
id: ID!
|
||||
name: String!
|
||||
slug: String!
|
||||
slug: String
|
||||
icon: String!
|
||||
}
|
||||
|
||||
@ -114,7 +121,9 @@ type Organization {
|
||||
createdBy: User @relation(name: "CREATED_ORGA", direction: "IN")
|
||||
ownedBy: [User] @relation(name: "OWNING_ORGA", direction: "IN")
|
||||
name: String!
|
||||
slug: String!
|
||||
slug: String
|
||||
description: String!
|
||||
descriptionExcerpt: String
|
||||
disabled: Boolean @default(to: false)
|
||||
|
||||
tags: [Tag]! @relation(name: "TAGGED", direction: "OUT")
|
||||
|
||||
@ -1,29 +1,35 @@
|
||||
import faker from 'faker'
|
||||
|
||||
export default `
|
||||
mutation {
|
||||
|
||||
# Users
|
||||
u1: CreateUser(id: "u1", name: "Will Blast", email: "Will-Blast@Yahoo.com", role: Admin) {
|
||||
u1: CreateUser(id: "u1", name: "Peter Lustig", password: "1234", email: "admin@test.de", avatar: "${faker.internet.avatar()}", role: Admin) {
|
||||
id
|
||||
name
|
||||
email
|
||||
avatar
|
||||
role
|
||||
}
|
||||
u2: CreateUser(id: "u2", name: "Bob der Bausmeister", email: "Bob-der-Bausmeister@yahoo.com", role: Moderator) {
|
||||
u2: CreateUser(id: "u2", name: "Bob der Bausmeister", password: "1234", email: "moderator@test.de", avatar: "${faker.internet.avatar()}", role: Moderator) {
|
||||
id
|
||||
name
|
||||
email
|
||||
avatar
|
||||
role
|
||||
}
|
||||
u3: CreateUser(id: "u3", name: "Jenny Rostock", email: "JennyRostock@yahoo.com", role: Admin) {
|
||||
u3: CreateUser(id: "u3", name: "Jenny Rostock", password: "1234", email: "user@test.de", avatar: "${faker.internet.avatar()}", role: Admin) {
|
||||
id
|
||||
name
|
||||
email
|
||||
avatar
|
||||
role
|
||||
}
|
||||
u4: CreateUser(id: "u4", name: "Angie Banjie", email: "Angie_Banjie@yahoo.com", role: User) {
|
||||
u4: CreateUser(id: "u4", name: "Angie Banjie", password: "1234", email: "Angie_Banjie@yahoo.com", avatar: "${faker.internet.avatar()}", role: User) {
|
||||
id
|
||||
name
|
||||
email
|
||||
avatar
|
||||
role
|
||||
}
|
||||
|
||||
@ -66,101 +72,114 @@ export default `
|
||||
p1: CreatePost(
|
||||
id: "p1",
|
||||
title: "Gedanken eines Polizisten zum Einsatz im Hambacher Forst",
|
||||
slug: "gedanken-eines-polizisten-zum-einsatz-im-hambacher-forst",
|
||||
content: "# 1 This is my content 1",
|
||||
contentExcerpt: "# 1 This is my content 1",
|
||||
content: "<p><strong>Diese Zukunftsstadt ist real und keine Computer-Animation – s</strong>ondern sie ist das Lebenswerk des mittlerweile über 100 Jahre alten Futuristen und Architekten Jacque Fresco aus Florida. In 35 Jahren (seit seinem 13. Lebensjahr) hat dieser zusammen mit seiner Frau seinen futuristischen Traum von einer besonderen Zukunftsstadt auf 85.000 Quadratmetern realisiert. In den Gebäuden und Gärten befinden sich u.a. ein Forschungszentrum, Vortragsräume und unzählige seiner Modelle & Architekturentwürfe.</p><br /><p>Sein zentrales Anliegen ist eine resourcenbasierte Wirtschaft und die Abschaffung von Geld und Privatbesitz. Mit Hilfe von Roboterarbeit und dem Bedingungslosen Grundeinkommen (da nach seiner Ansicht in den kommenden Jahren fast alle Jobs automatisiert werden), möchte er eine ökologische Landwirtschaft mit Permakulturen etc. und eine effiziente Energiegewinnung (ausschließlich durch regenerative Energien) schaffen. Wenige kompatible Formen in einer sparsamen Modulbauweise (in die u.a. bereits variable Service- und Reparaturelemente integriert sind) sollen insgesamt eine soziale & ökologische Utopie im Einklang mit der Natur ermöglichen.</p><br /><p>Nachfolgend der Direkt-Link auf den interessanten Artikel von Zoltan Istvan, der den Architekten und seine Frau in Florida besuchen durfte und seinen Artikel Ende 2016 auf „MOTHERBOARD“ veröffentlicht hatte:</p><br /><p>https://motherboard.vice.com/de/article/vv34nb/ich-habe-die-zukunft-besucht-in-der-wir-ohne-geld-steuern-und-besitz-leben </p><br /><p>Da soll noch jemand behaupten, es gäbe keine Utopien mehr bzw. keine Futuristen, die ihre kreativen und zukunftsfähigen Ideen (auch in ganz großem Stil) selbst in die Tat umsetzen. LG @all :) </p><br /><p><strong>Wir sind eine Menschheitsfamilie. • Wir sind eins. • Wir sind HUMAN CONNECTION</strong> ❤️</p>",
|
||||
image: "https://picsum.photos/1280/1024?image=352",
|
||||
visibility: Public
|
||||
) { title }
|
||||
p1_cat1: AddPostCategories(from: {id: "p1"}, to: {id: "cat1"}) { from { id } }
|
||||
p1_cat2: AddPostCategories(from: {id: "p1"}, to: {id: "cat2"}) { from { id } }
|
||||
ur1: AddUserContributions(from: { id: "u1" }, to: { id: "p1" }, data: { timestamp: 1538655020 }) { from { id } }
|
||||
|
||||
p2: CreatePost(
|
||||
id: "p2",
|
||||
title: "Julian Assange",
|
||||
slug: "julian-assange",
|
||||
content: "#2 This is my content 2",
|
||||
contentExcerpt: "#2 This is my content 2",
|
||||
content: "<p><strong>Diese Zukunftsstadt ist real und keine Computer-Animation – s</strong>ondern sie ist das Lebenswerk des mittlerweile über 100 Jahre alten Futuristen und Architekten Jacque Fresco aus Florida. In 35 Jahren (seit seinem 13. Lebensjahr) hat dieser zusammen mit seiner Frau seinen futuristischen Traum von einer besonderen Zukunftsstadt auf 85.000 Quadratmetern realisiert. In den Gebäuden und Gärten befinden sich u.a. ein Forschungszentrum, Vortragsräume und unzählige seiner Modelle & Architekturentwürfe.</p><br /><p>Sein zentrales Anliegen ist eine resourcenbasierte Wirtschaft und die Abschaffung von Geld und Privatbesitz. Mit Hilfe von Roboterarbeit und dem Bedingungslosen Grundeinkommen (da nach seiner Ansicht in den kommenden Jahren fast alle Jobs automatisiert werden), möchte er eine ökologische Landwirtschaft mit Permakulturen etc. und eine effiziente Energiegewinnung (ausschließlich durch regenerative Energien) schaffen. Wenige kompatible Formen in einer sparsamen Modulbauweise (in die u.a. bereits variable Service- und Reparaturelemente integriert sind) sollen insgesamt eine soziale & ökologische Utopie im Einklang mit der Natur ermöglichen.</p><br /><p>Nachfolgend der Direkt-Link auf den interessanten Artikel von Zoltan Istvan, der den Architekten und seine Frau in Florida besuchen durfte und seinen Artikel Ende 2016 auf „MOTHERBOARD“ veröffentlicht hatte:</p><br /><p>https://motherboard.vice.com/de/article/vv34nb/ich-habe-die-zukunft-besucht-in-der-wir-ohne-geld-steuern-und-besitz-leben </p><br /><p>Da soll noch jemand behaupten, es gäbe keine Utopien mehr bzw. keine Futuristen, die ihre kreativen und zukunftsfähigen Ideen (auch in ganz großem Stil) selbst in die Tat umsetzen. LG @all :) </p><br /><p><strong>Wir sind eine Menschheitsfamilie. • Wir sind eins. • Wir sind HUMAN CONNECTION</strong> ❤️</p>",
|
||||
image: "https://picsum.photos/1280/1024?image=72",
|
||||
visibility: Public
|
||||
) { title }
|
||||
p2_cat1: AddPostCategories(from: {id: "p2"}, to: {id: "cat1"}) { from { id } }
|
||||
p2_cat16: AddPostCategories(from: {id: "p2"}, to: {id: "cat16"}) { from { id } }
|
||||
ur2: AddUserContributions(from: { id: "u2" }, to: { id: "p2" }, data: { timestamp: 1538655120 }) { from { id } }
|
||||
|
||||
p3: CreatePost(
|
||||
id: "p3",
|
||||
title: "Hacker, Freaks und Funktionäre...Der CCC",
|
||||
slug: "hacker-freaks-und-funktionäre-der-ccc",
|
||||
content: "#3 This is my content 3",
|
||||
contentExcerpt: "#3 This is my content 3",
|
||||
content: "${faker.lorem.sentence()} ${faker.lorem.sentence()} ${faker.lorem.sentence()} ${faker.lorem.sentence()} ${faker.lorem.sentence()}",
|
||||
image: "https://picsum.photos/1280/1024?image=121",
|
||||
visibility: Public
|
||||
) { title }
|
||||
p3_cat1: AddPostCategories(from: {id: "p3"}, to: {id: "cat1"}) { from { id } }
|
||||
p3_cat3: AddPostCategories(from: {id: "p3"}, to: {id: "cat3"}) { from { id } }
|
||||
p3_cat14: AddPostCategories(from: {id: "p3"}, to: {id: "cat14"}) { from { id } }
|
||||
ur3: AddUserContributions(from: { id: "u3" }, to: { id: "p3" }, data: { timestamp: 1538653120 }) { from { id } }
|
||||
|
||||
p4: CreatePost(
|
||||
id: "p4",
|
||||
title: "Lebensmittel (?)",
|
||||
slug: "lebensmittel",
|
||||
content: "#4 This is my content 4",
|
||||
contentExcerpt: "#4 This is my content 4",
|
||||
content: "${faker.lorem.sentence()} ${faker.lorem.sentence()} ${faker.lorem.sentence()} ${faker.lorem.sentence()} ${faker.lorem.sentence()}",
|
||||
image: "https://picsum.photos/1280/1024?image=142",
|
||||
visibility: Public
|
||||
) { title }
|
||||
p4_cat1: AddPostCategories(from: {id: "p4"}, to: {id: "cat1"}) { from { id } }
|
||||
p4_cat9: AddPostCategories(from: {id: "p4"}, to: {id: "cat9"}) { from { id } }
|
||||
p4_cat4: AddPostCategories(from: {id: "p4"}, to: {id: "cat4"}) { from { id } }
|
||||
ur4: AddUserContributions(from: { id: "u4" }, to: { id: "p4" }, data: { timestamp: 1538615120 }) { from { id } }
|
||||
|
||||
p5: CreatePost(
|
||||
id: "p5",
|
||||
title: "${faker.lorem.sentence()}",
|
||||
content: "${faker.lorem.sentence()} ${faker.lorem.sentence()} ${faker.lorem.sentence()} ${faker.lorem.sentence()} ${faker.lorem.sentence()}",
|
||||
image: "https://picsum.photos/1280/1024?image=231",
|
||||
visibility: Public
|
||||
) { title }
|
||||
p5_cat8: AddPostCategories(from: {id: "p5"}, to: {id: "cat8"}) { from { id } }
|
||||
p5_cat12: AddPostCategories(from: {id: "p5"}, to: {id: "cat12"}) { from { id } }
|
||||
ur5: AddUserContributions(from: { id: "u2" }, to: { id: "p5" }, data: { timestamp: 1538615120 }) { from { id } }
|
||||
|
||||
p6: CreatePost(
|
||||
id: "p6",
|
||||
title: "${faker.lorem.sentence()}",
|
||||
content: "${faker.lorem.sentence()} ${faker.lorem.sentence()} ${faker.lorem.sentence()} ${faker.lorem.sentence()} ${faker.lorem.sentence()}",
|
||||
image: "https://picsum.photos/1280/1024?image=424",
|
||||
visibility: Public
|
||||
) { title }
|
||||
p6_cat1: AddPostCategories(from: {id: "p6"}, to: {id: "cat1"}) { from { id } }
|
||||
p6_cat2: AddPostCategories(from: {id: "p6"}, to: {id: "cat2"}) { from { id } }
|
||||
p6_cat5: AddPostCategories(from: {id: "p6"}, to: {id: "cat5"}) { from { id } }
|
||||
ur6: AddUserContributions(from: { id: "u4" }, to: { id: "p6" }, data: { timestamp: 1538615120 }) { from { id } }
|
||||
|
||||
# Comments
|
||||
c1: CreateComment(
|
||||
id: "c1",
|
||||
content: "# 1 This is my comment 1",
|
||||
contentExcerpt: "# 1 This is my..."
|
||||
content: "<p>da stimm ich dir zu. Mir ging das auch nie in den kopf, und hatte jesus nie als gott gesehen. </p>",
|
||||
) { id }
|
||||
c1_u1: AddCommentAuthor(from: { id: "u3" }, to: { id: "c1" }, data: { timestamp: 1538655020 }) { from { id } }
|
||||
|
||||
c2: CreateComment(
|
||||
id: "c2",
|
||||
content: "# 2 This is my comment 2",
|
||||
contentExcerpt: "# 2 This is my..."
|
||||
content: "<p>Schön das es dich gibt ❤️❤️❤️❤️❤️❤️❤️❤️❤️</p>",
|
||||
) { id }
|
||||
c2_u1: AddCommentAuthor(from: { id: "u1" }, to: { id: "c2" }, data: { timestamp: 1538655020 }) { from { id } }
|
||||
|
||||
c3: CreateComment(
|
||||
id: "c3",
|
||||
content: "# 3 This is my comment 3",
|
||||
contentExcerpt: "# 3 This is my..."
|
||||
content: "<p>Hi Dieter,</p><p>danke für Deine Info. Hast Du mal ein Foto von Deinem Cabrio mit dem Logo drauf?</p>",
|
||||
) { id }
|
||||
c3_u2: AddCommentAuthor(from: { id: "u1" }, to: { id: "c3" }, data: { timestamp: 1538655020 }) { from { id } }
|
||||
|
||||
c4: CreateComment(
|
||||
id: "c4",
|
||||
content: "# 4 This is my comment 4",
|
||||
contentExcerpt: "# 4 This is my..."
|
||||
content: "<p>Das Zusammenführen aller Gruppen, die mit uns am gleichen Strang in die gleiche Richtung ziehen, in eine gemeinsame Adressenstruktur sehe ich auch als Haupt - Aufgabe für unsere neue Netzwerkbildung an.</p>",
|
||||
) { id }
|
||||
c4_u3: AddCommentAuthor(from: { id: "u4" }, to: { id: "c4" }, data: { timestamp: 1538655020 }) { from { id } }
|
||||
|
||||
c5: CreateComment(
|
||||
id: "c5",
|
||||
content: "# 5 This is my comment 5",
|
||||
contentExcerpt: "# 5 This is my..."
|
||||
content: "${faker.lorem.paragraph()}",
|
||||
) { id }
|
||||
c5_u4: AddCommentAuthor(from: { id: "u4" }, to: { id: "c5" }, data: { timestamp: 1538655020 }) { from { id } }
|
||||
|
||||
c1_u1: AddCommentAuthor(
|
||||
from: { id: "u1" },
|
||||
to: { id: "c1" },
|
||||
data: { timestamp: 1538655020 }
|
||||
) { from { id } }
|
||||
c2_u1: AddCommentAuthor(
|
||||
from: { id: "u1" },
|
||||
to: { id: "c2" },
|
||||
data: { timestamp: 1538655020 }
|
||||
) { from { id } }
|
||||
c3_u2: AddCommentAuthor(
|
||||
from: { id: "u2" },
|
||||
to: { id: "c3" },
|
||||
data: { timestamp: 1538655020 }
|
||||
) { from { id } }
|
||||
c4_u3: AddCommentAuthor(
|
||||
from: { id: "u3" },
|
||||
to: { id: "c4" },
|
||||
data: { timestamp: 1538655020 }
|
||||
) { from { id } }
|
||||
c5_u4: AddCommentAuthor(
|
||||
from: { id: "u4" },
|
||||
to: { id: "c5" },
|
||||
data: { timestamp: 1538655020 }
|
||||
) { from { id } }
|
||||
c6: CreateComment(
|
||||
id: "c6",
|
||||
content: "${faker.lorem.paragraph()}",
|
||||
) { id }
|
||||
c6_u3: AddCommentAuthor(from: { id: "u3" }, to: { id: "c6" }, data: { timestamp: 1538655020 }) { from { id } }
|
||||
|
||||
c7: CreateComment(
|
||||
id: "c7",
|
||||
content: "${faker.lorem.paragraph()}",
|
||||
) { id }
|
||||
c7_u2: AddCommentAuthor(from: { id: "u2" }, to: { id: "c7" }, data: { timestamp: 1538655020 }) { from { id } }
|
||||
|
||||
c1_p1: AddCommentPost(
|
||||
from: { id: "c1" },
|
||||
@ -170,18 +189,30 @@ export default `
|
||||
from: { id: "c2" },
|
||||
to: { id: "p1" }
|
||||
) { from { id } }
|
||||
c3_p2: AddCommentPost(
|
||||
c3_p3: AddCommentPost(
|
||||
from: { id: "c3" },
|
||||
to: { id: "p2" }
|
||||
) { from { id } }
|
||||
c4_p3: AddCommentPost(
|
||||
from: { id: "c4" },
|
||||
to: { id: "p3" }
|
||||
) { from { id } }
|
||||
c5_p4: AddCommentPost(
|
||||
c4_p2: AddCommentPost(
|
||||
from: { id: "c4" },
|
||||
to: { id: "p2" }
|
||||
) { from { id } }
|
||||
c5_p3: AddCommentPost(
|
||||
from: { id: "c5" },
|
||||
to: { id: "p3" }
|
||||
) { from { id } }
|
||||
c6_p4: AddCommentPost(
|
||||
from: { id: "c6" },
|
||||
to: { id: "p4" }
|
||||
) { from { id } }
|
||||
c6_p1: AddCommentPost(
|
||||
from: { id: "c6" },
|
||||
to: { id: "p1" }
|
||||
) { from { id } }
|
||||
c7_p2: AddCommentPost(
|
||||
from: { id: "c7" },
|
||||
to: { id: "p2" }
|
||||
) { from { id } }
|
||||
|
||||
# Tags
|
||||
t1: CreateTag(
|
||||
@ -229,22 +260,22 @@ export default `
|
||||
o1: CreateOrganization(
|
||||
id: "o1",
|
||||
name: "Democracy Deutschland",
|
||||
slug: "democracy-deutschland"
|
||||
description: "Description for democracy-deutschland."
|
||||
) { name }
|
||||
o2: CreateOrganization(
|
||||
id: "o2",
|
||||
name: "Human-Connection",
|
||||
slug: "human-connection"
|
||||
description: "Description for human-connection."
|
||||
) { name }
|
||||
o3: CreateOrganization(
|
||||
id: "o3",
|
||||
name: "Pro Veg",
|
||||
slug: "pro-veg"
|
||||
description: "Description for pro-veg."
|
||||
) { name }
|
||||
o4: CreateOrganization(
|
||||
id: "o4",
|
||||
name: "Greenpeace",
|
||||
slug: "greenpeace"
|
||||
description: "Description for greenpeace."
|
||||
) { name }
|
||||
|
||||
u1_c_o1: AddOrganizationCreatedBy(
|
||||
@ -295,27 +326,6 @@ export default `
|
||||
to: { id: "u2" }
|
||||
) { from { id } }
|
||||
|
||||
ur1: AddUserContributions(
|
||||
from: { id: "u1" },
|
||||
to: { id: "p1" },
|
||||
data: { timestamp: 1538655020 }
|
||||
) { from { id } }
|
||||
ur2: AddUserContributions(
|
||||
from: { id: "u2" },
|
||||
to: { id: "p2" },
|
||||
data: { timestamp: 1538655120 }
|
||||
) { from { id } }
|
||||
ur3: AddUserContributions(
|
||||
from: { id: "u3" },
|
||||
to: { id: "p3" },
|
||||
data: { timestamp: 1538653120 }
|
||||
) { from { id } }
|
||||
ur4: AddUserContributions(
|
||||
from: { id: "u4" },
|
||||
to: { id: "p4" },
|
||||
data: { timestamp: 1538615120 }
|
||||
) { from { id } }
|
||||
|
||||
u1s2: AddUserShouted(
|
||||
from: { id: "u1" },
|
||||
to: { id: "p2" }
|
||||
|
||||
57
yarn.lock
57
yarn.lock
@ -432,6 +432,14 @@ assign-symbols@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
|
||||
|
||||
assignment@2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/assignment/-/assignment-2.0.0.tgz#ffd17b21bf5d6b22e777b989681a815456a3dd3e"
|
||||
|
||||
assignment@2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/assignment/-/assignment-2.2.0.tgz#f5b5bc2d160d69986e8700cd38f567c0aabe101e"
|
||||
|
||||
async-each@^1.0.0:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
|
||||
@ -1729,6 +1737,12 @@ graphql-extensions@^0.2.1:
|
||||
dependencies:
|
||||
apollo-server-env "^2.0.3"
|
||||
|
||||
graphql-middleware@^1.7.6:
|
||||
version "1.7.6"
|
||||
resolved "https://registry.yarnpkg.com/graphql-middleware/-/graphql-middleware-1.7.6.tgz#f226bf6671f3d82a9378f8b335804c8e44d21733"
|
||||
dependencies:
|
||||
graphql-tools "^4.0.0"
|
||||
|
||||
graphql-subscriptions@^0.5.8:
|
||||
version "0.5.8"
|
||||
resolved "http://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-0.5.8.tgz#13a6143c546bce390404657dc73ca501def30aa7"
|
||||
@ -1749,6 +1763,16 @@ graphql-tools@^3.0.4:
|
||||
iterall "^1.1.3"
|
||||
uuid "^3.1.0"
|
||||
|
||||
graphql-tools@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.0.tgz#6ea01937c6f947212f83567ba687e97c22fdd2a6"
|
||||
dependencies:
|
||||
apollo-link "^1.2.3"
|
||||
apollo-utilities "^1.0.1"
|
||||
deprecated-decorator "^0.1.6"
|
||||
iterall "^1.1.3"
|
||||
uuid "^3.1.0"
|
||||
|
||||
graphql@^0.13.2:
|
||||
version "0.13.2"
|
||||
resolved "http://registry.npmjs.org/graphql/-/graphql-0.13.2.tgz#4c740ae3c222823e7004096f832e7b93b2108270"
|
||||
@ -1813,6 +1837,10 @@ hash.js@^1.1.3:
|
||||
inherits "^2.0.3"
|
||||
minimalistic-assert "^1.0.1"
|
||||
|
||||
he@0.5.0:
|
||||
version "0.5.0"
|
||||
resolved "http://registry.npmjs.org/he/-/he-0.5.0.tgz#2c05ffaef90b68e860f3fd2b54ef580989277ee2"
|
||||
|
||||
home-or-tmp@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8"
|
||||
@ -1887,6 +1915,13 @@ ini@^1.3.4, ini@~1.3.0:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
||||
|
||||
insane@2.6.1:
|
||||
version "2.6.1"
|
||||
resolved "https://registry.yarnpkg.com/insane/-/insane-2.6.1.tgz#c7dcae7b51c20346883b71078fad6ce0483c198f"
|
||||
dependencies:
|
||||
assignment "2.0.0"
|
||||
he "0.5.0"
|
||||
|
||||
invariant@^2.2.2:
|
||||
version "2.2.4"
|
||||
resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6"
|
||||
@ -2972,6 +3007,12 @@ slash@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55"
|
||||
|
||||
slug@^0.9.1:
|
||||
version "0.9.1"
|
||||
resolved "https://registry.yarnpkg.com/slug/-/slug-0.9.1.tgz#af08f608a7c11516b61778aa800dce84c518cfda"
|
||||
dependencies:
|
||||
unicode ">= 0.3.1"
|
||||
|
||||
snapdragon-node@^2.0.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
|
||||
@ -3192,6 +3233,18 @@ trim-right@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003"
|
||||
|
||||
trunc-html@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.yarnpkg.com/trunc-html/-/trunc-html-1.1.2.tgz#1e97d51f67d470b67662b1a670e6d0ea7a8edafe"
|
||||
dependencies:
|
||||
assignment "2.2.0"
|
||||
insane "2.6.1"
|
||||
trunc-text "1.0.1"
|
||||
|
||||
trunc-text@1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/trunc-text/-/trunc-text-1.0.1.tgz#58f876d8ac59b224b79834bb478b8656e69622b5"
|
||||
|
||||
type-is@^1.6.16, type-is@~1.6.15, type-is@~1.6.16:
|
||||
version "1.6.16"
|
||||
resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194"
|
||||
@ -3205,6 +3258,10 @@ undefsafe@^2.0.2:
|
||||
dependencies:
|
||||
debug "^2.2.0"
|
||||
|
||||
"unicode@>= 0.3.1":
|
||||
version "11.0.1"
|
||||
resolved "https://registry.yarnpkg.com/unicode/-/unicode-11.0.1.tgz#735bd422ec75cf28d396eb224d535d168d5f1db6"
|
||||
|
||||
union-value@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user