Skip to content

Commit 2933e53

Browse files
chore: update readme
1 parent 0d25f24 commit 2933e53

File tree

1 file changed

+30
-41
lines changed

1 file changed

+30
-41
lines changed

README.md

Lines changed: 30 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ pnpm add ts-relay-cursor-paging
1818
```
1919

2020

21-
## Demo
21+
## Demo
2222

2323
Open graphql playground in your browser port 4000/graphql
2424

@@ -69,30 +69,22 @@ return {
6969

7070
```ts
7171
import { createServer } from 'node:http'
72-
import { offsetForArgs } from 'ts-relay-cursor-paging'
73-
import { connectionFromArraySlice } from 'graphql-relay'
72+
import { resolveOffsetConnection } from 'ts-relay-cursor-paging'
7473
import { GraphQLError } from 'graphql'
7574
import { createSchema, createYoga } from 'graphql-yoga'
7675

77-
const data = [
78-
{
79-
id: 1,
80-
name: 'Library 1',
81-
},
82-
{
83-
id: 2,
84-
name: 'Library 2',
85-
},
86-
{
87-
id: 3,
88-
name: 'Library 3',
89-
},
90-
{
91-
id: 4,
92-
name: 'Library 4',
93-
},
94-
]
76+
function datasLine() {
77+
const datas = []
78+
79+
for (let i = 0; i < 100; i++) {
80+
datas.push({
81+
id: i,
82+
name: `Library ${i}`,
83+
})
84+
}
9585

86+
return datas
87+
}
9688
export const schema = createSchema({
9789
typeDefs: /* GraphQL */ `
9890
scalar Cursor
@@ -119,40 +111,37 @@ export const schema = createSchema({
119111
edges: [LibraryEdge!]!
120112
pageInfo: PageInfo!
121113
}
122-
114+
123115
type Query {
124116
libraries(
125117
first: Int
126118
after: Cursor
127119
last: Int
128120
before: Cursor
129-
): LibraryConnection
121+
): LibraryConnection
130122
}
131123
`,
132124
resolvers: {
133125
Query: {
134-
libraries: async (_parent, _args, context, _info) => {
135-
const { limit, offset, expectedSize } = offsetForArgs({
136-
args: {
137-
first: _args.first,
138-
last: _args.last,
139-
after: _args.after,
140-
before: _args.before,
141-
},
126+
libraries: async (_parent, _args, _context, _info) => {
127+
const generator = datasLine()
128+
129+
async function resolveData({ offset, limit }: { offset: number; limit: number }) {
130+
const slicedData = generator.slice(offset, offset + limit)
131+
return slicedData
132+
}
133+
134+
const datas = await resolveOffsetConnection({ args: _args }, ({ limit, offset }) => {
135+
return resolveData({ limit, offset })
142136
})
143137

144-
if (!data)
138+
if (!generator)
145139
throw new GraphQLError('No libraries found')
146140

147-
const page = connectionFromArraySlice(data, _args, {
148-
arrayLength: data.length,
149-
sliceStart: offset,
150-
})
151141
return {
152-
edges: page.edges,
142+
edges: datas.edges,
153143
pageInfo: {
154-
...page.pageInfo,
155-
totalPageCount: expectedSize,
144+
...datas.pageInfo,
156145
},
157146
}
158147
},
@@ -167,8 +156,8 @@ const yoga = createYoga({ schema })
167156
const server = createServer(yoga)
168157

169158
// Start the server and you're done!
170-
server.listen(4000, () => {
171-
console.info('Server is running on http://localhost:4000/graphql')
159+
server.listen(3100, () => {
160+
console.info('Server is running on http://localhost:3100/graphql')
172161
})
173162
```
174163
</details>

0 commit comments

Comments
 (0)