Comments (4)
Exactly for reason you've described, single schema can have multiple schema roots.
Example:
import { SchemaRoot, Query, Mutation, compileSchema } from "typegql";
@SchemaRoot()
export class UserSchemaRoot {
@Query()
allUsers() {}
}
@SchemaRoot()
export class UserMutationsSchemaRoot {
@Mutation()
registerUser() {}
}
@SchemaRoot()
export class ProductSchemaRoot {
@Query()
allProducts() {}
}
const finalSchema = compileSchema([UserSchemaRoot, UserMutationsSchemaRoot, ProductSchemaRoot])
As seen, final schema is composed from many 'root' classes. Obviously, those classes can be defined in different files and imported.
Technically, you're not importing resolver itself, but you're able to divide your schema logic into many parts and it'd scale horizontally even for huge schema allowing you to have many small, easy to understand files.
Let me know if that solves your problem.
from typegql.
I would also like to know this as well. We want to define our schemas in one package that also our consumers use. Then define the resolvers in our private server code. If that's at all possible.
from typegql.
I don't know if I am not missing something, but you certainly can have a SchemaClass
which exposes your internal class.
So:
const myUberPrivateSchema = {
a() {...}
}
// somewhere else
@SchemaRoot()
export class Schema {
@Mutation()
public a() {
return myUberPrivateSchema.a()
}
}
from typegql.
Works for my purposes. Thanks
from typegql.
Related Issues (20)
- fields defined on a third level and farther of function prototype chain are not registered into schema HOT 2
- [question] returning an instance of a class HOT 4
- make InputField nullable by default HOT 2
- graphql-tools 3.0.2 HOT 2
- Documentation: Client Interfaces HOT 10
- allow to register Arg at runtime dynamically HOT 7
- feature request: @MutationField and @QueryField HOT 7
- Falsy values are being treated as `null`
- Differences from type-graphql HOT 2
- feature request: browser shim
- default params break the compileFieldArgs function
- support Date type by default HOT 4
- mixin support HOT 4
- pls update graphql dependency to latest v14 HOT 1
- Can I somehow pass context directly to resolver? HOT 1
- Pagination Count in Query HOT 1
- Question: Why is the Arg decorator not nullable by default? HOT 2
- Arguments To Query Type Not Exposed/Compiled? HOT 2
- How to use mutation with array? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from typegql.