MCPcopy Index your code
hub / github.com/drizzle-team/drizzle-graphql

github.com/drizzle-team/drizzle-graphql @0.8.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.8.5 ↗ · + Follow
62 symbols 306 edges 25 files 0 documented · 0% updated 23mo ago0.8.5 · 2024-08-12★ 9019 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Drizzle-GraphQL

Automatically create GraphQL schema or customizable schema config fields from Drizzle ORM schema

Usage

  • Pass your drizzle database instance and schema into builder to generate { schema, entities } object
  • Use schema if pre-built schema already satisfies all your neeeds. It's compatible witn any server that consumes GraphQLSchema class instance

    Example: hosting schema using GraphQL Yoga

    ```Typescript import { createServer } from 'node:http' import { createYoga } from 'graphql-yoga' import { buildSchema } from 'drizzle-graphql'

    // db - your drizzle instance import { db } from './database'

    const { schema } = buildSchema(db)

    const yoga = createYoga({ schema })

    server.listen(4000, () => { console.info('Server is running on http://localhost:4000/graphql') }) ```

  • If you want to customize your schema, you can use entities object to build your own new schema

    ```Typescript import { createServer } from 'node:http' import { GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLSchema } from 'graphql' import { createYoga } from 'graphql-yoga' import { buildSchema } from 'drizzle-graphql'

    // Schema contains 'Users' and 'Customers' tables import { db } from './database'

    const { entities } = buildSchema(db)

    // You can customize which parts of queries or mutations you want const schema = new GraphQLSchema({ query: new GraphQLObjectType({ name: 'Query', fields: { // Select only wanted queries out of all generated users: entities.queries.users, customer: entities.queries.customersSingle,

            // Create a custom one
            customUsers: {
                // You can reuse and customize types from original schema
                type: new GraphQLList(new GraphQLNonNull(entities.types.UsersItem)),
                args: {
                    // You can reuse inputs as well
                    where: {
                        type: entities.inputs.UsersFilters
                    }
                },
                resolve: async (source, args, context, info) => {
                    // Your custom logic goes here...
                    const result = await db.select(schema.Users).where()...
    
                    return result
                }
            }
        }
    }),
    // Same rules apply to mutations
    mutation: new GraphQLObjectType({
        name: 'Mutation',
        fields: entities.mutations
    }),
    // In case you need types inside your schema
    types: [...Object.values(entities.types), ...Object.values(entities.inputs)]
    

    })

    const yoga = createYoga({ schema })

    server.listen(4000, () => { console.info('Server is running on http://localhost:4000/graphql') }) ```

Extension points exported contracts — how you extend this code

Context (Interface)
(no doc)
tests/mysql-custom.test.ts
Context (Interface)
(no doc)
tests/sqlite-custom.test.ts
Context (Interface)
(no doc)
tests/mysql.test.ts
Context (Interface)
(no doc)
tests/pg.test.ts
Context (Interface)
(no doc)
tests/sqlite.test.ts
Context (Interface)
(no doc)
tests/pg-custom.test.ts

Core symbols most depended-on inside this repo

capitalize
called by 38
src/util/case-ops/index.ts
extractFilters
called by 13
src/util/builders/common.ts
remapToGraphQLArrayOutput
called by 10
src/util/data-mappers/index.ts
extractSelectedColumnsFromTreeSQLFormat
called by 8
src/util/builders/common.ts
extractSelectedColumnsFromTree
called by 7
src/util/builders/common.ts
extractOrderBy
called by 7
src/util/builders/common.ts
remapToGraphQLSingleOutput
called by 7
src/util/data-mappers/index.ts
remapFromGraphQLSingleInput
called by 7
src/util/data-mappers/index.ts

Shape

Function 53
Interface 6
Class 2
Method 1

Languages

TypeScript100%

Modules by API surface

src/util/builders/common.ts15 symbols
src/util/builders/sqlite.ts7 symbols
src/util/builders/pg.ts7 symbols
src/util/builders/mysql.ts7 symbols
src/util/data-mappers/index.ts6 symbols
tests/util/query/index.ts3 symbols
src/util/type-converter/index.ts3 symbols
tests/pg.test.ts2 symbols
tests/pg-custom.test.ts2 symbols
tests/mysql.test.ts2 symbols
tests/mysql-custom.test.ts2 symbols
src/util/case-ops/index.ts2 symbols

Datastores touched

(mysql)Database · 1 repos

For agents

$ claude mcp add drizzle-graphql \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page