1.5.6 • Published 24 days ago

@graphql-pagination/sql-knex v1.5.6

Weekly downloads
-
License
MIT
Repository
github
Last release
24 days ago

GraphQL Pagination / SQL Knex

Module provides SQL DataSource for Graphql Pagination based on Knex.js.

Usage

Initialize the SqlKnexDataSource with following config:

const ds = new SqlKnexDataSource({
    tableName: "book",      // Base table name
    idFieldName: "id",      // column used as cursor.
    knex: knex,             // pass your knex instance
    baseQuery: (args) => { return knex("book") },    // [Optional] Customize baseQuery in case of more complicated joins or additional filters.
});

and pass it to dataSourcePager like any other.

const pager = dataSourcePager({
    dataSource: ds,
    typeName: "Book",
});

Example

// BookConnection is generated by dataSourcePager
const typeDefs = gql`
    type Book {
        id: ID!
        title: String
        author: String
        published: DateTime
    }
    type Query {
        booksAsc(first: Int = 10 after: String author: String): BookConnection
        booksDesc(last: Int = 10 before: String author: String): BookConnection
    }
`;


const baseQueryFilter = (args) => {
    return knex(tableName)
        .where(builder => {
            if (args.author) builder.where("author", args.author);
        });
};

const ds = new SqlKnexDataSource({
    tableName: tableName,
    idFieldName: "id",
    knex: knex,
    baseQuery: baseQueryFilter,
});

const pager = new dataSourcePager({
    dataSource: ds,
    typeName: "Book",
});

const resolvers = {
    Query: {
        booksAsc: (_, args) => pager.forwardResolver(args),
        booksDesc: (_, args) => pager.backwardResolver(args),
    },
};


const createApolloServer = () => {
    return new ApolloServer({
        typeDefs: [
            typeDefs,
            pager.typeDefs, // BookConnection, BookEdge, PageInfo typeDefs
            scalarTypeDefs, // for DateTime
        ],
        resolvers: [
            resolvers,
            scalarResolvers, // for DateTime
        ],
    });
};

See fully working example in examples/sql-knex.

1.5.6

24 days ago

1.5.5

5 months ago

1.5.4

5 months ago

1.5.3

7 months ago

1.5.2

9 months ago

1.2.0

1 year ago

1.5.1

1 year ago

1.5.0

1 year ago

1.4.0

1 year ago

1.3.0

1 year ago

1.1.0

1 year ago

1.0.25

1 year ago

1.0.24

1 year ago

1.0.23

1 year ago

1.0.22

1 year ago

1.0.21

1 year ago

1.0.20

1 year ago

1.0.19

1 year ago

1.0.18

1 year ago

1.0.17

1 year ago

1.0.16

1 year ago

1.0.15

1 year ago

1.0.14

2 years ago

1.0.13

2 years ago

1.0.9

2 years ago

1.0.8

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.11

2 years ago

1.0.10

2 years ago

1.0.12

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.2.2

2 years ago

0.2.1

2 years ago

0.2.0

2 years ago