mirror of
https://github.com/IT4Change/Ocelot-Social.git
synced 2025-12-13 07:45:56 +00:00
Choose another slug is green
This commit is contained in:
parent
7a70b9ece4
commit
3532b473ee
@ -1,11 +1,22 @@
|
||||
import uniqueSlug from './slugify/uniqueSlug'
|
||||
import slug from 'slug'
|
||||
|
||||
const isUniqueFor = (context, type) => {
|
||||
return async (slug) => {
|
||||
const session = context.driver.session()
|
||||
const response = await session.run(
|
||||
`MATCH(p:${type} {slug: $slug }) return p.slug`, {
|
||||
slug
|
||||
})
|
||||
session.close()
|
||||
return response.records.length === 0
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
Mutation: {
|
||||
CreatePost: async (resolve, root, args, context, info) => {
|
||||
args.slug = slug(args.title, {
|
||||
lower: true
|
||||
})
|
||||
args.slug = await uniqueSlug(args.title, isUniqueFor(context, 'Post'))
|
||||
const result = await resolve(root, args, context, info)
|
||||
return result
|
||||
},
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
import slugify from 'slug'
|
||||
export default function uniqueSlug (string, isUnique) {
|
||||
export default async function uniqueSlug (string, isUnique) {
|
||||
let slug = slugify(string, {
|
||||
lower: true
|
||||
})
|
||||
if (isUnique(slug)) return slug
|
||||
if (await isUnique(slug)) return slug
|
||||
|
||||
let count = 0
|
||||
let uniqueSlug
|
||||
do {
|
||||
count += 1
|
||||
uniqueSlug = `${slug}-${count}`
|
||||
} while (!isUnique(uniqueSlug))
|
||||
} while (!await isUnique(uniqueSlug))
|
||||
return uniqueSlug
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user