From 62d450ef684ee6bb5670775b653086346353ca76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Tue, 19 Feb 2019 00:54:21 +0100 Subject: [PATCH] Remove boilerplate code with method relate() --- src/seed/factories/index.js | 3 +- src/seed/factories/posts.js | 31 +++++------ src/seed/factories/users.js | 54 ++++--------------- src/seed/seed-db.js | 104 +++++++++++++++++++++++++++--------- 4 files changed, 103 insertions(+), 89 deletions(-) diff --git a/src/seed/factories/index.js b/src/seed/factories/index.js index ed1ecf330..849d77dc1 100644 --- a/src/seed/factories/index.js +++ b/src/seed/factories/index.js @@ -26,7 +26,8 @@ const builders = { } const relationBuilders = { - 'user': require('./users.js').relate + 'user': require('./users.js').relate, + 'post': require('./posts.js').relate } const buildMutation = (model, parameters) => { diff --git a/src/seed/factories/posts.js b/src/seed/factories/posts.js index 4b15ee359..e96eb61f2 100644 --- a/src/seed/factories/posts.js +++ b/src/seed/factories/posts.js @@ -15,24 +15,9 @@ export default function (params) { image = faker.image.image(), visibility = 'public', disabled = false, - deleted = false, - tagIds = [], - categoryIds = [] + deleted = false } = params - const categoryRelations = categoryIds.map((categoryId) => { - return `${id}_${categoryId}: AddPostCategories( - from: {id: "${id}"}, - to: {id: "${categoryId}"} - ) { from { id } }` - }) - - const tagRelations = tagIds.map((tagId) => { - return `${id}_${tagId}: AddPostTags( - from: {id: "${id}"}, - to: {id: "${tagId}"} - ) { from { id } }` - }) return ` mutation { @@ -45,8 +30,18 @@ export default function (params) { disabled: ${disabled}, deleted: ${deleted} ) { id, title } - ${categoryRelations.join('\n')} - ${tagRelations.join('\n')} + } + ` +} + +export function relate(type, params) { + const { from, to } = params + return ` + mutation { + ${from}_${type}_${to}: AddPost${type}( + from: { id: "${from}" }, + to: { id: "${to}" } + ) { from { id } } } ` } diff --git a/src/seed/factories/users.js b/src/seed/factories/users.js index 7b0f1316b..f1198cb7a 100644 --- a/src/seed/factories/users.js +++ b/src/seed/factories/users.js @@ -8,40 +8,10 @@ export default function create (params) { password = '1234', role = 'user', avatar = faker.internet.avatar(), - badgeIds = [], - blacklistedUserIds = [], - followedUserIds = [], disabled = false, deleted = false } = params - const badgeRelations = badgeIds.map((badgeId) => { - return ` - ${id}_${badgeId}: AddUserBadges( - from: {id: "${badgeId}"}, - to: {id: "${id}"} - ) { from { id } } - ` - }) - - const blacklistedUserRelations = blacklistedUserIds.map((blacklistedUserId) => { - return ` - ${id}_blacklist_${blacklistedUserId}: AddUserBlacklisted( - from: { id: "${id}" }, - to: { id: "${blacklistedUserId}" } - ) { from { id } } - ` - }) - - const followedUserRelations = followedUserIds.map((followedUserId) => { - return ` - ${id}_follow_${followedUserId}: AddUserFollowing( - from: { id: "${id}" }, - to: { id: "${followedUserId}" } - ) { from { id } } - ` - }); - return ` mutation { ${id}: CreateUser( @@ -59,24 +29,18 @@ export default function create (params) { avatar role } - ${badgeRelations.join('\n')} - ${blacklistedUserRelations.join('\n')} - ${followedUserRelations.join('\n')} } ` } export function relate(type, params) { - switch(type){ - case 'friends': - const { from, to } = params - return ` - mutation { - ${from}_friends_${to}: AddUserFriends( - from: { id: "${from}" }, - to: { id: "${to}" } - ) { from { id } } - } - ` - } + const { from, to } = params + return ` + mutation { + ${from}_${type}_${to}: AddUser${type}( + from: { id: "${from}" }, + to: { id: "${to}" } + ) { from { id } } + } + ` } diff --git a/src/seed/seed-db.js b/src/seed/seed-db.js index 79058f0d4..4ef55bec6 100644 --- a/src/seed/seed-db.js +++ b/src/seed/seed-db.js @@ -7,6 +7,7 @@ import seed from './data' /* eslint-disable no-multi-spaces */ (async function () { try { + await Promise.all([ create('badge', { id: 'b1', key: 'indiegogo_en_racoon', type: 'crowdfunding', status: 'permanent', icon: '/img/badges/indiegogo_en_racoon.svg' }), create('badge', { id: 'b2', key: 'indiegogo_en_rabbit', type: 'crowdfunding', status: 'permanent', icon: '/img/badges/indiegogo_en_rabbit.svg' }), @@ -17,19 +18,34 @@ import seed from './data' ]) await Promise.all([ - create('user', { id: 'u1', name: 'Peter Lustig', role: 'admin', followedUserIds: [ ], badgeIds: ['b6'], email: 'admin@example.org' }), - create('user', { id: 'u2', name: 'Bob der Baumeister', role: 'moderator', followedUserIds: ['u1'], badgeIds: ['b5'], email: 'moderator@example.org' }), - create('user', { id: 'u3', name: 'Jenny Rostock', role: 'user', followedUserIds: ['u2'], badgeIds: ['b4'], email: 'user@example.org' }), - create('user', { id: 'u4', name: 'Tick', role: 'user', followedUserIds: ['u3'], badgeIds: ['b3'], email: 'tick@example.org' }), - create('user', { id: 'u5', name: 'Trick', role: 'user', followedUserIds: ['u4'], badgeIds: ['b2'], email: 'trick@example.org' }), - create('user', { id: 'u6', name: 'Track', role: 'user', followedUserIds: ['u5'], badgeIds: ['b1'], email: 'track@example.org' }), - create('user', { id: 'u7', name: 'Dagobert', role: 'user', badgeIds: ['b1', 'b2'], blacklistedUserIds: ['u4', 'u5', 'u6'], email: 'dagobert@example.org' }) + create('user', { id: 'u1', name: 'Peter Lustig', role: 'admin', email: 'admin@example.org' }), + create('user', { id: 'u2', name: 'Bob der Baumeister', role: 'moderator', email: 'moderator@example.org' }), + create('user', { id: 'u3', name: 'Jenny Rostock', role: 'user', email: 'user@example.org' }), + create('user', { id: 'u4', name: 'Tick', role: 'user', email: 'tick@example.org' }), + create('user', { id: 'u5', name: 'Trick', role: 'user', email: 'trick@example.org' }), + create('user', { id: 'u6', name: 'Track', role: 'user', email: 'track@example.org' }), + create('user', { id: 'u7', name: 'Dagobert', role: 'user', email: 'dagobert@example.org' }) ]) await Promise.all([ - relate('user', 'friends', { from: 'u1', to: 'u2' }), - relate('user', 'friends', { from: 'u1', to: 'u3' }), - relate('user', 'friends', { from: 'u2', to: 'u3' }) + relate('user', 'Badges', { from: 'b6', to: 'u1' }), + relate('user', 'Badges', { from: 'b5', to: 'u2' }), + relate('user', 'Badges', { from: 'b4', to: 'u3' }), + relate('user', 'Badges', { from: 'b3', to: 'u4' }), + relate('user', 'Badges', { from: 'b2', to: 'u5' }), + relate('user', 'Badges', { from: 'b1', to: 'u6' }), + relate('user', 'Following', { from: 'u1', to: 'u2' }), + relate('user', 'Following', { from: 'u2', to: 'u3' }), + relate('user', 'Following', { from: 'u3', to: 'u4' }), + relate('user', 'Following', { from: 'u4', to: 'u5' }), + relate('user', 'Following', { from: 'u5', to: 'u6' }), + relate('user', 'Following', { from: 'u6', to: 'u7' }), + relate('user', 'Friends', { from: 'u1', to: 'u2' }), + relate('user', 'Friends', { from: 'u1', to: 'u3' }), + relate('user', 'Friends', { from: 'u2', to: 'u3' }), + relate('user', 'Blacklisted', { from: 'u7', to: 'u4' }), + relate('user', 'Blacklisted', { from: 'u7', to: 'u5' }), + relate('user', 'Blacklisted', { from: 'u7', to: 'u6' }) ]) const headers = await Promise.all([ @@ -69,22 +85,60 @@ import seed from './data' await Promise.all([ - create('post', { id: 'p0', categoryIds: ['cat1'], tagIds: ['t1', 't4'] }, { headers: headers[0]}), - create('post', { id: 'p1', categoryIds: ['cat2'], tagIds: ['t2', 't3'] }, { headers: headers[1]}), - create('post', { id: 'p2', categoryIds: ['cat3'], tagIds: ['t3', 't4'] }, { headers: headers[2]}), - create('post', { id: 'p3', categoryIds: ['cat4'], tagIds: ['t4', 't2'] }, { headers: headers[3]}), - create('post', { id: 'p4', categoryIds: ['cat5'], tagIds: ['t1', 't2'] }, { headers: headers[4]}), - create('post', { id: 'p5', categoryIds: ['cat6'], tagIds: ['t2', 't4'] }, { headers: headers[5]}), - create('post', { id: 'p6', categoryIds: ['cat7'], tagIds: ['t1', 't4'] }, { headers: headers[0]}), - create('post', { id: 'p7', categoryIds: ['cat8'], tagIds: ['t2', 't3'] }, { headers: headers[1]}), - create('post', { id: 'p8', categoryIds: ['cat9'], tagIds: ['t3', 't4'] }, { headers: headers[2]}), - create('post', { id: 'p10', categoryIds: ['cat11'], tagIds: ['t4', 't2'] }, { headers: headers[3]}), - create('post', { id: 'p11', categoryIds: ['cat12'], tagIds: ['t1', 't2'] }, { headers: headers[4]}), - create('post', { id: 'p12', categoryIds: ['cat13'], tagIds: ['t2', 't4'] }, { headers: headers[5]}), - create('post', { id: 'p13', categoryIds: ['cat14'], tagIds: ['t4', 't2'] }, { headers: headers[0]}), - create('post', { id: 'p14', categoryIds: ['cat15'], tagIds: ['t1', 't2'] }, { headers: headers[1]}), - create('post', { id: 'p15', categoryIds: ['cat16'], tagIds: ['t2', 't4'] }, { headers: headers[2]}) + create('post', { id: 'p0', tagIds: ['t1', 't4'] }, { headers: headers[0]}), + create('post', { id: 'p1', tagIds: ['t2', 't3'] }, { headers: headers[1]}), + create('post', { id: 'p2', tagIds: ['t3', 't4'] }, { headers: headers[2]}), + create('post', { id: 'p3', tagIds: ['t4', 't2'] }, { headers: headers[3]}), + create('post', { id: 'p4', tagIds: ['t1', 't2'] }, { headers: headers[4]}), + create('post', { id: 'p5', tagIds: ['t2', 't4'] }, { headers: headers[5]}), + create('post', { id: 'p6', tagIds: ['t1', 't4'] }, { headers: headers[0]}), + create('post', { id: 'p7', tagIds: ['t2', 't3'] }, { headers: headers[1]}), + create('post', { id: 'p8', tagIds: ['t3', 't4'] }, { headers: headers[2]}), + create('post', { id: 'p9', tagIds: ['t3', 't4'] }, { headers: headers[3]}), + create('post', { id: 'p10', tagIds: ['t4', 't2'] }, { headers: headers[4]}), + create('post', { id: 'p11', tagIds: ['t1', 't2'] }, { headers: headers[5]}), + create('post', { id: 'p12', tagIds: ['t2', 't4'] }, { headers: headers[0]}), + create('post', { id: 'p13', tagIds: ['t4', 't2'] }, { headers: headers[1]}), + create('post', { id: 'p14', tagIds: ['t1', 't2'] }, { headers: headers[2]}), + create('post', { id: 'p15', tagIds: ['t2', 't4'] }, { headers: headers[3]}) ]) + + await Promise.all([ + relate('post', 'Categories', { from: 'p0', to: 'cat16' }), + relate('post', 'Categories', { from: 'p1', to: 'cat1' }), + relate('post', 'Categories', { from: 'p2', to: 'cat2' }), + relate('post', 'Categories', { from: 'p3', to: 'cat3' }), + relate('post', 'Categories', { from: 'p4', to: 'cat4' }), + relate('post', 'Categories', { from: 'p5', to: 'cat5' }), + relate('post', 'Categories', { from: 'p6', to: 'cat6' }), + relate('post', 'Categories', { from: 'p7', to: 'cat7' }), + relate('post', 'Categories', { from: 'p8', to: 'cat8' }), + relate('post', 'Categories', { from: 'p9', to: 'cat9' }), + relate('post', 'Categories', { from: 'p10', to: 'cat10' }), + relate('post', 'Categories', { from: 'p11', to: 'cat11' }), + relate('post', 'Categories', { from: 'p12', to: 'cat12' }), + relate('post', 'Categories', { from: 'p13', to: 'cat13' }), + relate('post', 'Categories', { from: 'p14', to: 'cat14' }), + relate('post', 'Categories', { from: 'p15', to: 'cat15' }), + + relate('post', 'Tags', { from: 'p0', to: 't4' }), + relate('post', 'Tags', { from: 'p1', to: 't1' }), + relate('post', 'Tags', { from: 'p2', to: 't2' }), + relate('post', 'Tags', { from: 'p3', to: 't3' }), + relate('post', 'Tags', { from: 'p4', to: 't4' }), + relate('post', 'Tags', { from: 'p5', to: 't1' }), + relate('post', 'Tags', { from: 'p6', to: 't2' }), + relate('post', 'Tags', { from: 'p7', to: 't3' }), + relate('post', 'Tags', { from: 'p8', to: 't4' }), + relate('post', 'Tags', { from: 'p9', to: 't1' }), + relate('post', 'Tags', { from: 'p10', to: 't2' }), + relate('post', 'Tags', { from: 'p11', to: 't3' }), + relate('post', 'Tags', { from: 'p12', to: 't4' }), + relate('post', 'Tags', { from: 'p13', to: 't1' }), + relate('post', 'Tags', { from: 'p14', to: 't2' }), + relate('post', 'Tags', { from: 'p15', to: 't3' }), + ]) + } catch (err) { /* eslint-disable-next-line no-console */ console.error(err)