autosync_backend2 1.0.79 → 1.0.80

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/index.d.ts CHANGED
@@ -32,11 +32,77 @@ declare const app: Elysia<"", {
32
32
  }, {
33
33
  typebox: {
34
34
  Import: <Key extends never>(key: Key, options?: import("@sinclair/typebox").SchemaOptions) => import("@sinclair/typebox").TImport<{}, Key>;
35
+ readonly select: import("@sinclair/typebox").TObject<{
36
+ createdAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
37
+ createdUserId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
38
+ inventory: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
39
+ type: import("@sinclair/typebox").TOptional<import("elysia/dist/type-system/types").TUnionEnum<["Сэлбэг", "Тос", "Дугуй", "Будаг", "Аккумлятор"]>>;
40
+ search: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
41
+ branchId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
42
+ sellPrice: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
43
+ supplierId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
44
+ safetyStock: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
45
+ alias: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
46
+ shelfNumber: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
47
+ pagination: import("@sinclair/typebox").TObject<{
48
+ page: import("@sinclair/typebox").TInteger;
49
+ size: import("@sinclair/typebox").TInteger;
50
+ }>;
51
+ }>>;
52
+ pagination: import("@sinclair/typebox").TObject<{
53
+ page: import("@sinclair/typebox").TInteger;
54
+ size: import("@sinclair/typebox").TInteger;
55
+ }>;
56
+ }>;
57
+ readonly create: import("@sinclair/typebox").TObject<{
58
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
59
+ quantity: import("@sinclair/typebox").TNumber;
60
+ itemId: import("@sinclair/typebox").TString;
61
+ requestId: import("@sinclair/typebox").TString;
62
+ }>>;
63
+ to: import("@sinclair/typebox").TString;
64
+ }>;
65
+ readonly approve: import("@sinclair/typebox").TObject<{
66
+ id: import("@sinclair/typebox").TString;
67
+ }>;
35
68
  };
36
69
  error: {};
37
70
  } | {
38
71
  typebox: {
39
72
  Import: <Key extends never>(key: Key, options?: import("@sinclair/typebox").SchemaOptions) => import("@sinclair/typebox").TImport<{}, Key>;
73
+ readonly select: import("@sinclair/typebox").TObject<{
74
+ createdAt: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
75
+ createdUserId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
76
+ inventory: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
77
+ type: import("@sinclair/typebox").TOptional<import("elysia/dist/type-system/types").TUnionEnum<["Сэлбэг", "Тос", "Дугуй", "Будаг", "Аккумлятор"]>>;
78
+ search: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
79
+ branchId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
80
+ sellPrice: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
81
+ supplierId: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
82
+ safetyStock: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
83
+ alias: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
84
+ shelfNumber: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
85
+ pagination: import("@sinclair/typebox").TObject<{
86
+ page: import("@sinclair/typebox").TInteger;
87
+ size: import("@sinclair/typebox").TInteger;
88
+ }>;
89
+ }>>;
90
+ pagination: import("@sinclair/typebox").TObject<{
91
+ page: import("@sinclair/typebox").TInteger;
92
+ size: import("@sinclair/typebox").TInteger;
93
+ }>;
94
+ }>;
95
+ readonly create: import("@sinclair/typebox").TObject<{
96
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
97
+ quantity: import("@sinclair/typebox").TNumber;
98
+ itemId: import("@sinclair/typebox").TString;
99
+ requestId: import("@sinclair/typebox").TString;
100
+ }>>;
101
+ to: import("@sinclair/typebox").TString;
102
+ }>;
103
+ readonly approve: import("@sinclair/typebox").TObject<{
104
+ id: import("@sinclair/typebox").TString;
105
+ }>;
40
106
  };
41
107
  error: {};
42
108
  }, {
@@ -1809,6 +1875,133 @@ declare const app: Elysia<"", {
1809
1875
  };
1810
1876
  };
1811
1877
  };
1878
+ } & {
1879
+ inventory: {
1880
+ tranfer: {};
1881
+ } & {
1882
+ tranfer: {
1883
+ get: {
1884
+ body: unknown;
1885
+ params: {};
1886
+ query: {
1887
+ createdAt?: string | undefined;
1888
+ inventory?: {
1889
+ type?: "Сэлбэг" | "Тос" | "Дугуй" | "Будаг" | "Аккумлятор" | undefined;
1890
+ search?: string | undefined;
1891
+ branchId?: string | undefined;
1892
+ sellPrice?: number | undefined;
1893
+ supplierId?: string | undefined;
1894
+ safetyStock?: number | undefined;
1895
+ alias?: string | undefined;
1896
+ shelfNumber?: string | undefined;
1897
+ pagination: {
1898
+ size: number;
1899
+ page: number;
1900
+ };
1901
+ } | undefined;
1902
+ createdUserId?: string | undefined;
1903
+ pagination: {
1904
+ size: number;
1905
+ page: number;
1906
+ };
1907
+ };
1908
+ headers: unknown;
1909
+ response: {
1910
+ 200: {
1911
+ totalCount: number;
1912
+ totalPage: number;
1913
+ result: {
1914
+ status: "Зөвшөөрөгдсөн" | "Цуцлагдсан" | "Хүлээгдэж буй";
1915
+ createdUserId: string;
1916
+ branchId: string;
1917
+ merchantId: string;
1918
+ to: string;
1919
+ id: string;
1920
+ createdAt: string;
1921
+ updatedAt: string;
1922
+ deletedAt: string | null;
1923
+ }[];
1924
+ };
1925
+ 422: {
1926
+ type: "validation";
1927
+ on: string;
1928
+ summary?: string;
1929
+ message?: string;
1930
+ found?: unknown;
1931
+ property?: string;
1932
+ expected?: string;
1933
+ };
1934
+ };
1935
+ };
1936
+ };
1937
+ } & {
1938
+ tranfer: {
1939
+ post: {
1940
+ body: {
1941
+ items: {
1942
+ quantity: number;
1943
+ itemId: string;
1944
+ requestId: string;
1945
+ }[];
1946
+ to: string;
1947
+ };
1948
+ params: {};
1949
+ query: unknown;
1950
+ headers: unknown;
1951
+ response: {
1952
+ 200: {
1953
+ id: string;
1954
+ createdAt: string;
1955
+ updatedAt: string;
1956
+ merchantId: string;
1957
+ branchId: string;
1958
+ deletedAt: string | null;
1959
+ createdUserId: string;
1960
+ status: "Зөвшөөрөгдсөн" | "Цуцлагдсан" | "Хүлээгдэж буй";
1961
+ to: string;
1962
+ };
1963
+ 422: {
1964
+ type: "validation";
1965
+ on: string;
1966
+ summary?: string;
1967
+ message?: string;
1968
+ found?: unknown;
1969
+ property?: string;
1970
+ expected?: string;
1971
+ };
1972
+ };
1973
+ };
1974
+ };
1975
+ } & {
1976
+ tranfer: {
1977
+ ":id": {
1978
+ approve: {
1979
+ post: {
1980
+ body: unknown;
1981
+ params: {
1982
+ id: string;
1983
+ };
1984
+ query: unknown;
1985
+ headers: unknown;
1986
+ response: {
1987
+ 200: undefined;
1988
+ 404: "Хүсэлт олдсонгүй.";
1989
+ 400: "Хүсэлт аль хэдийн зөвшөөрөгдсөн байна." | "Хүсэлт цуцлагдсан байна.";
1990
+ 422: {
1991
+ type: "validation";
1992
+ on: string;
1993
+ summary?: string;
1994
+ message?: string;
1995
+ found?: unknown;
1996
+ property?: string;
1997
+ expected?: string;
1998
+ };
1999
+ };
2000
+ };
2001
+ };
2002
+ };
2003
+ };
2004
+ };
1812
2005
  };
1813
2006
  } & {
1814
2007
  api: {
package/dist/index.js CHANGED
@@ -73255,6 +73255,10 @@ var inventoryTags = [
73255
73255
  {
73256
73256
  name: "InventorySupplier",
73257
73257
  description: "\u0410\u0433\u0443\u0443\u043B\u0430\u0445\u044B\u043D \u043D\u0438\u0439\u043B\u04AF\u04AF\u043B\u044D\u0433\u0447"
73258
+ },
73259
+ {
73260
+ name: "InventoryTransfer",
73261
+ description: "\u0410\u0433\u0443\u0443\u043B\u0430\u0445\u044B\u043D \u0448\u0438\u043B\u0436\u04AF\u04AF\u043B\u044D\u0433"
73258
73262
  }
73259
73263
  ];
73260
73264
  var merchantTags = [
@@ -96722,10 +96726,129 @@ var supplierRoutes = new Elysia({
96722
96726
  }).delete("/:id", async ({ params: { id } }) => await logic_default4.remove(id));
96723
96727
  var supplier_default = supplierRoutes;
96724
96728
 
96729
+ // src/routes/inventory/transfer/logic.ts
96730
+ var InventoryTransferLogic;
96731
+ ((InventoryTransferLogic) => {
96732
+ InventoryTransferLogic.select = async (query, user2) => {
96733
+ const filter = and(logic_default.getInventoryItemFilter(query.inventory ?? {}, user2), eq(inventoryTransferRequestTable.createdUserId, query.createdUserId ?? "").if(query.createdUserId), eq(inventoryTransferRequestTable.createdAt, query.createdAt ?? ""));
96734
+ const columns = getTableColumns(inventoryTransferRequestTable);
96735
+ const baseQuery = db_default.select({
96736
+ ...columns,
96737
+ totalCount: totalCountSql
96738
+ }).from(inventoryTransferRequestTable).leftJoin(inventoryTransferRequestItemTable, eq(inventoryTransferRequestTable.id, inventoryTransferRequestItemTable.requestId)).leftJoin(inventoryItemTable, eq(inventoryTransferRequestItemTable.itemId, inventoryItemTable.id)).where(filter).$dynamic();
96739
+ const result = await pagination_helper_default(baseQuery, query.pagination);
96740
+ const content = {
96741
+ totalCount: result[0]?.totalCount ?? 0,
96742
+ totalPage: result.length === 0 ? 0 : Math.ceil(result[0].totalCount / query.pagination.size)
96743
+ };
96744
+ return {
96745
+ result: result.map(({ totalCount, ...item }) => item),
96746
+ ...content
96747
+ };
96748
+ };
96749
+ InventoryTransferLogic.create = async (body, user2) => {
96750
+ return await db_default.transaction(async (db2) => {
96751
+ const [request] = await db2.insert(inventoryTransferRequestTable).values({
96752
+ createdUserId: user2.id,
96753
+ merchantId: user2.merchantId,
96754
+ branchId: user2.branchId,
96755
+ to: body.to
96756
+ }).returning();
96757
+ await db2.insert(inventoryTransferRequestItemTable).values(body.items);
96758
+ return request;
96759
+ });
96760
+ };
96761
+ InventoryTransferLogic.approve = async (params, user2) => {
96762
+ const request = await db_default.query.inventoryTransferRequestTable.findFirst({
96763
+ where: eq(inventoryTransferRequestTable.id, params.id),
96764
+ with: {
96765
+ items: {
96766
+ with: {
96767
+ item: true
96768
+ }
96769
+ }
96770
+ }
96771
+ });
96772
+ if (!request) {
96773
+ return status("Not Found", "\u0425\u04AF\u0441\u044D\u043B\u0442 \u043E\u043B\u0434\u0441\u043E\u043D\u0433\u04AF\u0439.");
96774
+ }
96775
+ if (request.status === "\u0417\u04E9\u0432\u0448\u04E9\u04E9\u0440\u04E9\u0433\u0434\u0441\u04E9\u043D") {
96776
+ return status("Bad Request", "\u0425\u04AF\u0441\u044D\u043B\u0442 \u0430\u043B\u044C \u0445\u044D\u0434\u0438\u0439\u043D \u0437\u04E9\u0432\u0448\u04E9\u04E9\u0440\u04E9\u0433\u0434\u0441\u04E9\u043D \u0431\u0430\u0439\u043D\u0430.");
96777
+ }
96778
+ if (request.status === "\u0426\u0443\u0446\u043B\u0430\u0433\u0434\u0441\u0430\u043D") {
96779
+ return status("Bad Request", "\u0425\u04AF\u0441\u044D\u043B\u0442 \u0446\u0443\u0446\u043B\u0430\u0433\u0434\u0441\u0430\u043D \u0431\u0430\u0439\u043D\u0430.");
96780
+ }
96781
+ const currentInventories = await db_default.query.inventoryItemTable.findMany({
96782
+ where: (table) => inArray(table.partNumber, request.items.map((item) => item.item.partNumber)),
96783
+ columns: { id: true, partNumber: true }
96784
+ });
96785
+ const inventoryMap = new Map(currentInventories.map((item) => [item.partNumber, item]));
96786
+ await db_default.transaction(async (db2) => {
96787
+ for (const item of request.items) {
96788
+ const currentInventory = inventoryMap.get(item.item.partNumber);
96789
+ if (currentInventory) {
96790
+ await logic_default.handleQuantityChange({
96791
+ id: currentInventory.id,
96792
+ quantity: item.quantity,
96793
+ description: "\u0410\u0433\u0443\u0443\u043B\u0430\u0445\u044B\u043D \u0448\u0438\u043B\u0436\u04AF\u04AF\u043B\u044D\u0433"
96794
+ }, user2, db2);
96795
+ } else {
96796
+ const { id, createdAt, updatedAt, deletedAt, ...body } = item.item;
96797
+ try {
96798
+ await logic_default.create({
96799
+ ...body,
96800
+ quantity: item.quantity
96801
+ }, user2, "\u0410\u0433\u0443\u0443\u043B\u0430\u0445\u044B\u043D \u0448\u0438\u043B\u0436\u04AF\u04AF\u043B\u044D\u0433", db2);
96802
+ } catch (err2) {
96803
+ throw err2;
96804
+ }
96805
+ }
96806
+ }
96807
+ });
96808
+ };
96809
+ })(InventoryTransferLogic ||= {});
96810
+ var logic_default5 = InventoryTransferLogic;
96811
+
96812
+ // src/routes/inventory/transfer/model.ts
96813
+ var InventoryTransferModel;
96814
+ ((InventoryTransferModel) => {
96815
+ const createItem = createInsertSchema(inventoryTransferRequestItemTable);
96816
+ InventoryTransferModel.select = t.Composite([
96817
+ t.Partial(t.Object({
96818
+ inventory: selectInventoryItemSchema,
96819
+ createdUserId: t.String(),
96820
+ createdAt: t.String({ format: "date" })
96821
+ })),
96822
+ PaginationSchema
96823
+ ]);
96824
+ InventoryTransferModel.create = t.Object({
96825
+ items: t.Array(OmitBaseSchema(createItem)),
96826
+ to: t.String({ format: "uuid" })
96827
+ });
96828
+ InventoryTransferModel.approve = IdSchema;
96829
+ })(InventoryTransferModel ||= {});
96830
+ var model_default = InventoryTransferModel;
96831
+
96832
+ // src/routes/inventory/transfer/index.ts
96833
+ var transferRoutes = new Elysia({
96834
+ prefix: "/tranfer",
96835
+ tags: ["InventoryTransfer"]
96836
+ }).use(better_auth_default).guard({ auth: true }).model(model_default).get("/", async ({ query, user: user2 }) => logic_default5.select(query, user2), {
96837
+ query: "select"
96838
+ }).post("/", async ({ body, user: user2 }) => logic_default5.create(body, user2), {
96839
+ body: "create"
96840
+ }).post("/:id/approve", async ({ params, user: user2 }) => logic_default5.approve(params, user2), {
96841
+ params: "approve",
96842
+ detail: {
96843
+ summary: "\u0428\u0438\u043B\u0436\u04AF\u04AF\u043B\u044D\u0433 \u0437\u04E9\u0432\u0448\u04E9\u04E9\u0440\u04E9\u0445"
96844
+ }
96845
+ });
96846
+ var transfer_default = transferRoutes;
96847
+
96725
96848
  // src/routes/inventory/index.ts
96726
96849
  var inventorySchemaRoutes = new Elysia({
96727
96850
  prefix: "/inventory"
96728
- }).use(item_default).use(log_default).use(supplier_default).use(refund_default);
96851
+ }).use(item_default).use(log_default).use(supplier_default).use(refund_default).use(transfer_default);
96729
96852
  var inventory_default = inventorySchemaRoutes;
96730
96853
 
96731
96854
  // src/lib/db/helpers/crud.helper.ts
@@ -96809,7 +96932,7 @@ var MerchantBranchLogic;
96809
96932
  return branch;
96810
96933
  };
96811
96934
  })(MerchantBranchLogic ||= {});
96812
- var logic_default5 = MerchantBranchLogic;
96935
+ var logic_default6 = MerchantBranchLogic;
96813
96936
 
96814
96937
  // src/routes/merchant/branch/schema.ts
96815
96938
  var create5 = createInsertSchema(branchTable, {
@@ -96836,7 +96959,7 @@ var branchRoutes = new Elysia({
96836
96959
  }).get("/", async ({ query }) => await service.get(query), {
96837
96960
  query: selectBranchSchema,
96838
96961
  permission: ["MERCHANT_BRANCH_SELECT_OWN", "MERCHANT_BRANCH_SELECT_ADMIN"]
96839
- }).post("/", async ({ body, user: user2, permissions }) => await logic_default5.create(body, user2, permissions), {
96962
+ }).post("/", async ({ body, user: user2, permissions }) => await logic_default6.create(body, user2, permissions), {
96840
96963
  body: createBranchSchema,
96841
96964
  permission: "MERCHANT_BRANCH_CREATE"
96842
96965
  }).guard({
@@ -97145,7 +97268,7 @@ var PermissionLogic;
97145
97268
  return permissions;
97146
97269
  };
97147
97270
  })(PermissionLogic ||= {});
97148
- var logic_default6 = PermissionLogic;
97271
+ var logic_default7 = PermissionLogic;
97149
97272
 
97150
97273
  // src/routes/permission/schema.ts
97151
97274
  var addPermissionSchema = t.Object({
@@ -97172,7 +97295,7 @@ var permissionRoutes = new Elysia({
97172
97295
  return permissionList;
97173
97296
  }, {
97174
97297
  permission: "PERMISSION_ADD"
97175
- }).post("/", ({ body }) => logic_default6.addPermission(body), {
97298
+ }).post("/", ({ body }) => logic_default7.addPermission(body), {
97176
97299
  body: addPermissionSchema,
97177
97300
  permission: "PERMISSION_ADD",
97178
97301
  beforeHandle({ status: status2, body, permissions, publicPermissions }) {
@@ -97184,7 +97307,7 @@ var permissionRoutes = new Elysia({
97184
97307
  }
97185
97308
  }).group("/group", (app) => app.guard({
97186
97309
  permission: "PERMISSION_GROUP_ALL"
97187
- }).get("/", async ({ query }) => await logic_default6.selectGroups(query), {
97310
+ }).get("/", async ({ query }) => await logic_default7.selectGroups(query), {
97188
97311
  query: selectPermissionGroupSchema
97189
97312
  }).post("/", async ({ body }) => await groupService.create(body), {
97190
97313
  body: createPermissionGroupSchema
@@ -97322,7 +97445,7 @@ var UserLogic;
97322
97445
  totalCount: totalCountSql
97323
97446
  }).from(user).where(filter).$dynamic();
97324
97447
  const users = await pagination_helper_default(baseQuery, query.pagination);
97325
- const userPermissions2 = await logic_default6.selectByUserId(users.map((u) => u.id));
97448
+ const userPermissions2 = await logic_default7.selectByUserId(users.map((u) => u.id));
97326
97449
  const content = {
97327
97450
  totalCount: users[0]?.totalCount ?? 0,
97328
97451
  totalPage: users.length === 0 ? 0 : Math.ceil(users[0].totalCount / query.pagination.size)
@@ -97366,7 +97489,7 @@ var UserLogic;
97366
97489
  }
97367
97490
  });
97368
97491
  try {
97369
- await logic_default6.addPermission({
97492
+ await logic_default7.addPermission({
97370
97493
  permissions: body.permissions,
97371
97494
  userId: result.user.id
97372
97495
  });
@@ -97381,7 +97504,7 @@ var UserLogic;
97381
97504
  if (!updatedUser) {
97382
97505
  return status("Not Found", "\u0425\u044D\u0440\u044D\u0433\u043B\u044D\u0433\u0447 \u043E\u043B\u0434\u0441\u043E\u043D\u0433\u04AF\u0439.");
97383
97506
  }
97384
- await logic_default6.addPermission({
97507
+ await logic_default7.addPermission({
97385
97508
  permissions: body.permissions,
97386
97509
  userId: updatedUser.id
97387
97510
  }, db2);
@@ -97389,7 +97512,7 @@ var UserLogic;
97389
97512
  });
97390
97513
  };
97391
97514
  })(UserLogic ||= {});
97392
- var logic_default7 = UserLogic;
97515
+ var logic_default8 = UserLogic;
97393
97516
 
97394
97517
  // src/routes/user/schema.ts
97395
97518
  var select4 = createSelectSchema(user);
@@ -97421,17 +97544,17 @@ var userRoutes = new Elysia({
97421
97544
  }).use(better_auth_default).use(permission_default).guard({
97422
97545
  auth: true,
97423
97546
  tags: ["User"]
97424
- }).get("/", async ({ query, user: user2, permissions }) => logic_default7.select(query, user2, permissions), {
97547
+ }).get("/", async ({ query, user: user2, permissions }) => logic_default8.select(query, user2, permissions), {
97425
97548
  query: selectUserSchema,
97426
97549
  permission: [
97427
97550
  "USER_SELECT_BACKOFFICE",
97428
97551
  "USER_SELECT_ADMIN",
97429
97552
  "USER_SELECT_OWN"
97430
97553
  ]
97431
- }).post("/", async ({ body, user: user2, permissions }) => logic_default7.registerUser(body, user2, permissions), {
97554
+ }).post("/", async ({ body, user: user2, permissions }) => logic_default8.registerUser(body, user2, permissions), {
97432
97555
  body: createUserSchema,
97433
97556
  permission: ["USER_CREATE_ADMIN", "USER_CREATE_OWN"]
97434
- }).put("/:id", async ({ body, user: user2, permissions, params: { id } }) => logic_default7.update(id, body, user2, permissions), {
97557
+ }).put("/:id", async ({ body, user: user2, permissions, params: { id } }) => logic_default8.update(id, body, user2, permissions), {
97435
97558
  body: updateUserSchema,
97436
97559
  permission: ["USER_CREATE_ADMIN", "USER_CREATE_OWN"]
97437
97560
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "autosync_backend2",
3
- "version": "1.0.79",
3
+ "version": "1.0.80",
4
4
  "module": "src/index.ts",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",