Skip to content

Commit 349800a

Browse files
committed
Improve status messages for app bulk execute task
1 parent e794f12 commit 349800a

File tree

9 files changed

+39
-13
lines changed

9 files changed

+39
-13
lines changed

packages/app/src/cli/api/graphql/bulk-operations/generated/bulk-operation-run-mutation.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export type BulkOperationRunMutationMutationVariables = Types.Exact<{
1212
export type BulkOperationRunMutationMutation = {
1313
bulkOperationRunMutation?: {
1414
bulkOperation?: {
15+
type: Types.BulkOperationType
1516
completedAt?: unknown | null
1617
createdAt: unknown
1718
errorCode?: Types.BulkOperationErrorCode | null
@@ -81,6 +82,7 @@ export const BulkOperationRunMutation = {
8182
selectionSet: {
8283
kind: 'SelectionSet',
8384
selections: [
85+
{kind: 'Field', name: {kind: 'Name', value: 'type'}},
8486
{kind: 'Field', name: {kind: 'Name', value: 'completedAt'}},
8587
{kind: 'Field', name: {kind: 'Name', value: 'createdAt'}},
8688
{kind: 'Field', name: {kind: 'Name', value: 'errorCode'}},

packages/app/src/cli/api/graphql/bulk-operations/generated/bulk-operation-run-query.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export type BulkOperationRunQueryMutationVariables = Types.Exact<{
1010
export type BulkOperationRunQueryMutation = {
1111
bulkOperationRunQuery?: {
1212
bulkOperation?: {
13+
type: Types.BulkOperationType
1314
completedAt?: unknown | null
1415
createdAt: unknown
1516
errorCode?: Types.BulkOperationErrorCode | null
@@ -59,6 +60,7 @@ export const BulkOperationRunQuery = {
5960
selectionSet: {
6061
kind: 'SelectionSet',
6162
selections: [
63+
{kind: 'Field', name: {kind: 'Name', value: 'type'}},
6264
{kind: 'Field', name: {kind: 'Name', value: 'completedAt'}},
6365
{kind: 'Field', name: {kind: 'Name', value: 'createdAt'}},
6466
{kind: 'Field', name: {kind: 'Name', value: 'errorCode'}},

packages/app/src/cli/api/graphql/bulk-operations/generated/get-bulk-operation-by-id.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ export type GetBulkOperationByIdQueryVariables = Types.Exact<{
99

1010
export type GetBulkOperationByIdQuery = {
1111
bulkOperation?: {
12+
type: Types.BulkOperationType
1213
completedAt?: unknown | null
1314
createdAt: unknown
1415
errorCode?: Types.BulkOperationErrorCode | null
@@ -50,6 +51,7 @@ export const GetBulkOperationById = {
5051
selectionSet: {
5152
kind: 'SelectionSet',
5253
selections: [
54+
{kind: 'Field', name: {kind: 'Name', value: 'type'}},
5355
{kind: 'Field', name: {kind: 'Name', value: 'completedAt'}},
5456
{kind: 'Field', name: {kind: 'Name', value: 'createdAt'}},
5557
{kind: 'Field', name: {kind: 'Name', value: 'errorCode'}},

packages/app/src/cli/api/graphql/bulk-operations/generated/types.d.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,13 @@ export type BulkOperationStatus =
188188
/** The bulk operation is runnning. */
189189
| 'RUNNING'
190190

191+
/** The valid values for the bulk operation's type. */
192+
export type BulkOperationType =
193+
/** The bulk operation is a mutation. */
194+
| 'MUTATION'
195+
/** The bulk operation is a query. */
196+
| 'QUERY'
197+
191198
/** Possible error codes that can be returned by `BulkOperationUserError`. */
192199
export type BulkOperationUserErrorCode =
193200
/** The input value is invalid. */
@@ -203,6 +210,8 @@ export type BulkOperationsSortKeys =
203210
| 'COMPLETED_AT'
204211
/** Sort by the `created_at` value. */
205212
| 'CREATED_AT'
213+
/** Sort by the `status` value. */
214+
| 'STATUS'
206215

207216
/**
208217
* The possible HTTP methods that can be used when sending a request to upload a file using information from a

packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-run-mutation.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ mutation BulkOperationRunMutation(
99
clientIdentifier: $clientIdentifier
1010
) {
1111
bulkOperation {
12+
type
1213
completedAt
1314
createdAt
1415
errorCode

packages/app/src/cli/api/graphql/bulk-operations/mutations/bulk-operation-run-query.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ mutation BulkOperationRunQuery($query: String!) {
33
query: $query
44
) {
55
bulkOperation {
6+
type
67
completedAt
78
createdAt
89
errorCode

packages/app/src/cli/api/graphql/bulk-operations/queries/get-bulk-operation-by-id.graphql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
query GetBulkOperationById($id: ID!) {
22
bulkOperation(id: $id) {
3+
type
34
completedAt
45
createdAt
56
errorCode

packages/app/src/cli/services/bulk-operations/format-bulk-operation-status.test.ts

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,54 +8,62 @@ function createMockOperation(overrides: Partial<BulkOperation> = {}): BulkOperat
88
return {
99
id: 'gid://shopify/BulkOperation/123',
1010
status: 'CREATED',
11+
type: 'QUERY',
1112
errorCode: null,
1213
createdAt: '2024-01-01T00:00:00Z',
1314
completedAt: null,
1415
objectCount: '0',
1516
url: null,
17+
partialDataUrl: null,
1618
...overrides,
1719
}
1820
}
1921

2022
describe('formatBulkOperationStatus', () => {
21-
test('formats RUNNING status with object count', () => {
22-
const result = formatBulkOperationStatus(createMockOperation({status: 'RUNNING', objectCount: 42}))
23-
expect(result.value).toContain('Bulk operation in progress...')
24-
expect(result.value).toContain('(42 objects)')
23+
test('formats RUNNING status for query with object count', () => {
24+
const result = formatBulkOperationStatus(createMockOperation({status: 'RUNNING', type: 'QUERY', objectCount: '42'}))
25+
expect(result.value).toContain('Bulk operation in progress')
26+
expect(result.value).toContain('(42 objects read)')
27+
})
28+
29+
test('formats RUNNING status for mutation with object count', () => {
30+
const result = formatBulkOperationStatus(createMockOperation({status: 'RUNNING', type: 'MUTATION', objectCount: '42'}))
31+
expect(result.value).toContain('Bulk operation in progress')
32+
expect(result.value).toContain('(42 objects written)')
2533
})
2634

2735
test('formats CREATED status', () => {
2836
const result = formatBulkOperationStatus(createMockOperation({status: 'CREATED'}))
29-
expect(result.value).toBe('Starting...')
37+
expect(result.value).toBe('Starting')
3038
})
3139

3240
test('formats COMPLETED status', () => {
33-
const result = formatBulkOperationStatus(createMockOperation({status: 'COMPLETED', objectCount: 100}))
41+
const result = formatBulkOperationStatus(createMockOperation({status: 'COMPLETED', objectCount: '100'}))
3442
expect(result.value).toContain('Bulk operation succeeded:')
3543
expect(result.value).toContain('100 objects')
3644
})
3745

3846
test('formats FAILED status with error code', () => {
3947
const result = formatBulkOperationStatus(
40-
createMockOperation({status: 'FAILED', objectCount: 10, errorCode: 'ACCESS_DENIED'}),
48+
createMockOperation({status: 'FAILED', objectCount: '10', errorCode: 'ACCESS_DENIED'}),
4149
)
4250
expect(result.value).toContain('Bulk operation failed.')
4351
expect(result.value).toContain('Error: ACCESS_DENIED')
4452
})
4553

4654
test('formats FAILED status without error code', () => {
47-
const result = formatBulkOperationStatus(createMockOperation({status: 'FAILED', objectCount: 10, errorCode: null}))
55+
const result = formatBulkOperationStatus(createMockOperation({status: 'FAILED', objectCount: '10', errorCode: null}))
4856
expect(result.value).toContain('Bulk operation failed.')
4957
expect(result.value).toContain('Error: unknown')
5058
})
5159

5260
test('formats CANCELING status', () => {
53-
const result = formatBulkOperationStatus(createMockOperation({status: 'CANCELING', objectCount: 5}))
61+
const result = formatBulkOperationStatus(createMockOperation({status: 'CANCELING', objectCount: '5'}))
5462
expect(result.value).toBe('Bulk operation canceling...')
5563
})
5664

5765
test('formats CANCELED status', () => {
58-
const result = formatBulkOperationStatus(createMockOperation({status: 'CANCELED', objectCount: 5}))
66+
const result = formatBulkOperationStatus(createMockOperation({status: 'CANCELED', objectCount: '5'}))
5967
expect(result.value).toBe('Bulk operation canceled.')
6068
})
6169

packages/app/src/cli/services/bulk-operations/format-bulk-operation-status.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ export function formatBulkOperationStatus(
66
): TokenizedString {
77
switch (operation.status) {
88
case 'RUNNING':
9-
return outputContent`Bulk operation in progress... ${outputToken.gray(
10-
`(${String(operation.objectCount)} objects)`,
9+
return outputContent`Bulk operation in progress ${outputToken.gray(
10+
`(${String(operation.objectCount)} objects ${operation.type === 'MUTATION' ? 'written' : 'read'})`,
1111
)}`
1212
case 'CREATED':
13-
return outputContent`Starting...`
13+
return outputContent`Starting`
1414
case 'COMPLETED':
1515
return outputContent`Bulk operation succeeded: ${outputToken.gray(`${String(operation.objectCount)} objects`)}`
1616
case 'FAILED':

0 commit comments

Comments
 (0)