feat(cardex): implement cardex controller, service, and DTO for stock movements

feat(pos): add POS controller and service for order creation and stock retrieval
refactor(pos): enhance stock and product category retrieval with pagination and mapping
This commit is contained in:
2025-12-21 19:09:41 +03:30
parent d514267f58
commit c6a86719dd
42 changed files with 3769 additions and 119 deletions
+151
View File
@@ -253,6 +253,7 @@ export type UserWhereInput = {
deletedAt?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null
updatedAt?: Prisma.DateTimeFilter<"User"> | Date | string
role?: Prisma.XOR<Prisma.RoleScalarRelationFilter, Prisma.RoleWhereInput>
refreshTokens?: Prisma.RefreshTokenListRelationFilter
}
export type UserOrderByWithRelationInput = {
@@ -266,6 +267,7 @@ export type UserOrderByWithRelationInput = {
deletedAt?: Prisma.SortOrderInput | Prisma.SortOrder
updatedAt?: Prisma.SortOrder
role?: Prisma.RoleOrderByWithRelationInput
refreshTokens?: Prisma.RefreshTokenOrderByRelationAggregateInput
_relevance?: Prisma.UserOrderByRelevanceInput
}
@@ -283,6 +285,7 @@ export type UserWhereUniqueInput = Prisma.AtLeast<{
deletedAt?: Prisma.DateTimeNullableFilter<"User"> | Date | string | null
updatedAt?: Prisma.DateTimeFilter<"User"> | Date | string
role?: Prisma.XOR<Prisma.RoleScalarRelationFilter, Prisma.RoleWhereInput>
refreshTokens?: Prisma.RefreshTokenListRelationFilter
}, "id" | "mobileNumber">
export type UserOrderByWithAggregationInput = {
@@ -326,6 +329,7 @@ export type UserCreateInput = {
deletedAt?: Date | string | null
updatedAt?: Date | string
role: Prisma.RoleCreateNestedOneWithoutUsersInput
refreshTokens?: Prisma.RefreshTokenCreateNestedManyWithoutUserInput
}
export type UserUncheckedCreateInput = {
@@ -338,6 +342,7 @@ export type UserUncheckedCreateInput = {
createdAt?: Date | string
deletedAt?: Date | string | null
updatedAt?: Date | string
refreshTokens?: Prisma.RefreshTokenUncheckedCreateNestedManyWithoutUserInput
}
export type UserUpdateInput = {
@@ -349,6 +354,7 @@ export type UserUpdateInput = {
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
role?: Prisma.RoleUpdateOneRequiredWithoutUsersNestedInput
refreshTokens?: Prisma.RefreshTokenUpdateManyWithoutUserNestedInput
}
export type UserUncheckedUpdateInput = {
@@ -361,6 +367,7 @@ export type UserUncheckedUpdateInput = {
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
refreshTokens?: Prisma.RefreshTokenUncheckedUpdateManyWithoutUserNestedInput
}
export type UserCreateManyInput = {
@@ -459,6 +466,11 @@ export type UserOrderByRelationAggregateInput = {
_count?: Prisma.SortOrder
}
export type UserScalarRelationFilter = {
is?: Prisma.UserWhereInput
isNot?: Prisma.UserWhereInput
}
export type StringFieldUpdateOperationsInput = {
set?: string
}
@@ -521,6 +533,20 @@ export type UserUncheckedUpdateManyWithoutRoleNestedInput = {
deleteMany?: Prisma.UserScalarWhereInput | Prisma.UserScalarWhereInput[]
}
export type UserCreateNestedOneWithoutRefreshTokensInput = {
create?: Prisma.XOR<Prisma.UserCreateWithoutRefreshTokensInput, Prisma.UserUncheckedCreateWithoutRefreshTokensInput>
connectOrCreate?: Prisma.UserCreateOrConnectWithoutRefreshTokensInput
connect?: Prisma.UserWhereUniqueInput
}
export type UserUpdateOneRequiredWithoutRefreshTokensNestedInput = {
create?: Prisma.XOR<Prisma.UserCreateWithoutRefreshTokensInput, Prisma.UserUncheckedCreateWithoutRefreshTokensInput>
connectOrCreate?: Prisma.UserCreateOrConnectWithoutRefreshTokensInput
upsert?: Prisma.UserUpsertWithoutRefreshTokensInput
connect?: Prisma.UserWhereUniqueInput
update?: Prisma.XOR<Prisma.XOR<Prisma.UserUpdateToOneWithWhereWithoutRefreshTokensInput, Prisma.UserUpdateWithoutRefreshTokensInput>, Prisma.UserUncheckedUpdateWithoutRefreshTokensInput>
}
export type UserCreateWithoutRoleInput = {
mobileNumber: string
password: string
@@ -529,6 +555,7 @@ export type UserCreateWithoutRoleInput = {
createdAt?: Date | string
deletedAt?: Date | string | null
updatedAt?: Date | string
refreshTokens?: Prisma.RefreshTokenCreateNestedManyWithoutUserInput
}
export type UserUncheckedCreateWithoutRoleInput = {
@@ -540,6 +567,7 @@ export type UserUncheckedCreateWithoutRoleInput = {
createdAt?: Date | string
deletedAt?: Date | string | null
updatedAt?: Date | string
refreshTokens?: Prisma.RefreshTokenUncheckedCreateNestedManyWithoutUserInput
}
export type UserCreateOrConnectWithoutRoleInput = {
@@ -583,6 +611,68 @@ export type UserScalarWhereInput = {
updatedAt?: Prisma.DateTimeFilter<"User"> | Date | string
}
export type UserCreateWithoutRefreshTokensInput = {
mobileNumber: string
password: string
firstName: string
lastName: string
createdAt?: Date | string
deletedAt?: Date | string | null
updatedAt?: Date | string
role: Prisma.RoleCreateNestedOneWithoutUsersInput
}
export type UserUncheckedCreateWithoutRefreshTokensInput = {
id?: number
mobileNumber: string
password: string
firstName: string
lastName: string
roleId: number
createdAt?: Date | string
deletedAt?: Date | string | null
updatedAt?: Date | string
}
export type UserCreateOrConnectWithoutRefreshTokensInput = {
where: Prisma.UserWhereUniqueInput
create: Prisma.XOR<Prisma.UserCreateWithoutRefreshTokensInput, Prisma.UserUncheckedCreateWithoutRefreshTokensInput>
}
export type UserUpsertWithoutRefreshTokensInput = {
update: Prisma.XOR<Prisma.UserUpdateWithoutRefreshTokensInput, Prisma.UserUncheckedUpdateWithoutRefreshTokensInput>
create: Prisma.XOR<Prisma.UserCreateWithoutRefreshTokensInput, Prisma.UserUncheckedCreateWithoutRefreshTokensInput>
where?: Prisma.UserWhereInput
}
export type UserUpdateToOneWithWhereWithoutRefreshTokensInput = {
where?: Prisma.UserWhereInput
data: Prisma.XOR<Prisma.UserUpdateWithoutRefreshTokensInput, Prisma.UserUncheckedUpdateWithoutRefreshTokensInput>
}
export type UserUpdateWithoutRefreshTokensInput = {
mobileNumber?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
firstName?: Prisma.StringFieldUpdateOperationsInput | string
lastName?: Prisma.StringFieldUpdateOperationsInput | string
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
role?: Prisma.RoleUpdateOneRequiredWithoutUsersNestedInput
}
export type UserUncheckedUpdateWithoutRefreshTokensInput = {
id?: Prisma.IntFieldUpdateOperationsInput | number
mobileNumber?: Prisma.StringFieldUpdateOperationsInput | string
password?: Prisma.StringFieldUpdateOperationsInput | string
firstName?: Prisma.StringFieldUpdateOperationsInput | string
lastName?: Prisma.StringFieldUpdateOperationsInput | string
roleId?: Prisma.IntFieldUpdateOperationsInput | number
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
}
export type UserCreateManyRoleInput = {
id?: number
mobileNumber: string
@@ -602,6 +692,7 @@ export type UserUpdateWithoutRoleInput = {
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
refreshTokens?: Prisma.RefreshTokenUpdateManyWithoutUserNestedInput
}
export type UserUncheckedUpdateWithoutRoleInput = {
@@ -613,6 +704,7 @@ export type UserUncheckedUpdateWithoutRoleInput = {
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
refreshTokens?: Prisma.RefreshTokenUncheckedUpdateManyWithoutUserNestedInput
}
export type UserUncheckedUpdateManyWithoutRoleInput = {
@@ -627,6 +719,35 @@ export type UserUncheckedUpdateManyWithoutRoleInput = {
}
/**
* Count Type UserCountOutputType
*/
export type UserCountOutputType = {
refreshTokens: number
}
export type UserCountOutputTypeSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
refreshTokens?: boolean | UserCountOutputTypeCountRefreshTokensArgs
}
/**
* UserCountOutputType without action
*/
export type UserCountOutputTypeDefaultArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the UserCountOutputType
*/
select?: Prisma.UserCountOutputTypeSelect<ExtArgs> | null
}
/**
* UserCountOutputType without action
*/
export type UserCountOutputTypeCountRefreshTokensArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
where?: Prisma.RefreshTokenWhereInput
}
export type UserSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
id?: boolean
@@ -639,6 +760,8 @@ export type UserSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = r
deletedAt?: boolean
updatedAt?: boolean
role?: boolean | Prisma.RoleDefaultArgs<ExtArgs>
refreshTokens?: boolean | Prisma.User$refreshTokensArgs<ExtArgs>
_count?: boolean | Prisma.UserCountOutputTypeDefaultArgs<ExtArgs>
}, ExtArgs["result"]["user"]>
@@ -658,12 +781,15 @@ export type UserSelectScalar = {
export type UserOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "mobileNumber" | "password" | "firstName" | "lastName" | "roleId" | "createdAt" | "deletedAt" | "updatedAt", ExtArgs["result"]["user"]>
export type UserInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
role?: boolean | Prisma.RoleDefaultArgs<ExtArgs>
refreshTokens?: boolean | Prisma.User$refreshTokensArgs<ExtArgs>
_count?: boolean | Prisma.UserCountOutputTypeDefaultArgs<ExtArgs>
}
export type $UserPayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
name: "User"
objects: {
role: Prisma.$RolePayload<ExtArgs>
refreshTokens: Prisma.$RefreshTokenPayload<ExtArgs>[]
}
scalars: runtime.Types.Extensions.GetPayloadResult<{
id: number
@@ -1016,6 +1142,7 @@ readonly fields: UserFieldRefs;
export interface Prisma__UserClient<T, Null = never, ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
readonly [Symbol.toStringTag]: "PrismaPromise"
role<T extends Prisma.RoleDefaultArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.RoleDefaultArgs<ExtArgs>>): Prisma.Prisma__RoleClient<runtime.Types.Result.GetResult<Prisma.$RolePayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
refreshTokens<T extends Prisma.User$refreshTokensArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.User$refreshTokensArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$RefreshTokenPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
/**
* Attaches callbacks for the resolution and/or rejection of the Promise.
* @param onfulfilled The callback to execute when the Promise is resolved.
@@ -1396,6 +1523,30 @@ export type UserDeleteManyArgs<ExtArgs extends runtime.Types.Extensions.Internal
limit?: number
}
/**
* User.refreshTokens
*/
export type User$refreshTokensArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
/**
* Select specific fields to fetch from the RefreshToken
*/
select?: Prisma.RefreshTokenSelect<ExtArgs> | null
/**
* Omit specific fields from the RefreshToken
*/
omit?: Prisma.RefreshTokenOmit<ExtArgs> | null
/**
* Choose, which related nodes to fetch as well
*/
include?: Prisma.RefreshTokenInclude<ExtArgs> | null
where?: Prisma.RefreshTokenWhereInput
orderBy?: Prisma.RefreshTokenOrderByWithRelationInput | Prisma.RefreshTokenOrderByWithRelationInput[]
cursor?: Prisma.RefreshTokenWhereUniqueInput
take?: number
skip?: number
distinct?: Prisma.RefreshTokenScalarFieldEnum | Prisma.RefreshTokenScalarFieldEnum[]
}
/**
* User without action
*/