aria
08/22/2018, 5:25 PMhas_commented_100_times, which doesn't exist in the DB, but in the resolver you query for the number of comments associated with them and return true if it's >= 100devan
08/22/2018, 5:51 PMrikki
08/22/2018, 5:53 PMrikki
08/22/2018, 6:17 PMtype User is not an interface, we cannot extend it for virtual fields it seems?rikki
08/22/2018, 6:19 PMexport const UserExtended = {
hasMemberships: (parent, args, ctx, info) => {
return ctx.user.memberships && ctx.user.memberships.length > 0
},
}
export const resolvers = {
Query,
Mutation,
Subscription,
UserExtended,
}
This worked for getting the resolver workingrikki
08/22/2018, 6:21 PMtype UserExtended implements User {
hasMemberships: Boolean!
}rikki
08/22/2018, 6:23 PMUser definition) i think would add a column, thus not a virtual field. hmm @devan what would you do here?rikki
08/22/2018, 6:27 PMrikki
08/22/2018, 6:29 PM// resolvers
export const User = {
hasMemberships: (parent, args, ctx, info) => {
return ctx.user.memberships && ctx.user.memberships.length > 0
},
}
export const resolvers = {
Query,
Mutation,
Subscription,
User,
}
// datamodel.graphql
type User {
id: ID! @unique
hasMemberships: Boolean!
}rikki
08/22/2018, 6:31 PMhasMemberships does not generate a column in the database, so i guess prisma cleverly handles child field resolvers virtually 🙂aria
08/22/2018, 6:32 PMrikki
08/22/2018, 6:34 PMaria
08/22/2018, 6:35 PMrikki
08/22/2018, 6:36 PMrikki
08/22/2018, 6:36 PMdevan
08/22/2018, 6:38 PMrikki
08/22/2018, 6:38 PM// resolvers
const UserOverride = {
hasMemberships: (parent, args, ctx, info) => {
return ctx.user.memberships && ctx.user.memberships.length > 0
},
}
export {
Query,
Mutation,
Subscription,
UserOverride,
}
// schema.graphql
type UserOverride {
id: ID!
hasMemberships: Boolean!
// duplicated fields from datamodel here
}aria
08/22/2018, 6:39 PMdevan
08/22/2018, 6:39 PMrikki
08/22/2018, 6:39 PMdevan
08/22/2018, 6:39 PMdevan
08/22/2018, 6:40 PMdevan
08/22/2018, 6:40 PMdevan
08/22/2018, 6:41 PMaria
08/22/2018, 6:42 PMschema.graphql?rikki
08/22/2018, 6:42 PM# import * from "./generated/prisma.graphql"
type Query {
users(
where: UserWhereInput
): [Users]
}rikki
08/22/2018, 6:43 PMdatamodel.graphql in your schema.graphqlrikki
08/22/2018, 6:44 PMdatamodel.graphql and generates the prisma.graphqldevan
08/22/2018, 6:45 PMaria
08/22/2018, 6:46 PMschema.graphql look like if I wanted to reuse the types in prisma.graphql, but add/hide fields?aria
08/22/2018, 6:47 PMrikki
08/22/2018, 6:47 PMrikki
08/22/2018, 6:47 PMtype User and interface UserInterface as a helper, though it would bloat the prisma.graphqlaria
08/22/2018, 6:47 PMdevan
08/22/2018, 6:48 PMaria
08/22/2018, 6:48 PMrikki
08/22/2018, 6:48 PMrikki
08/22/2018, 6:49 PMUser being an example. is that a potential feature request?devan
08/22/2018, 6:49 PMrikki
08/22/2018, 6:52 PMdevan
08/22/2018, 6:52 PMrikki
08/22/2018, 6:53 PMrikki
08/22/2018, 6:55 PMtype AppDomainUser implements User {
virtualField: Boolean!
}
would currently throw an error because User is a type, not an interface (like Node).
I guess this means that if you use interfaces a lot in your datamodel you might be in luck, but mine are all types.rikki
08/22/2018, 7:08 PM// datamodel.graphql
interface NodeExtended implements Node {
createdBy: User!
createdDate: DateTime!
updatedDate: DateTime!
}
type Document implements NodeExtended {
name: String!
}
// schema.graphql
type AppDocument implements NodeExtended {
name: String! // duplicate fields from Document here
readCount: Int!
}
type Query {
documents: [AppDocument]
}
// resolvers/index.js
const AppDocument = {
readCount: () => {
return ctx.db.query.
}
}
export {
Query,
Mutations,
AppDocument
}rikki
08/22/2018, 7:09 PMrikki
08/22/2018, 7:12 PMrikki
08/22/2018, 7:41 PMprintSchema, however I thought of a somewhat brittle workaround that I was gonna make a PR for... 😄rikki
08/22/2018, 7:42 PM