diff --git a/src/middleware/fixImageUrlsMiddleware.js b/src/middleware/fixImageUrlsMiddleware.js index 04c08c303..864726a54 100644 --- a/src/middleware/fixImageUrlsMiddleware.js +++ b/src/middleware/fixImageUrlsMiddleware.js @@ -1,14 +1,17 @@ export const fixUrl = (url) => { - return url.replace('https://api-alpha.human-connection.org/uploads', 'http://localhost:3000/uploads') + return url.replace('https://api-alpha.human-connection.org', 'http://localhost:3000') } -const fixImageURLs = (result, resolve, root, args, context, info) => { - - if (result && typeof result === 'string' && result.indexOf('https://api-alpha.human-connection.org/uploads') === 0) { +const fixImageURLs = (result, recursive) => { + if (result && typeof result === 'string' && result.indexOf('https://api-alpha.human-connection.org') === 0) { result = fixUrl(result) + } else if (result && Array.isArray(result)) { + result.forEach((res, index) => { + result[index] = fixImageURLs(result[index], true) + }) } else if (result && typeof result === 'object') { Object.keys(result).forEach(key => { - result[key] = fixImageURLs(result[key]) + result[key] = fixImageURLs(result[key], true) }) } return result @@ -17,11 +20,10 @@ const fixImageURLs = (result, resolve, root, args, context, info) => { export default { Mutation: async (resolve, root, args, context, info) => { const result = await resolve(root, args, context, info) - return fixImageURLs(result, resolve, root, args, context, info) + return fixImageURLs(result) }, Query: async (resolve, root, args, context, info) => { let result = await resolve(root, args, context, info) - - return fixImageURLs(result, resolve, root, args, context, info) + return fixImageURLs(result) } } diff --git a/src/schema.graphql b/src/schema.graphql index 8ec8310ca..4640cebb5 100644 --- a/src/schema.graphql +++ b/src/schema.graphql @@ -75,11 +75,12 @@ type User { followedBy: [User]! @relation(name: "FOLLOWS", direction: "IN") followedByCount: Int! @cypher(statement: "MATCH (this)<-[:FOLLOWS]-(r:User) RETURN COUNT(r)") - contributions: [WrittenPost]! + #contributions: [WrittenPost]! #contributions2(first: Int = 10, offset: Int = 0): [WrittenPost2]! # @cypher( # statement: "MATCH (this)-[w:WROTE]->(p:Post) RETURN p as Post, w.timestamp as timestamp" # ) + contributions: [Post]! @relation(name: "WROTE", direction: "OUT") contributionsCount: Int! @cypher(statement: """ MATCH (this)-[:WROTE]->(r:Post) WHERE (NOT exists(r.deleted) OR r.deleted = false) @@ -113,6 +114,8 @@ type Post { visibility: VisibilityEnum deleted: Boolean disabled: Boolean + createdAt: String + updatedAt: String relatedContributions: [Post]! @cypher(statement: """ MATCH (this)-[:TAGGED|CATEGORIZED]->(categoryOrTag)<-[:TAGGED|CATEGORIZED]-(post:Post) @@ -160,12 +163,12 @@ type Badge { } enum BadgeTypeEnum { - Role - Crowdfunding + role + crowdfunding } enum BadgeStatusEnum { - Permanent - Temorary + permanent + temorary } type Organization { diff --git a/src/seed/seed-mutations.js b/src/seed/seed-mutations.js index cf1cba49e..35aaff8eb 100644 --- a/src/seed/seed-mutations.js +++ b/src/seed/seed-mutations.js @@ -4,28 +4,28 @@ export default ` mutation { # Users - u1: CreateUser(id: "u1", name: "Peter Lustig", password: "1234", email: "admin@test.de", avatar: "${faker.internet.avatar()}", 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", password: "1234", email: "moderator@test.de", avatar: "${faker.internet.avatar()}", 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", password: "1234", email: "user@test.de", avatar: "${faker.internet.avatar()}", role: User) { + u3: CreateUser(id: "u3", name: "Jenny Rostock", password: "1234", email: "user@test.de", avatar: "${faker.internet.avatar()}", role: user) { id name email avatar role } - u4: CreateUser(id: "u4", name: "Angie Banjie", password: "1234", email: "Angie_Banjie@yahoo.com", avatar: "${faker.internet.avatar()}", 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 @@ -36,12 +36,12 @@ export default ` u1_blacklist_u4: AddUserBlacklisted(from: { id: "u1" }, to: { id: "u4" }) { from { id } } # Badges - b1: CreateBadge(id: "b1", key: "indiegogo_en_racoon", type: Crowdfunding, status: Permanent, icon: "indiegogo_en_racoon") { id } - b2: CreateBadge(id: "b2", key: "indiegogo_en_rabbit", type: Crowdfunding, status: Permanent, icon: "indiegogo_en_rabbit") { id } - b3: CreateBadge(id: "b3", key: "indiegogo_en_wolf", type: Crowdfunding, status: Permanent, icon: "indiegogo_en_wolf") { id } - b4: CreateBadge(id: "b4", key: "indiegogo_en_bear", type: Crowdfunding, status: Permanent, icon: "indiegogo_en_bear") { id } - b5: CreateBadge(id: "b5", key: "indiegogo_en_turtle", type: Crowdfunding, status: Permanent, icon: "indiegogo_en_turtle") { id } - b6: CreateBadge(id: "b6", key: "indiegogo_en_rhino", type: Crowdfunding, status: Permanent, icon: "indiegogo_en_rhino") { id } + b1: CreateBadge(id: "b1", key: "indiegogo_en_racoon", type: Crowdfunding, status: permanent, icon: "indiegogo_en_racoon") { id } + b2: CreateBadge(id: "b2", key: "indiegogo_en_rabbit", type: Crowdfunding, status: permanent, icon: "indiegogo_en_rabbit") { id } + b3: CreateBadge(id: "b3", key: "indiegogo_en_wolf", type: Crowdfunding, status: permanent, icon: "indiegogo_en_wolf") { id } + b4: CreateBadge(id: "b4", key: "indiegogo_en_bear", type: Crowdfunding, status: permanent, icon: "indiegogo_en_bear") { id } + b5: CreateBadge(id: "b5", key: "indiegogo_en_turtle", type: Crowdfunding, status: permanent, icon: "indiegogo_en_turtle") { id } + b6: CreateBadge(id: "b6", key: "indiegogo_en_rhino", type: Crowdfunding, status: permanent, icon: "indiegogo_en_rhino") { id } b1_u1: AddUserBadges(from: {id: "b1"}, to: {id: "u1"}) { from { id } } b2_u1: AddUserBadges(from: {id: "b2"}, to: {id: "u1"}) { from { id } } @@ -72,7 +72,7 @@ export default ` p1: CreatePost( id: "p1", title: "Gedanken eines Polizisten zum Einsatz im Hambacher Forst", - content: "
Diese Zukunftsstadt ist real und keine Computer-Animation – sondern 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.
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.
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:
https://motherboard.vice.com/de/article/vv34nb/ich-habe-die-zukunft-besucht-in-der-wir-ohne-geld-steuern-und-besitz-leben
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 :)
Wir sind eine Menschheitsfamilie. • Wir sind eins. • Wir sind HUMAN CONNECTION ❤️
", + content: "Diese Zukunftsstadt ist real und keine Computer-Animation – sondern 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.
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.
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:
https://motherboard.vice.com/de/article/vv34nb/ich-habe-die-zukunft-besucht-in-der-wir-ohne-geld-steuern-und-besitz-leben
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 :)
Wir sind eine Menschheitsfamilie. • Wir sind eins. • Wir sind HUMAN CONNECTION ❤️
", image: "https://picsum.photos/1280/1024?image=352", visibility: Public, disabled: false,