Skip to content

Commit f11a50e

Browse files
committed
feat: add menu to orders
1 parent b34c433 commit f11a50e

File tree

6 files changed

+24
-0
lines changed

6 files changed

+24
-0
lines changed

apps/api/src/chat/entities/menu.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { BaseEntity } from '@app/common/base/base-entity'
22
import { OwnedAuthorizer } from '@app/common/base/owned.authorizer'
3+
import { EntityRef } from '@app/common/decorators/entity-ref.decorator'
34
import { OwnedEntity } from '@app/common/decorators/owned-entity.decorator'
45
import { Reference } from '@app/common/typings/mongodb'
56
import { Injectable } from '@nestjs/common'
@@ -15,6 +16,7 @@ export class MenuAuthorizer extends OwnedAuthorizer<Menu> {}
1516
@ObjectType()
1617
@OwnedEntity()
1718
@Authorize<Menu>(MenuAuthorizer)
19+
@EntityRef('order', () => Menu, { relationName: '.menu' })
1820
export class Menu extends BaseEntity {
1921
@prop({ ref: User, required: true, index: true })
2022
readonly owner!: Reference<User>

apps/api/src/chat/entities/order.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import { BaseEntity } from '@app/common/base/base-entity'
22
import { OwnedAuthorizer } from '@app/common/base/owned.authorizer'
3+
import { EntityRef } from '@app/common/decorators/entity-ref.decorator'
34
import { OwnedEntity } from '@app/common/decorators/owned-entity.decorator'
45
import { Reference } from '@app/common/typings/mongodb'
56
import { Injectable } from '@nestjs/common'
67
import { Field, InputType, ObjectType } from '@nestjs/graphql'
78
import { Authorize } from '@ptc-org/nestjs-query-graphql'
89
import { prop } from '@typegoose/typegoose'
910
import { getAddress, isAddress } from 'ethers/lib/utils'
11+
import { GraphQLString } from 'graphql'
1012
import { User } from '../../users/entities/user'
13+
import { Menu } from './menu'
1114
import { CreateOrderItemInput, OrderItem, UpdateOrderItemInput } from './order-item'
1215

1316
export enum OrderState {
@@ -22,6 +25,7 @@ export class OrderAuthorizer extends OwnedAuthorizer<Order> {}
2225
@ObjectType()
2326
@OwnedEntity()
2427
@Authorize<Order>(OrderAuthorizer)
28+
@EntityRef('menu', () => Menu)
2529
export class Order extends BaseEntity {
2630
@prop({ ref: User, required: true, index: true })
2731
readonly owner!: Reference<User>
@@ -38,6 +42,9 @@ export class Order extends BaseEntity {
3842
@Field()
3943
state: OrderState
4044

45+
@prop({ ref: Menu, required: true })
46+
readonly menu!: Reference<Menu>
47+
4148
@Field(() => [OrderItem])
4249
@prop({ default: [] })
4350
items: OrderItem[]
@@ -54,6 +61,9 @@ export class CreateOrderInput {
5461
@Field()
5562
state: OrderState
5663

64+
@Field(() => GraphQLString)
65+
menu: Reference<Menu>
66+
5767
@Field(() => [CreateOrderItemInput])
5868
items: CreateOrderItemInput[]
5969
}

apps/api/src/chat/resolvers/order.resolver.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export class OrderResolver extends BaseResolver(Order, {
1313
CreateDTOClass: CreateOrderInput,
1414
UpdateDTOClass: UpdateOrderInput,
1515
guards: [GraphqlGuard],
16+
enableTotalCount: true,
1617
}) {
1718
constructor(protected orderService: OrderService, @InjectAuthorizer(Order) readonly authorizer: Authorizer<Order>) {
1819
super(orderService)

generated/graphql.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -828,6 +828,7 @@ export interface CreateOrderInput {
828828
address: string;
829829
total?: Nullable<number>;
830830
state: string;
831+
menu: string;
831832
items: CreateOrderItemInput[];
832833
}
833834

@@ -1066,6 +1067,7 @@ export interface Menu {
10661067
name: string;
10671068
currency?: Nullable<string>;
10681069
items: MenuItem[];
1070+
order: Menu;
10691071
}
10701072

10711073
export interface Contact {
@@ -1097,6 +1099,7 @@ export interface Order {
10971099
total: number;
10981100
state: string;
10991101
items: OrderItem[];
1102+
menu: Menu;
11001103
}
11011104

11021105
export interface UserDatabase {
@@ -1418,6 +1421,7 @@ export interface OrderEdge {
14181421
export interface OrderConnection {
14191422
pageInfo: PageInfo;
14201423
edges: OrderEdge[];
1424+
totalCount: number;
14211425
}
14221426

14231427
export interface WorkflowTriggerDeleteResponse {

generated/schema.graphql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,7 @@ type Menu {
417417
name: String!
418418
currency: String
419419
items: [MenuItem!]!
420+
order: Menu!
420421
}
421422

422423
type Contact {
@@ -448,6 +449,7 @@ type Order {
448449
total: Float!
449450
state: String!
450451
items: [OrderItem!]!
452+
menu: Menu!
451453
}
452454

453455
type UserDatabase {
@@ -890,6 +892,9 @@ type OrderConnection {
890892

891893
"""Array of edges."""
892894
edges: [OrderEdge!]!
895+
896+
"""Fetch total count of records"""
897+
totalCount: Int!
893898
}
894899

895900
type WorkflowTriggerDeleteResponse {
@@ -2066,6 +2071,7 @@ input CreateOrderInput {
20662071
address: String!
20672072
total: Float
20682073
state: String!
2074+
menu: String!
20692075
items: [CreateOrderItemInput!]!
20702076
}
20712077

libs/definitions/src/integration-definitions/orders/actions/create-order.action.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ export class CreateOrderAction extends OperationAction {
177177
owner: user,
178178
address,
179179
total,
180+
menu,
180181
items: data.Order.map((item) => ({
181182
name: item.item,
182183
quantity: item.quantity ?? 1,

0 commit comments

Comments
 (0)