mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
Implement #238
This commit is contained in:
parent
b9a03b9b8e
commit
1cbab2a5c4
@ -1,44 +1,21 @@
|
||||
const setCreatedAt = (resolve, root, args, context, info) => {
|
||||
args.createdAt = (new Date()).toISOString()
|
||||
return resolve(root, args, context, info)
|
||||
}
|
||||
const setUpdatedAt = (resolve, root, args, context, info) => {
|
||||
args.updatedAt = (new Date()).toISOString()
|
||||
return resolve(root, args, context, info)
|
||||
}
|
||||
|
||||
export default {
|
||||
Mutation: {
|
||||
CreateUser: async (resolve, root, args, context, info) => {
|
||||
args.createdAt = (new Date()).toISOString()
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
},
|
||||
CreatePost: async (resolve, root, args, context, info) => {
|
||||
args.createdAt = (new Date()).toISOString()
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
},
|
||||
CreateComment: async (resolve, root, args, context, info) => {
|
||||
args.createdAt = (new Date()).toISOString()
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
},
|
||||
CreateOrganization: async (resolve, root, args, context, info) => {
|
||||
args.createdAt = (new Date()).toISOString()
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
},
|
||||
UpdateUser: async (resolve, root, args, context, info) => {
|
||||
args.updatedAt = (new Date()).toISOString()
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
},
|
||||
UpdatePost: async (resolve, root, args, context, info) => {
|
||||
args.updatedAt = (new Date()).toISOString()
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
},
|
||||
UpdateComment: async (resolve, root, args, context, info) => {
|
||||
args.updatedAt = (new Date()).toISOString()
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
},
|
||||
UpdateOrganization: async (resolve, root, args, context, info) => {
|
||||
args.updatedAt = (new Date()).toISOString()
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
}
|
||||
CreateUser: setCreatedAt,
|
||||
CreatePost: setCreatedAt,
|
||||
CreateComment: setCreatedAt,
|
||||
CreateOrganization: setCreatedAt,
|
||||
UpdateUser: setUpdatedAt,
|
||||
UpdatePost: setUpdatedAt,
|
||||
UpdateComment: setUpdatedAt,
|
||||
UpdateOrganization: setUpdatedAt,
|
||||
}
|
||||
}
|
||||
|
||||
@ -24,6 +24,6 @@ const includeFieldsRecursively = (includedFields) => {
|
||||
}
|
||||
|
||||
export default {
|
||||
Query: includeFieldsRecursively(['id', 'disabled', 'deleted']),
|
||||
Mutation: includeFieldsRecursively(['id', 'disabled', 'deleted'])
|
||||
Query: includeFieldsRecursively(['id', 'createdAt', 'disabled', 'deleted']),
|
||||
Mutation: includeFieldsRecursively(['id', 'createdAt', 'disabled', 'deleted'])
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ import xssMiddleware from './xssMiddleware'
|
||||
import permissionsMiddleware from './permissionsMiddleware'
|
||||
import userMiddleware from './userMiddleware'
|
||||
import includedFieldsMiddleware from './includedFieldsMiddleware'
|
||||
import orderByMiddleware from './orderByMiddleware'
|
||||
|
||||
export default schema => {
|
||||
let middleware = [
|
||||
@ -20,7 +21,8 @@ export default schema => {
|
||||
fixImageUrlsMiddleware,
|
||||
softDeleteMiddleware,
|
||||
userMiddleware,
|
||||
includedFieldsMiddleware
|
||||
includedFieldsMiddleware,
|
||||
orderByMiddleware
|
||||
]
|
||||
|
||||
// add permisions middleware at the first position (unless we're seeding)
|
||||
|
||||
17
backend/src/middleware/orderByMiddleware.js
Normal file
17
backend/src/middleware/orderByMiddleware.js
Normal file
@ -0,0 +1,17 @@
|
||||
import cloneDeep from 'lodash/cloneDeep'
|
||||
|
||||
const defaultOrderBy = (resolve, root, args, context, resolveInfo) => {
|
||||
const copy = cloneDeep(resolveInfo)
|
||||
const newestFirst = {
|
||||
kind: "Argument",
|
||||
name: { kind: "Name", value: "orderBy" },
|
||||
value: { kind: "EnumValue", value: "createdAt_desc" }
|
||||
}
|
||||
const [fieldNode] = copy.fieldNodes
|
||||
if(fieldNode) fieldNode.arguments.push(newestFirst)
|
||||
return resolve(root, args, context, copy)
|
||||
}
|
||||
|
||||
export default {
|
||||
Query: defaultOrderBy
|
||||
}
|
||||
@ -25,18 +25,38 @@ afterEach(async () => {
|
||||
|
||||
describe('Query', () => {
|
||||
describe('Post', () => {
|
||||
beforeEach(() => {
|
||||
query = '{ Post { title } }'
|
||||
})
|
||||
|
||||
describe('orderBy', () => {
|
||||
it('createdAt descending is default', async () => {
|
||||
query = '{ Post { title } }'
|
||||
const posts = [
|
||||
{ title: 'last' },
|
||||
{ title: 'third' },
|
||||
{ title: 'second' },
|
||||
{ title: 'first' }
|
||||
]
|
||||
const expected = { data: { Post: posts } }
|
||||
const expected = { Post: posts }
|
||||
await expect(client.request(query)).resolves.toEqual(expected)
|
||||
})
|
||||
|
||||
describe('(orderBy: createdAt_asc)', () => {
|
||||
beforeEach(() => {
|
||||
query = '{ Post(orderBy: createdAt_asc) { title } }'
|
||||
})
|
||||
|
||||
it('orders by createdAt ascending', async () => {
|
||||
const posts = [
|
||||
{ title: 'first' },
|
||||
{ title: 'second' },
|
||||
{ title: 'third' },
|
||||
{ title: 'last' }
|
||||
]
|
||||
const expected = { Post: posts }
|
||||
await expect(client.request(query)).resolves.toEqual(expected)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
Loading…
x
Reference in New Issue
Block a user