@newpeak/barista-cli 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/liberica/auth/index.d.ts.map +1 -1
- package/dist/commands/liberica/auth/index.js +5 -0
- package/dist/commands/liberica/auth/index.js.map +1 -1
- package/dist/commands/liberica/index.d.ts.map +1 -1
- package/dist/commands/liberica/index.js +8 -0
- package/dist/commands/liberica/index.js.map +1 -1
- package/dist/commands/liberica/materials/create.d.ts +3 -0
- package/dist/commands/liberica/materials/create.d.ts.map +1 -0
- package/dist/commands/liberica/materials/create.js +154 -0
- package/dist/commands/liberica/materials/create.js.map +1 -0
- package/dist/commands/liberica/materials/delete.d.ts +3 -0
- package/dist/commands/liberica/materials/delete.d.ts.map +1 -0
- package/dist/commands/liberica/materials/delete.js +104 -0
- package/dist/commands/liberica/materials/delete.js.map +1 -0
- package/dist/commands/liberica/materials/disable.d.ts +3 -0
- package/dist/commands/liberica/materials/disable.d.ts.map +1 -0
- package/dist/commands/liberica/materials/disable.js +146 -0
- package/dist/commands/liberica/materials/disable.js.map +1 -0
- package/dist/commands/liberica/materials/enable.d.ts +3 -0
- package/dist/commands/liberica/materials/enable.d.ts.map +1 -0
- package/dist/commands/liberica/materials/enable.js +126 -0
- package/dist/commands/liberica/materials/enable.js.map +1 -0
- package/dist/commands/liberica/materials/get.d.ts +3 -0
- package/dist/commands/liberica/materials/get.d.ts.map +1 -0
- package/dist/commands/liberica/materials/get.js +71 -0
- package/dist/commands/liberica/materials/get.js.map +1 -0
- package/dist/commands/liberica/materials/index.d.ts +3 -0
- package/dist/commands/liberica/materials/index.d.ts.map +1 -0
- package/dist/commands/liberica/materials/index.js +21 -0
- package/dist/commands/liberica/materials/index.js.map +1 -0
- package/dist/commands/liberica/materials/list.d.ts +3 -0
- package/dist/commands/liberica/materials/list.d.ts.map +1 -0
- package/dist/commands/liberica/materials/list.js +107 -0
- package/dist/commands/liberica/materials/list.js.map +1 -0
- package/dist/commands/liberica/materials/update.d.ts +3 -0
- package/dist/commands/liberica/materials/update.d.ts.map +1 -0
- package/dist/commands/liberica/materials/update.js +118 -0
- package/dist/commands/liberica/materials/update.js.map +1 -0
- package/dist/commands/liberica/suppliers/create.d.ts +3 -0
- package/dist/commands/liberica/suppliers/create.d.ts.map +1 -0
- package/dist/commands/liberica/suppliers/create.js +140 -0
- package/dist/commands/liberica/suppliers/create.js.map +1 -0
- package/dist/commands/liberica/suppliers/delete.d.ts +3 -0
- package/dist/commands/liberica/suppliers/delete.d.ts.map +1 -0
- package/dist/commands/liberica/suppliers/delete.js +102 -0
- package/dist/commands/liberica/suppliers/delete.js.map +1 -0
- package/dist/commands/liberica/suppliers/disable.d.ts +3 -0
- package/dist/commands/liberica/suppliers/disable.d.ts.map +1 -0
- package/dist/commands/liberica/suppliers/disable.js +144 -0
- package/dist/commands/liberica/suppliers/disable.js.map +1 -0
- package/dist/commands/liberica/suppliers/enable.d.ts +3 -0
- package/dist/commands/liberica/suppliers/enable.d.ts.map +1 -0
- package/dist/commands/liberica/suppliers/enable.js +124 -0
- package/dist/commands/liberica/suppliers/enable.js.map +1 -0
- package/dist/commands/liberica/suppliers/get.d.ts +3 -0
- package/dist/commands/liberica/suppliers/get.d.ts.map +1 -0
- package/dist/commands/liberica/suppliers/get.js +75 -0
- package/dist/commands/liberica/suppliers/get.js.map +1 -0
- package/dist/commands/liberica/suppliers/index.d.ts +3 -0
- package/dist/commands/liberica/suppliers/index.d.ts.map +1 -0
- package/dist/commands/liberica/suppliers/index.js +21 -0
- package/dist/commands/liberica/suppliers/index.js.map +1 -0
- package/dist/commands/liberica/suppliers/list.d.ts +3 -0
- package/dist/commands/liberica/suppliers/list.d.ts.map +1 -0
- package/dist/commands/liberica/suppliers/list.js +100 -0
- package/dist/commands/liberica/suppliers/list.js.map +1 -0
- package/dist/commands/liberica/suppliers/update.d.ts +3 -0
- package/dist/commands/liberica/suppliers/update.d.ts.map +1 -0
- package/dist/commands/liberica/suppliers/update.js +122 -0
- package/dist/commands/liberica/suppliers/update.js.map +1 -0
- package/dist/commands/liberica/uoms/create.d.ts +3 -0
- package/dist/commands/liberica/uoms/create.d.ts.map +1 -0
- package/dist/commands/liberica/uoms/create.js +120 -0
- package/dist/commands/liberica/uoms/create.js.map +1 -0
- package/dist/commands/liberica/uoms/delete.d.ts +3 -0
- package/dist/commands/liberica/uoms/delete.d.ts.map +1 -0
- package/dist/commands/liberica/uoms/delete.js +104 -0
- package/dist/commands/liberica/uoms/delete.js.map +1 -0
- package/dist/commands/liberica/uoms/disable.d.ts +3 -0
- package/dist/commands/liberica/uoms/disable.d.ts.map +1 -0
- package/dist/commands/liberica/uoms/disable.js +146 -0
- package/dist/commands/liberica/uoms/disable.js.map +1 -0
- package/dist/commands/liberica/uoms/enable.d.ts +3 -0
- package/dist/commands/liberica/uoms/enable.d.ts.map +1 -0
- package/dist/commands/liberica/uoms/enable.js +126 -0
- package/dist/commands/liberica/uoms/enable.js.map +1 -0
- package/dist/commands/liberica/uoms/get.d.ts +3 -0
- package/dist/commands/liberica/uoms/get.d.ts.map +1 -0
- package/dist/commands/liberica/uoms/get.js +71 -0
- package/dist/commands/liberica/uoms/get.js.map +1 -0
- package/dist/commands/liberica/uoms/index.d.ts +3 -0
- package/dist/commands/liberica/uoms/index.d.ts.map +1 -0
- package/dist/commands/liberica/uoms/index.js +21 -0
- package/dist/commands/liberica/uoms/index.js.map +1 -0
- package/dist/commands/liberica/uoms/list.d.ts +3 -0
- package/dist/commands/liberica/uoms/list.d.ts.map +1 -0
- package/dist/commands/liberica/uoms/list.js +98 -0
- package/dist/commands/liberica/uoms/list.js.map +1 -0
- package/dist/commands/liberica/uoms/update.d.ts +3 -0
- package/dist/commands/liberica/uoms/update.d.ts.map +1 -0
- package/dist/commands/liberica/uoms/update.js +115 -0
- package/dist/commands/liberica/uoms/update.js.map +1 -0
- package/dist/core/api/client.d.ts +24 -0
- package/dist/core/api/client.d.ts.map +1 -1
- package/dist/core/api/client.js +465 -0
- package/dist/core/api/client.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/types/index.d.ts +5 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/material.d.ts +49 -0
- package/dist/types/material.d.ts.map +1 -0
- package/dist/types/material.js +2 -0
- package/dist/types/material.js.map +1 -0
- package/dist/types/supplier.d.ts +53 -0
- package/dist/types/supplier.d.ts.map +1 -0
- package/dist/types/supplier.js +2 -0
- package/dist/types/supplier.js.map +1 -0
- package/dist/types/uom.d.ts +47 -0
- package/dist/types/uom.d.ts.map +1 -0
- package/dist/types/uom.js +2 -0
- package/dist/types/uom.js.map +1 -0
- package/docs/commands/liberica/materials-create.md +293 -0
- package/docs/commands/liberica/materials-delete.md +240 -0
- package/docs/commands/liberica/materials-disable.md +150 -0
- package/docs/commands/liberica/materials-enable.md +146 -0
- package/docs/commands/liberica/materials-get.md +188 -0
- package/docs/commands/liberica/materials-list.md +198 -0
- package/docs/commands/liberica/materials-update.md +250 -0
- package/docs/commands/liberica/uoms-create.md +136 -0
- package/docs/commands/liberica/uoms-delete.md +119 -0
- package/docs/commands/liberica/uoms-disable.md +117 -0
- package/docs/commands/liberica/uoms-enable.md +115 -0
- package/docs/commands/liberica/uoms-get.md +119 -0
- package/docs/commands/liberica/uoms-list.md +155 -0
- package/docs/commands/liberica/uoms-update.md +148 -0
- package/package.json +2 -4
- package/src/commands/liberica/auth/index.ts +6 -0
- package/src/commands/liberica/index.ts +8 -0
- package/src/commands/liberica/materials/create.ts +168 -0
- package/src/commands/liberica/materials/delete.ts +105 -0
- package/src/commands/liberica/materials/disable.ts +148 -0
- package/src/commands/liberica/materials/enable.ts +129 -0
- package/src/commands/liberica/materials/get.ts +83 -0
- package/src/commands/liberica/materials/index.ts +23 -0
- package/src/commands/liberica/materials/list.ts +142 -0
- package/src/commands/liberica/materials/update.ts +125 -0
- package/src/commands/liberica/suppliers/create.ts +149 -0
- package/src/commands/liberica/suppliers/delete.ts +102 -0
- package/src/commands/liberica/suppliers/disable.ts +145 -0
- package/src/commands/liberica/suppliers/enable.ts +126 -0
- package/src/commands/liberica/suppliers/get.ts +86 -0
- package/src/commands/liberica/suppliers/index.ts +23 -0
- package/src/commands/liberica/suppliers/list.ts +134 -0
- package/src/commands/liberica/suppliers/update.ts +128 -0
- package/src/commands/liberica/uoms/create.ts +134 -0
- package/src/commands/liberica/uoms/delete.ts +105 -0
- package/src/commands/liberica/uoms/disable.ts +148 -0
- package/src/commands/liberica/uoms/enable.ts +129 -0
- package/src/commands/liberica/uoms/get.ts +83 -0
- package/src/commands/liberica/uoms/index.ts +23 -0
- package/src/commands/liberica/uoms/list.ts +129 -0
- package/src/commands/liberica/uoms/update.ts +124 -0
- package/src/core/api/client.ts +585 -0
- package/src/index.ts +1 -1
- package/src/types/index.ts +5 -2
- package/src/types/material.ts +61 -0
- package/src/types/supplier.ts +66 -0
- package/src/types/uom.ts +60 -0
- package/bin/barista.js +0 -3
package/src/core/api/client.ts
CHANGED
|
@@ -20,8 +20,22 @@ import {
|
|
|
20
20
|
ClientQueryParams,
|
|
21
21
|
ClientApiResponse,
|
|
22
22
|
} from '../../types/client.js';
|
|
23
|
+
import {
|
|
24
|
+
CreateSupplierRequest,
|
|
25
|
+
UpdateSupplierRequest,
|
|
26
|
+
SupplierQueryParams,
|
|
27
|
+
SupplierApiResponse,
|
|
28
|
+
} from '../../types/supplier.js';
|
|
23
29
|
import { OrgListItem } from '../../types/org.js';
|
|
24
30
|
import { PositionListItem } from '../../types/position.js';
|
|
31
|
+
import {
|
|
32
|
+
CreateUomRequest,
|
|
33
|
+
UpdateUomRequest,
|
|
34
|
+
UomQueryParams,
|
|
35
|
+
UomApiResponse,
|
|
36
|
+
} from '../../types/uom.js';
|
|
37
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
38
|
+
import { ApiResponse, Material, MaterialApiResponse, MaterialQueryParams, MaterialRequest } from '../../types/material.js';
|
|
25
39
|
|
|
26
40
|
export interface LoginResponse {
|
|
27
41
|
token: string;
|
|
@@ -896,6 +910,460 @@ export const apiClient = {
|
|
|
896
910
|
}
|
|
897
911
|
},
|
|
898
912
|
|
|
913
|
+
async listSuppliers(
|
|
914
|
+
environment: Environment,
|
|
915
|
+
tenant: string,
|
|
916
|
+
params: SupplierQueryParams
|
|
917
|
+
): Promise<SupplierApiResponse> {
|
|
918
|
+
try {
|
|
919
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
920
|
+
if (!token) {
|
|
921
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
922
|
+
}
|
|
923
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
924
|
+
client.setAuthToken(token);
|
|
925
|
+
const queryString = new URLSearchParams();
|
|
926
|
+
if (params.pageNo !== undefined) queryString.append('pageNo', params.pageNo.toString());
|
|
927
|
+
if (params.pageSize) queryString.append('pageSize', params.pageSize.toString());
|
|
928
|
+
if (params.status) queryString.append('status', params.status.toString());
|
|
929
|
+
if (params.supplierCode) queryString.append('supplierCode', params.supplierCode);
|
|
930
|
+
if (params.supplierName) queryString.append('supplierName', params.supplierName);
|
|
931
|
+
const url = `/api/enterprise/purchases/supplier/page${queryString.toString() ? '?' + queryString.toString() : ''}`;
|
|
932
|
+
const response = await client.getClient().get<SupplierApiResponse>(url);
|
|
933
|
+
return response.data;
|
|
934
|
+
} catch (error) {
|
|
935
|
+
return handleApiErrorSupplier(error);
|
|
936
|
+
}
|
|
937
|
+
},
|
|
938
|
+
|
|
939
|
+
async getSupplier(
|
|
940
|
+
environment: Environment,
|
|
941
|
+
tenant: string,
|
|
942
|
+
supplierId: string
|
|
943
|
+
): Promise<SupplierApiResponse> {
|
|
944
|
+
try {
|
|
945
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
946
|
+
if (!token) {
|
|
947
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
948
|
+
}
|
|
949
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
950
|
+
client.setAuthToken(token);
|
|
951
|
+
const response = await client.getClient().get<SupplierApiResponse>(
|
|
952
|
+
`/api/enterprise/purchases/supplier/detail?supplierId=${supplierId}`
|
|
953
|
+
);
|
|
954
|
+
return response.data;
|
|
955
|
+
} catch (error) {
|
|
956
|
+
return handleApiErrorSupplier(error);
|
|
957
|
+
}
|
|
958
|
+
},
|
|
959
|
+
|
|
960
|
+
async getMaterial(
|
|
961
|
+
environment: Environment,
|
|
962
|
+
tenant: string,
|
|
963
|
+
materialId: string
|
|
964
|
+
): Promise<MaterialApiResponse> {
|
|
965
|
+
try {
|
|
966
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
967
|
+
if (!token) {
|
|
968
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
969
|
+
}
|
|
970
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
971
|
+
client.setAuthToken(token);
|
|
972
|
+
const response = await client.getClient().get<MaterialApiResponse>(
|
|
973
|
+
`/api/enterprise/sales/material/detail?materialId=${materialId}`
|
|
974
|
+
);
|
|
975
|
+
return response.data;
|
|
976
|
+
} catch (error) {
|
|
977
|
+
return handleApiErrorMaterial(error);
|
|
978
|
+
}
|
|
979
|
+
},
|
|
980
|
+
|
|
981
|
+
async listMaterials(
|
|
982
|
+
environment: Environment,
|
|
983
|
+
tenant: string,
|
|
984
|
+
params: MaterialQueryParams
|
|
985
|
+
): Promise<MaterialApiResponse> {
|
|
986
|
+
try {
|
|
987
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
988
|
+
if (!token) {
|
|
989
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
990
|
+
}
|
|
991
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
992
|
+
client.setAuthToken(token);
|
|
993
|
+
const queryString = new URLSearchParams();
|
|
994
|
+
if (params.pageNo !== undefined) queryString.append('pageNo', params.pageNo.toString());
|
|
995
|
+
if (params.pageSize) queryString.append('pageSize', params.pageSize.toString());
|
|
996
|
+
if (params.statusFlag) queryString.append('statusFlag', params.statusFlag.toString());
|
|
997
|
+
if (params.materialClass) queryString.append('materialClass', params.materialClass);
|
|
998
|
+
if (params.keyword) queryString.append('keyword', params.keyword);
|
|
999
|
+
const url = `/api/enterprise/sales/material/page${queryString.toString() ? '?' + queryString.toString() : ''}`;
|
|
1000
|
+
const response = await client.getClient().get<MaterialApiResponse>(url);
|
|
1001
|
+
return response.data;
|
|
1002
|
+
} catch (error) {
|
|
1003
|
+
return handleApiErrorMaterial(error);
|
|
1004
|
+
}
|
|
1005
|
+
},
|
|
1006
|
+
|
|
1007
|
+
async deleteMaterial(
|
|
1008
|
+
environment: Environment,
|
|
1009
|
+
tenant: string,
|
|
1010
|
+
materialId: string
|
|
1011
|
+
): Promise<ApiResponse<void>> {
|
|
1012
|
+
try {
|
|
1013
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1014
|
+
if (!token) {
|
|
1015
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1016
|
+
}
|
|
1017
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1018
|
+
client.setAuthToken(token);
|
|
1019
|
+
const response = await client.getClient().post<ApiResponse<void>>(
|
|
1020
|
+
'/api/enterprise/sales/material/delete',
|
|
1021
|
+
{ materialId: materialId }
|
|
1022
|
+
);
|
|
1023
|
+
return response.data;
|
|
1024
|
+
} catch (error) {
|
|
1025
|
+
return handleApiErrorMaterial(error) as unknown as ApiResponse<void>;
|
|
1026
|
+
}
|
|
1027
|
+
},
|
|
1028
|
+
|
|
1029
|
+
async createSupplier(
|
|
1030
|
+
environment: Environment,
|
|
1031
|
+
tenant: string,
|
|
1032
|
+
data: CreateSupplierRequest
|
|
1033
|
+
): Promise<SupplierApiResponse> {
|
|
1034
|
+
try {
|
|
1035
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1036
|
+
if (!token) {
|
|
1037
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1038
|
+
}
|
|
1039
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1040
|
+
client.setAuthToken(token);
|
|
1041
|
+
const response = await client.getClient().post<SupplierApiResponse>('/api/enterprise/purchases/supplier/add', data);
|
|
1042
|
+
return response.data;
|
|
1043
|
+
} catch (error) {
|
|
1044
|
+
return handleApiErrorSupplier(error);
|
|
1045
|
+
}
|
|
1046
|
+
},
|
|
1047
|
+
|
|
1048
|
+
async updateSupplier(
|
|
1049
|
+
environment: Environment,
|
|
1050
|
+
tenant: string,
|
|
1051
|
+
data: UpdateSupplierRequest
|
|
1052
|
+
): Promise<SupplierApiResponse> {
|
|
1053
|
+
try {
|
|
1054
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1055
|
+
if (!token) {
|
|
1056
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1057
|
+
}
|
|
1058
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1059
|
+
client.setAuthToken(token);
|
|
1060
|
+
const response = await client.getClient().post<SupplierApiResponse>('/api/enterprise/purchases/supplier/edit', data);
|
|
1061
|
+
return response.data;
|
|
1062
|
+
} catch (error) {
|
|
1063
|
+
return handleApiErrorSupplier(error);
|
|
1064
|
+
}
|
|
1065
|
+
},
|
|
1066
|
+
|
|
1067
|
+
async deleteSupplier(
|
|
1068
|
+
environment: Environment,
|
|
1069
|
+
tenant: string,
|
|
1070
|
+
supplierId: string
|
|
1071
|
+
): Promise<SupplierApiResponse> {
|
|
1072
|
+
try {
|
|
1073
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1074
|
+
if (!token) {
|
|
1075
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1076
|
+
}
|
|
1077
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1078
|
+
client.setAuthToken(token);
|
|
1079
|
+
const response = await client.getClient().post<SupplierApiResponse>(
|
|
1080
|
+
'/api/enterprise/purchases/supplier/delete',
|
|
1081
|
+
{ supplierId }
|
|
1082
|
+
);
|
|
1083
|
+
return response.data;
|
|
1084
|
+
} catch (error) {
|
|
1085
|
+
return handleApiErrorSupplier(error);
|
|
1086
|
+
}
|
|
1087
|
+
},
|
|
1088
|
+
|
|
1089
|
+
async enableSupplier(
|
|
1090
|
+
environment: Environment,
|
|
1091
|
+
tenant: string,
|
|
1092
|
+
supplierId: string
|
|
1093
|
+
): Promise<SupplierApiResponse> {
|
|
1094
|
+
try {
|
|
1095
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1096
|
+
if (!token) {
|
|
1097
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1098
|
+
}
|
|
1099
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1100
|
+
client.setAuthToken(token);
|
|
1101
|
+
const response = await client.getClient().post<SupplierApiResponse>(
|
|
1102
|
+
'/api/enterprise/purchases/supplier/batchActive',
|
|
1103
|
+
{ supplierIdList: [supplierId] }
|
|
1104
|
+
);
|
|
1105
|
+
return response.data;
|
|
1106
|
+
} catch (error) {
|
|
1107
|
+
return handleApiErrorSupplier(error);
|
|
1108
|
+
}
|
|
1109
|
+
},
|
|
1110
|
+
|
|
1111
|
+
async disableSupplier(
|
|
1112
|
+
environment: Environment,
|
|
1113
|
+
tenant: string,
|
|
1114
|
+
supplierId: string
|
|
1115
|
+
): Promise<SupplierApiResponse> {
|
|
1116
|
+
try {
|
|
1117
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1118
|
+
if (!token) {
|
|
1119
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1120
|
+
}
|
|
1121
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1122
|
+
client.setAuthToken(token);
|
|
1123
|
+
const response = await client.getClient().post<SupplierApiResponse>(
|
|
1124
|
+
'/api/enterprise/purchases/supplier/batchDeActive',
|
|
1125
|
+
{ supplierIdList: [supplierId] }
|
|
1126
|
+
);
|
|
1127
|
+
return response.data;
|
|
1128
|
+
} catch (error) {
|
|
1129
|
+
return handleApiErrorSupplier(error);
|
|
1130
|
+
}
|
|
1131
|
+
},
|
|
1132
|
+
|
|
1133
|
+
async createMaterial(
|
|
1134
|
+
environment: Environment,
|
|
1135
|
+
tenant: string,
|
|
1136
|
+
data: MaterialRequest
|
|
1137
|
+
): Promise<MaterialApiResponse> {
|
|
1138
|
+
try {
|
|
1139
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1140
|
+
if (!token) {
|
|
1141
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1142
|
+
}
|
|
1143
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1144
|
+
client.setAuthToken(token);
|
|
1145
|
+
const response = await client.getClient().post<MaterialApiResponse>('/api/enterprise/sales/material/add', data);
|
|
1146
|
+
return response.data;
|
|
1147
|
+
} catch (error) {
|
|
1148
|
+
return handleApiErrorMaterial(error);
|
|
1149
|
+
}
|
|
1150
|
+
},
|
|
1151
|
+
|
|
1152
|
+
async updateMaterial(
|
|
1153
|
+
environment: Environment,
|
|
1154
|
+
tenant: string,
|
|
1155
|
+
materialId: string,
|
|
1156
|
+
data: MaterialRequest
|
|
1157
|
+
): Promise<MaterialApiResponse> {
|
|
1158
|
+
try {
|
|
1159
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1160
|
+
if (!token) {
|
|
1161
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1162
|
+
}
|
|
1163
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1164
|
+
client.setAuthToken(token);
|
|
1165
|
+
const response = await client.getClient().post<MaterialApiResponse>('/api/enterprise/sales/material/edit', { materialId, ...data });
|
|
1166
|
+
return response.data;
|
|
1167
|
+
} catch (error) {
|
|
1168
|
+
return handleApiErrorMaterial(error);
|
|
1169
|
+
}
|
|
1170
|
+
},
|
|
1171
|
+
|
|
1172
|
+
async disableMaterial(
|
|
1173
|
+
environment: Environment,
|
|
1174
|
+
tenant: string,
|
|
1175
|
+
materialId: string
|
|
1176
|
+
): Promise<MaterialApiResponse> {
|
|
1177
|
+
try {
|
|
1178
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1179
|
+
if (!token) {
|
|
1180
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1181
|
+
}
|
|
1182
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1183
|
+
client.setAuthToken(token);
|
|
1184
|
+
const response = await client.getClient().post<MaterialApiResponse>(
|
|
1185
|
+
'/api/enterprise/sales/material/batchDeActive',
|
|
1186
|
+
{ materialIdList: [materialId] }
|
|
1187
|
+
);
|
|
1188
|
+
return response.data;
|
|
1189
|
+
} catch (error) {
|
|
1190
|
+
return handleApiErrorMaterial(error);
|
|
1191
|
+
}
|
|
1192
|
+
},
|
|
1193
|
+
|
|
1194
|
+
async enableMaterial(
|
|
1195
|
+
environment: Environment,
|
|
1196
|
+
tenant: string,
|
|
1197
|
+
materialId: string
|
|
1198
|
+
): Promise<MaterialApiResponse> {
|
|
1199
|
+
try {
|
|
1200
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1201
|
+
if (!token) {
|
|
1202
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1203
|
+
}
|
|
1204
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1205
|
+
client.setAuthToken(token);
|
|
1206
|
+
const response = await client.getClient().post<MaterialApiResponse>(
|
|
1207
|
+
'/api/enterprise/sales/material/batchActive',
|
|
1208
|
+
{ materialIdList: [materialId] }
|
|
1209
|
+
);
|
|
1210
|
+
return response.data;
|
|
1211
|
+
} catch (error) {
|
|
1212
|
+
return handleApiErrorMaterial(error);
|
|
1213
|
+
}
|
|
1214
|
+
},
|
|
1215
|
+
|
|
1216
|
+
async listUoms(
|
|
1217
|
+
environment: Environment,
|
|
1218
|
+
tenant: string,
|
|
1219
|
+
params: UomQueryParams
|
|
1220
|
+
): Promise<UomApiResponse> {
|
|
1221
|
+
try {
|
|
1222
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1223
|
+
if (!token) {
|
|
1224
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1225
|
+
}
|
|
1226
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1227
|
+
client.setAuthToken(token);
|
|
1228
|
+
const queryString = new URLSearchParams();
|
|
1229
|
+
if (params.pageNo !== undefined) queryString.append('pageNo', params.pageNo.toString());
|
|
1230
|
+
if (params.pageSize) queryString.append('pageSize', params.pageSize.toString());
|
|
1231
|
+
if (params.status) queryString.append('status', params.status.toString());
|
|
1232
|
+
if (params.uomCode) queryString.append('uomCode', params.uomCode);
|
|
1233
|
+
if (params.uomName) queryString.append('uomName', params.uomName);
|
|
1234
|
+
const url = `/api/enterprise/sales/uom/page${queryString.toString() ? '?' + queryString.toString() : ''}`;
|
|
1235
|
+
const response = await client.getClient().get<UomApiResponse>(url);
|
|
1236
|
+
return response.data;
|
|
1237
|
+
} catch (error) {
|
|
1238
|
+
return handleApiErrorUom(error);
|
|
1239
|
+
}
|
|
1240
|
+
},
|
|
1241
|
+
|
|
1242
|
+
async getUom(
|
|
1243
|
+
environment: Environment,
|
|
1244
|
+
tenant: string,
|
|
1245
|
+
uomId: string
|
|
1246
|
+
): Promise<UomApiResponse> {
|
|
1247
|
+
try {
|
|
1248
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1249
|
+
if (!token) {
|
|
1250
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1251
|
+
}
|
|
1252
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1253
|
+
client.setAuthToken(token);
|
|
1254
|
+
const response = await client.getClient().get<UomApiResponse>(
|
|
1255
|
+
`/api/enterprise/sales/uom/detail?uomId=${uomId}`
|
|
1256
|
+
);
|
|
1257
|
+
return response.data;
|
|
1258
|
+
} catch (error) {
|
|
1259
|
+
return handleApiErrorUom(error);
|
|
1260
|
+
}
|
|
1261
|
+
},
|
|
1262
|
+
|
|
1263
|
+
async createUom(
|
|
1264
|
+
environment: Environment,
|
|
1265
|
+
tenant: string,
|
|
1266
|
+
data: CreateUomRequest
|
|
1267
|
+
): Promise<UomApiResponse> {
|
|
1268
|
+
try {
|
|
1269
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1270
|
+
if (!token) {
|
|
1271
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1272
|
+
}
|
|
1273
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1274
|
+
client.setAuthToken(token);
|
|
1275
|
+
const response = await client.getClient().post<UomApiResponse>('/api/enterprise/sales/uom/add', data);
|
|
1276
|
+
return response.data;
|
|
1277
|
+
} catch (error) {
|
|
1278
|
+
return handleApiErrorUom(error);
|
|
1279
|
+
}
|
|
1280
|
+
},
|
|
1281
|
+
|
|
1282
|
+
async updateUom(
|
|
1283
|
+
environment: Environment,
|
|
1284
|
+
tenant: string,
|
|
1285
|
+
data: UpdateUomRequest
|
|
1286
|
+
): Promise<UomApiResponse> {
|
|
1287
|
+
try {
|
|
1288
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1289
|
+
if (!token) {
|
|
1290
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1291
|
+
}
|
|
1292
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1293
|
+
client.setAuthToken(token);
|
|
1294
|
+
const response = await client.getClient().post<UomApiResponse>('/api/enterprise/sales/uom/edit', data);
|
|
1295
|
+
return response.data;
|
|
1296
|
+
} catch (error) {
|
|
1297
|
+
return handleApiErrorUom(error);
|
|
1298
|
+
}
|
|
1299
|
+
},
|
|
1300
|
+
|
|
1301
|
+
async deleteUom(
|
|
1302
|
+
environment: Environment,
|
|
1303
|
+
tenant: string,
|
|
1304
|
+
uomId: string
|
|
1305
|
+
): Promise<UomApiResponse> {
|
|
1306
|
+
try {
|
|
1307
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1308
|
+
if (!token) {
|
|
1309
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1310
|
+
}
|
|
1311
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1312
|
+
client.setAuthToken(token);
|
|
1313
|
+
const response = await client.getClient().post<UomApiResponse>(
|
|
1314
|
+
'/api/enterprise/sales/uom/delete',
|
|
1315
|
+
{ uomId }
|
|
1316
|
+
);
|
|
1317
|
+
return response.data;
|
|
1318
|
+
} catch (error) {
|
|
1319
|
+
return handleApiErrorUom(error);
|
|
1320
|
+
}
|
|
1321
|
+
},
|
|
1322
|
+
|
|
1323
|
+
async enableUom(
|
|
1324
|
+
environment: Environment,
|
|
1325
|
+
tenant: string,
|
|
1326
|
+
uomId: string
|
|
1327
|
+
): Promise<UomApiResponse> {
|
|
1328
|
+
try {
|
|
1329
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1330
|
+
if (!token) {
|
|
1331
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1332
|
+
}
|
|
1333
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1334
|
+
client.setAuthToken(token);
|
|
1335
|
+
const response = await client.getClient().post<UomApiResponse>(
|
|
1336
|
+
'/api/enterprise/sales/uom/batchActive',
|
|
1337
|
+
{ uomIdList: [uomId] }
|
|
1338
|
+
);
|
|
1339
|
+
return response.data;
|
|
1340
|
+
} catch (error) {
|
|
1341
|
+
return handleApiErrorUom(error);
|
|
1342
|
+
}
|
|
1343
|
+
},
|
|
1344
|
+
|
|
1345
|
+
async disableUom(
|
|
1346
|
+
environment: Environment,
|
|
1347
|
+
tenant: string,
|
|
1348
|
+
uomId: string
|
|
1349
|
+
): Promise<UomApiResponse> {
|
|
1350
|
+
try {
|
|
1351
|
+
const token = await tokenManager.getToken({ service: 'liberica', environment, tenant });
|
|
1352
|
+
if (!token) {
|
|
1353
|
+
return { success: false, error: { code: 'NO_TOKEN', message: 'Not logged in. Run: barista auth login --service liberica --env ' + environment } };
|
|
1354
|
+
}
|
|
1355
|
+
const client = createAPIClient('liberica' as Service, environment, tenant);
|
|
1356
|
+
client.setAuthToken(token);
|
|
1357
|
+
const response = await client.getClient().post<UomApiResponse>(
|
|
1358
|
+
'/api/enterprise/sales/uom/batchDeActive',
|
|
1359
|
+
{ uomIdList: [uomId] }
|
|
1360
|
+
);
|
|
1361
|
+
return response.data;
|
|
1362
|
+
} catch (error) {
|
|
1363
|
+
return handleApiErrorUom(error);
|
|
1364
|
+
}
|
|
1365
|
+
},
|
|
1366
|
+
|
|
899
1367
|
};
|
|
900
1368
|
|
|
901
1369
|
function handleApiError(error: unknown): EmployeeApiResponse {
|
|
@@ -974,4 +1442,121 @@ function handleApiErrorClient(error: unknown): ClientApiResponse {
|
|
|
974
1442
|
message: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
975
1443
|
},
|
|
976
1444
|
};
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
function handleApiErrorSupplier(error: unknown): SupplierApiResponse {
|
|
1448
|
+
if (axios.isAxiosError(error)) {
|
|
1449
|
+
const axiosError = error as AxiosError<Record<string, unknown>>;
|
|
1450
|
+
const responseData = axiosError.response?.data;
|
|
1451
|
+
if (responseData) {
|
|
1452
|
+
const success = responseData.success as boolean | undefined;
|
|
1453
|
+
if (success === false) {
|
|
1454
|
+
const code = responseData.code as string | undefined;
|
|
1455
|
+
const message = responseData.message as string | undefined;
|
|
1456
|
+
const errorObj = responseData.error as { code?: string; message?: string } | undefined;
|
|
1457
|
+
if (!errorObj && (code || message)) {
|
|
1458
|
+
return {
|
|
1459
|
+
success: false,
|
|
1460
|
+
error: {
|
|
1461
|
+
code: code || 'API_ERROR',
|
|
1462
|
+
message: message || 'API error occurred',
|
|
1463
|
+
},
|
|
1464
|
+
};
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
return responseData as unknown as SupplierApiResponse;
|
|
1468
|
+
}
|
|
1469
|
+
return {
|
|
1470
|
+
success: false,
|
|
1471
|
+
error: {
|
|
1472
|
+
code: 'NETWORK_ERROR',
|
|
1473
|
+
message: axiosError.message || 'Network error occurred',
|
|
1474
|
+
},
|
|
1475
|
+
};
|
|
1476
|
+
}
|
|
1477
|
+
return {
|
|
1478
|
+
success: false,
|
|
1479
|
+
error: {
|
|
1480
|
+
code: 'UNKNOWN_ERROR',
|
|
1481
|
+
message: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
1482
|
+
},
|
|
1483
|
+
};
|
|
1484
|
+
}
|
|
1485
|
+
|
|
1486
|
+
function handleApiErrorMaterial(error: unknown): MaterialApiResponse {
|
|
1487
|
+
if (axios.isAxiosError(error)) {
|
|
1488
|
+
const axiosError = error as AxiosError<Record<string, unknown>>;
|
|
1489
|
+
const responseData = axiosError.response?.data;
|
|
1490
|
+
if (responseData) {
|
|
1491
|
+
const success = responseData.success as boolean | undefined;
|
|
1492
|
+
if (success === false) {
|
|
1493
|
+
const code = responseData.code as string | undefined;
|
|
1494
|
+
const message = responseData.message as string | undefined;
|
|
1495
|
+
const errorObj = responseData.error as { code?: string; message?: string } | undefined;
|
|
1496
|
+
if (!errorObj && (code || message)) {
|
|
1497
|
+
return {
|
|
1498
|
+
success: false,
|
|
1499
|
+
error: {
|
|
1500
|
+
code: code || 'API_ERROR',
|
|
1501
|
+
message: message || 'API error occurred',
|
|
1502
|
+
},
|
|
1503
|
+
};
|
|
1504
|
+
}
|
|
1505
|
+
}
|
|
1506
|
+
return responseData as unknown as MaterialApiResponse;
|
|
1507
|
+
}
|
|
1508
|
+
return {
|
|
1509
|
+
success: false,
|
|
1510
|
+
error: {
|
|
1511
|
+
code: 'NETWORK_ERROR',
|
|
1512
|
+
message: axiosError.message || 'Network error occurred',
|
|
1513
|
+
},
|
|
1514
|
+
};
|
|
1515
|
+
}
|
|
1516
|
+
return {
|
|
1517
|
+
success: false,
|
|
1518
|
+
error: {
|
|
1519
|
+
code: 'UNKNOWN_ERROR',
|
|
1520
|
+
message: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
1521
|
+
},
|
|
1522
|
+
};
|
|
1523
|
+
}
|
|
1524
|
+
|
|
1525
|
+
function handleApiErrorUom(error: unknown): UomApiResponse {
|
|
1526
|
+
if (axios.isAxiosError(error)) {
|
|
1527
|
+
const axiosError = error as AxiosError<Record<string, unknown>>;
|
|
1528
|
+
const responseData = axiosError.response?.data;
|
|
1529
|
+
if (responseData) {
|
|
1530
|
+
const success = responseData.success as boolean | undefined;
|
|
1531
|
+
if (success === false) {
|
|
1532
|
+
const code = responseData.code as string | undefined;
|
|
1533
|
+
const message = responseData.message as string | undefined;
|
|
1534
|
+
const errorObj = responseData.error as { code?: string; message?: string } | undefined;
|
|
1535
|
+
if (!errorObj && (code || message)) {
|
|
1536
|
+
return {
|
|
1537
|
+
success: false,
|
|
1538
|
+
error: {
|
|
1539
|
+
code: code || 'API_ERROR',
|
|
1540
|
+
message: message || 'API error occurred',
|
|
1541
|
+
},
|
|
1542
|
+
};
|
|
1543
|
+
}
|
|
1544
|
+
}
|
|
1545
|
+
return responseData as unknown as UomApiResponse;
|
|
1546
|
+
}
|
|
1547
|
+
return {
|
|
1548
|
+
success: false,
|
|
1549
|
+
error: {
|
|
1550
|
+
code: 'NETWORK_ERROR',
|
|
1551
|
+
message: axiosError.message || 'Network error occurred',
|
|
1552
|
+
},
|
|
1553
|
+
};
|
|
1554
|
+
}
|
|
1555
|
+
return {
|
|
1556
|
+
success: false,
|
|
1557
|
+
error: {
|
|
1558
|
+
code: 'UNKNOWN_ERROR',
|
|
1559
|
+
message: error instanceof Error ? error.message : 'Unknown error occurred',
|
|
1560
|
+
},
|
|
1561
|
+
};
|
|
977
1562
|
}
|
package/src/index.ts
CHANGED
|
@@ -15,7 +15,7 @@ async function main(): Promise<void> {
|
|
|
15
15
|
program
|
|
16
16
|
.name('barista')
|
|
17
17
|
.description('Barista CLI - Bridge between AI agents and Liberica/Arabica')
|
|
18
|
-
.version('0.1.
|
|
18
|
+
.version('0.1.5')
|
|
19
19
|
.option('-e, --env <environment>', 'Target environment (dev|test|prod-cn|prod-jp)')
|
|
20
20
|
.option('-t, --tenant <tenant>', 'Target tenant (for Liberica)')
|
|
21
21
|
.option('--dry-run', 'Execute in dry-run mode')
|
package/src/types/index.ts
CHANGED
|
@@ -73,6 +73,9 @@ export interface TokenContext {
|
|
|
73
73
|
export * from './employee.js';
|
|
74
74
|
export * from './org.js';
|
|
75
75
|
export * from './position.js';
|
|
76
|
-
|
|
77
|
-
export type {
|
|
76
|
+
export type { Uom, CreateUomRequest, UpdateUomRequest, UomQueryParams, UomListResponse, UomApiResponse, UomStatusFlag } from './uom.js';
|
|
77
|
+
export type { Supplier, SupplierListResponse, SupplierQueryParams, SupplierApiResponse } from './supplier.js';
|
|
78
|
+
export type { CreateSupplierRequest, UpdateSupplierRequest } from './supplier.js';
|
|
79
|
+
export type { ClientListResponse, MasterClientCompactResponse, ClientQueryParams, ClientApiResponse } from './client.js';
|
|
78
80
|
export type { MasterClientResponse, CreateClientRequest, UpdateClientRequest } from './client.js';
|
|
81
|
+
export type { ApiResponse, Material, MaterialRequest, MaterialQueryParams, MaterialListResponse, MaterialApiResponse, MaterialStatusFlag } from './material.js';
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Material status flag literal type (1=enable, 2=disable)
|
|
2
|
+
export type MaterialStatusFlag = 1 | 2;
|
|
3
|
+
|
|
4
|
+
// Full Material entity
|
|
5
|
+
export interface Material {
|
|
6
|
+
materialId: string;
|
|
7
|
+
materialCode: string;
|
|
8
|
+
materialNo: string;
|
|
9
|
+
materialName: string;
|
|
10
|
+
materialClass?: string;
|
|
11
|
+
statusFlag: MaterialStatusFlag;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// Request for creating/updating material
|
|
15
|
+
export interface MaterialRequest {
|
|
16
|
+
materialName: string;
|
|
17
|
+
materialClass: string;
|
|
18
|
+
materialType?: string;
|
|
19
|
+
materialUnit?: string;
|
|
20
|
+
materialCode?: string;
|
|
21
|
+
materialNo?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// Query params for list/pagination
|
|
25
|
+
export interface MaterialQueryParams {
|
|
26
|
+
pageNo?: number;
|
|
27
|
+
pageSize?: number;
|
|
28
|
+
statusFlag?: MaterialStatusFlag;
|
|
29
|
+
materialClass?: string;
|
|
30
|
+
keyword?: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Paginated response wrapper (PageResult from Roses framework)
|
|
34
|
+
export interface MaterialListResponse {
|
|
35
|
+
totalRows: number;
|
|
36
|
+
pageSize: number;
|
|
37
|
+
pageNo: number;
|
|
38
|
+
rows: Material[];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Generic API response wrapper
|
|
42
|
+
export interface ApiResponse<T> {
|
|
43
|
+
success: boolean;
|
|
44
|
+
code?: string;
|
|
45
|
+
message?: string;
|
|
46
|
+
data?: T;
|
|
47
|
+
error?: {
|
|
48
|
+
code: string;
|
|
49
|
+
message: string;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// API response wrapper
|
|
54
|
+
export interface MaterialApiResponse {
|
|
55
|
+
success: boolean;
|
|
56
|
+
data?: Material | MaterialListResponse;
|
|
57
|
+
error?: {
|
|
58
|
+
code: string;
|
|
59
|
+
message: string;
|
|
60
|
+
};
|
|
61
|
+
}
|