Skip to content

Commit

Permalink
fix(graphql): fix graphQL API
Browse files Browse the repository at this point in the history
  • Loading branch information
Frantz Kati committed Dec 9, 2020
1 parent 81bafb3 commit 962827b
Show file tree
Hide file tree
Showing 37 changed files with 270,361 additions and 857 deletions.
6 changes: 3 additions & 3 deletions examples/blog/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,17 @@ const { auth } = require('@tensei/auth')
const { rest } = require('@tensei/rest')
const { media } = require('@tensei/media')
const { graphql } = require('@tensei/graphql')
const { tensei, plugin, route } = require('@tensei/core')
const { RedisPubSub } = require('graphql-redis-subscriptions')
const { tensei, route } = require('@tensei/core')

const Tag = require('./resources/Tag')
const Post = require('./resources/Post')
const User = require('./resources/User')
const Editor = require('./resources/Editor')
const Comment = require('./resources/Comment')

module.exports = tensei()
.dashboardPath('tensei')
.resources([Tag, Post, User, Comment])
.resources([Tag, Post, User, Comment, Editor])
.clientUrl('https://google.com')
.serverUrl('http://localhost:5000')
.defaultStorageDriver('local')
Expand Down
10 changes: 9 additions & 1 deletion examples/blog/resources/Comment.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
const { text, textarea, resource, belongsTo, filter } = require('@tensei/core')
const {
text,
textarea,
resource,
belongsTo,
filter,
hasOne,
} = require('@tensei/core')

module.exports = resource('Comment')
.fields([
text('Title').rules('required').searchable(),
textarea('Body').rules('required').hideOnIndex(),
textarea('Reply').rules('required', 'max:255').hideOnIndex(),
belongsTo('Post'),
hasOne('Editor'),
])
.filters([
filter('Comments on Post')
Expand Down
9 changes: 9 additions & 0 deletions examples/blog/resources/Editor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const { text, resource, hasOne } = require('@tensei/core')

const Editor = resource('Editor').fields([
text('Full name').searchable().rules('required'),
hasOne('Post'),
hasOne('Comment'),
])

module.exports = Editor
99 changes: 99 additions & 0 deletions examples/forum/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
require('dotenv').config()
const { auth } = require('@tensei/auth')
const { media } = require('@tensei/media')
const { graphql } = require('@tensei/graphql')
const { tensei, resource, text, textarea, belongsTo, bigInteger, hasMany, plugin } = require('@tensei/core')

tensei()
.plugins([
auth()
.rolesAndPermissions()
.setup(({ user }) => {
user.fields([
hasMany('Discussion'),
hasMany('Comment'),
belongsTo('Tenant')
.rules('required')
])
})
.social('github', {
key: process.env.GITHUB_KEY,
secret: process.env.GITHUB_SECRET,
scope: ['user', 'user:email'],
})
.plugin(),
media()
.plugin(),
graphql()
.plugin(),
plugin('Authorize discussions')
.boot(({ graphQlQueries }) => {
const insert_discussion = graphQlQueries.find(query => query.config.path === 'insert_discussion')

insert_discussion.authorize(async ({ body, manager, user }) => {
await manager.populate([user], 'tenant')

if (! body.object.user || ! body.object.tenant) {
return false
}

if (body.object.user.toString() !== user.id.toString()) return false

if (body.object.tenant.toString() !== user.tenant.id) return false

return true
})
}),
])
.resources([
resource('Tenant')
.fields([
text('Name')
.rules('required', 'unique:name'),
text('Slug')
.rules('required', 'unique:slug')
]),
resource('Reaction')
.fields([
text('Name')
]),
resource('Category')
.fields([
text('Name')
.rules('required'),
text('Emoji Name')
.rules('required'),
hasMany('Discussion'),
]),
resource('Comment')
.fields([
textarea('Content')
.rules('required'),
belongsTo('Discussion')
.rules('required'),
belongsTo('User')
.rules('required'),
hasMany('Reaction'),
]),
resource('Discussion')
.fields([
text('Title')
.searchable(),
textarea('Content')
.searchable(),
belongsTo('User')
.notNullable()
.rules('required'),
belongsTo('Tenant')
.rules('required'),
hasMany('Reaction'),
bigInteger('Views')
.nullable()
.default(0),
])
])
.db({
type: 'sqlite',
dbName: 'tensei_fluxx.sqlite',
})
.start()
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ class SocialAuthCallbackController {

return redirect(null, temporal_token)
} catch (error) {
console.log(error)
console.error(error)
return redirect(
`Something went wrong saving the oauth identity.`
)
Expand Down
Loading

0 comments on commit 962827b

Please sign in to comment.