Skip to content

Commit

Permalink
Merge pull request #48 from heseya/SK-922
Browse files Browse the repository at this point in the history
feat: added manufacturers endpoints and types
  • Loading branch information
KrystianEscolaSoft authored Nov 29, 2024
2 parents e59840b + 70cde21 commit 5a08db7
Show file tree
Hide file tree
Showing 8 changed files with 83 additions and 1 deletion.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@heseya/store-core",
"version": "7.1.0-beta.2",
"version": "7.1.0-beta.3",
"author": {
"name": "Heseya"
},
Expand Down
2 changes: 2 additions & 0 deletions src/consts/permissions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import {
LanguagesPermission,
SalesChannelsPermission,
RedirectsPermission,
ManufacturersPermission,
} from '../interfaces/Permissions'

export const PERMISSIONS_TREE = {
Expand Down Expand Up @@ -69,6 +70,7 @@ export const PERMISSIONS_TREE = {
Languages: LanguagesPermission,
SalesChannels: SalesChannelsPermission,
Redirects: RedirectsPermission,
Manufacturers: ManufacturersPermission,
}

export const ALL_PERMISSIONS: Permission[] = Object.values(PERMISSIONS_TREE)
Expand Down
22 changes: 22 additions & 0 deletions src/interfaces/Manufactures.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { Address } from './Address'
import { UUID } from './UUID'

export interface Manufacturer {
id: UUID
name?: string | null
first_name?: string | null
last_name?: string | null
email: string
address: Address
product_ids?: string[]
}

export type ManufacturerDto = Omit<Manufacturer, 'id'>

export interface ManufacturerListed {
id: UUID
name?: string | null
first_name?: string | null
last_name?: string | null
email: string
}
9 changes: 9 additions & 0 deletions src/interfaces/Permissions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,14 @@ export enum RedirectsPermission {
Remove = 'redirects.remove',
}

export enum ManufacturersPermission {
Show = 'manufacturers.show',
ShowDetails = 'manufacturers.show_details',
Add = 'manufacturers.add',
Edit = 'manufacturers.edit',
Remove = 'manufacturers.remove',
}

// -------------------------------------------------------------
// ? General type
// -------------------------------------------------------------
Expand Down Expand Up @@ -290,6 +298,7 @@ export type Permission =
| LanguagesPermission
| SalesChannelsPermission
| RedirectsPermission
| ManufacturersPermission

export interface PermissionEntry {
id: UUID
Expand Down
4 changes: 4 additions & 0 deletions src/interfaces/Product.ts
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,8 @@ export interface Product
quantity: number | null
descriptions: PageListed[]
banner: Omit<BannerMedia, 'published'> | null
manufacturer_id?: UUID
safety_information?: string
}

export interface ProductCreateDto
Expand Down Expand Up @@ -153,6 +155,8 @@ export interface ProductCreateDto
*/
purchase_limit_per_user?: null | number
banner?: Omit<BannerMediaCreateDto, 'published'> | null
manufacturer_id?: UUID
safety_information?: string
}

export type ProductUpdateDto = Partial<Omit<ProductCreateDto, keyof CreateMetadataFields | 'id'>> &
Expand Down
1 change: 1 addition & 0 deletions src/interfaces/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,4 @@ export * from './SalesChannel'
export * from './Redirect'
export * from './Response'
export * from './Email'
export * from './Manufactures'
2 changes: 2 additions & 0 deletions src/services/api/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import { createCurrenciesService } from './modules/currencies'
import { createSalesChannelsService } from './modules/salesChannels'
import { createRedirectsService } from './modules/redirects'
import { createEmailsService } from './modules/email'
import { createManufacturersService } from './modules/manufacturers'

/**
* Factory to create whole Heseya e-commerce API service
Expand Down Expand Up @@ -84,6 +85,7 @@ export const createHeseyaApiService = (axios: AxiosInstance) => {
SalesChannels: createSalesChannelsService(axios),
Redirects: createRedirectsService(axios),
Emails: createEmailsService(axios),
Manufacturers: createManufacturersService(axios),
}
}

Expand Down
42 changes: 42 additions & 0 deletions src/services/api/modules/manufacturers.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { CrudService, ServiceFactory } from '../types/Service'
import {
createDeleteRequest,
createGetListRequest,
createGetOneRequest,
createPatchRequest,
createPostRequest,
} from '../utils/requests'
import { createEntityMetadataService, EntityMetadataService } from './metadata'
import { MetadataParams, PaginationParams, SearchParam } from '../types/DefaultParams'
import { UUID } from '../../../interfaces/UUID'
import { Manufacturer, ManufacturerDto, ManufacturerListed } from '../../../interfaces'

interface ManufacturersListParams extends SearchParam, PaginationParams, MetadataParams {
search?: string
email?: string
name?: string
ids?: UUID[]
}

export type ManufacturersService = CrudService<
Manufacturer,
ManufacturerListed,
ManufacturerDto,
ManufacturerDto,
ManufacturersListParams
> &
EntityMetadataService

export const createManufacturersService: ServiceFactory<ManufacturersService> = (axios) => {
const route = 'manufacturers'
return {
get: createGetListRequest(axios, route),
getOne: createGetOneRequest(axios, route, { byId: true }),
getOneBySlug: createGetOneRequest(axios, route),
create: createPostRequest(axios, route),
update: createPatchRequest(axios, route),
delete: createDeleteRequest(axios, route),

...createEntityMetadataService(axios, route),
}
}

0 comments on commit 5a08db7

Please sign in to comment.