autosync_backend2 1.0.74 → 1.0.76
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 +135 -2
- package/dist/index.js +160 -81
- package/package.json +4 -2
package/dist/index.d.ts
CHANGED
|
@@ -1308,6 +1308,7 @@ declare const app: Elysia<"", {
|
|
|
1308
1308
|
excel: {
|
|
1309
1309
|
post: {
|
|
1310
1310
|
body: {
|
|
1311
|
+
branchId?: string | undefined;
|
|
1311
1312
|
file: File;
|
|
1312
1313
|
};
|
|
1313
1314
|
params: {};
|
|
@@ -1316,8 +1317,8 @@ declare const app: Elysia<"", {
|
|
|
1316
1317
|
response: {
|
|
1317
1318
|
200: AsyncGenerator<{
|
|
1318
1319
|
percent: number;
|
|
1319
|
-
|
|
1320
|
-
},
|
|
1320
|
+
count: number;
|
|
1321
|
+
}, import("elysia/dist/error").ElysiaCustomStatusResponse<"Bad Request", readonly import("@sinclair/typebox/build/cjs/errors").ValueError[], 400> | undefined, unknown>;
|
|
1321
1322
|
422: {
|
|
1322
1323
|
type: "validation";
|
|
1323
1324
|
on: string;
|
|
@@ -1507,6 +1508,138 @@ declare const app: Elysia<"", {
|
|
|
1507
1508
|
};
|
|
1508
1509
|
};
|
|
1509
1510
|
};
|
|
1511
|
+
} & {
|
|
1512
|
+
inventory: {
|
|
1513
|
+
supplier: {
|
|
1514
|
+
get: {
|
|
1515
|
+
body: unknown;
|
|
1516
|
+
params: {};
|
|
1517
|
+
query: {
|
|
1518
|
+
pagination: {
|
|
1519
|
+
size: number;
|
|
1520
|
+
page: number;
|
|
1521
|
+
};
|
|
1522
|
+
};
|
|
1523
|
+
headers: unknown;
|
|
1524
|
+
response: {
|
|
1525
|
+
200: {
|
|
1526
|
+
totalCount: number;
|
|
1527
|
+
totalPage: number;
|
|
1528
|
+
result: {
|
|
1529
|
+
name: string;
|
|
1530
|
+
image: string | null;
|
|
1531
|
+
id: string;
|
|
1532
|
+
createdAt: string;
|
|
1533
|
+
updatedAt: string;
|
|
1534
|
+
deletedAt: string | null;
|
|
1535
|
+
}[];
|
|
1536
|
+
};
|
|
1537
|
+
422: {
|
|
1538
|
+
type: "validation";
|
|
1539
|
+
on: string;
|
|
1540
|
+
summary?: string;
|
|
1541
|
+
message?: string;
|
|
1542
|
+
found?: unknown;
|
|
1543
|
+
property?: string;
|
|
1544
|
+
expected?: string;
|
|
1545
|
+
};
|
|
1546
|
+
};
|
|
1547
|
+
};
|
|
1548
|
+
};
|
|
1549
|
+
} & {
|
|
1550
|
+
supplier: {
|
|
1551
|
+
post: {
|
|
1552
|
+
body: {
|
|
1553
|
+
image?: string | null | undefined;
|
|
1554
|
+
name: string;
|
|
1555
|
+
};
|
|
1556
|
+
params: {};
|
|
1557
|
+
query: unknown;
|
|
1558
|
+
headers: unknown;
|
|
1559
|
+
response: {
|
|
1560
|
+
200: {
|
|
1561
|
+
name: string;
|
|
1562
|
+
id: string;
|
|
1563
|
+
image: string | null;
|
|
1564
|
+
createdAt: string;
|
|
1565
|
+
updatedAt: string;
|
|
1566
|
+
deletedAt: string | null;
|
|
1567
|
+
};
|
|
1568
|
+
422: {
|
|
1569
|
+
type: "validation";
|
|
1570
|
+
on: string;
|
|
1571
|
+
summary?: string;
|
|
1572
|
+
message?: string;
|
|
1573
|
+
found?: unknown;
|
|
1574
|
+
property?: string;
|
|
1575
|
+
expected?: string;
|
|
1576
|
+
};
|
|
1577
|
+
};
|
|
1578
|
+
};
|
|
1579
|
+
};
|
|
1580
|
+
} & {
|
|
1581
|
+
supplier: {
|
|
1582
|
+
":id": {
|
|
1583
|
+
put: {
|
|
1584
|
+
body: {
|
|
1585
|
+
image?: string | null | undefined;
|
|
1586
|
+
name: string;
|
|
1587
|
+
};
|
|
1588
|
+
params: {
|
|
1589
|
+
id: string;
|
|
1590
|
+
};
|
|
1591
|
+
query: unknown;
|
|
1592
|
+
headers: unknown;
|
|
1593
|
+
response: {
|
|
1594
|
+
200: {
|
|
1595
|
+
name: string;
|
|
1596
|
+
image: string | null;
|
|
1597
|
+
id: string;
|
|
1598
|
+
createdAt: string;
|
|
1599
|
+
updatedAt: string;
|
|
1600
|
+
deletedAt: string | null;
|
|
1601
|
+
};
|
|
1602
|
+
404: "Нийлүүлэгч олдсонгүй.";
|
|
1603
|
+
422: {
|
|
1604
|
+
type: "validation";
|
|
1605
|
+
on: string;
|
|
1606
|
+
summary?: string;
|
|
1607
|
+
message?: string;
|
|
1608
|
+
found?: unknown;
|
|
1609
|
+
property?: string;
|
|
1610
|
+
expected?: string;
|
|
1611
|
+
};
|
|
1612
|
+
};
|
|
1613
|
+
};
|
|
1614
|
+
};
|
|
1615
|
+
};
|
|
1616
|
+
} & {
|
|
1617
|
+
supplier: {
|
|
1618
|
+
":id": {
|
|
1619
|
+
delete: {
|
|
1620
|
+
body: unknown;
|
|
1621
|
+
params: {
|
|
1622
|
+
id: string;
|
|
1623
|
+
};
|
|
1624
|
+
query: unknown;
|
|
1625
|
+
headers: unknown;
|
|
1626
|
+
response: {
|
|
1627
|
+
200: undefined;
|
|
1628
|
+
404: "Нийлүүлэгч олдсонгүй.";
|
|
1629
|
+
422: {
|
|
1630
|
+
type: "validation";
|
|
1631
|
+
on: string;
|
|
1632
|
+
summary?: string;
|
|
1633
|
+
message?: string;
|
|
1634
|
+
found?: unknown;
|
|
1635
|
+
property?: string;
|
|
1636
|
+
expected?: string;
|
|
1637
|
+
};
|
|
1638
|
+
};
|
|
1639
|
+
};
|
|
1640
|
+
};
|
|
1641
|
+
};
|
|
1642
|
+
};
|
|
1510
1643
|
};
|
|
1511
1644
|
} & {
|
|
1512
1645
|
api: {
|
package/dist/index.js
CHANGED
|
@@ -15782,6 +15782,7 @@ __export(exports_schema, {
|
|
|
15782
15782
|
merchantTable: () => merchantTable,
|
|
15783
15783
|
merchantSchema: () => merchantSchema,
|
|
15784
15784
|
logTable: () => logTable,
|
|
15785
|
+
inventorySupplierTable: () => inventorySupplierTable,
|
|
15785
15786
|
inventorySchema: () => inventorySchema,
|
|
15786
15787
|
inventoryRefundTable: () => inventoryRefundTable,
|
|
15787
15788
|
inventoryLogTable: () => inventoryLogTable,
|
|
@@ -21017,6 +21018,11 @@ var inventoryRefundTable = inventorySchema.table("refund", {
|
|
|
21017
21018
|
userId: uuid().notNull(),
|
|
21018
21019
|
approvedUserId: uuid()
|
|
21019
21020
|
});
|
|
21021
|
+
var inventorySupplierTable = inventorySchema.table("supplier", {
|
|
21022
|
+
...base_schema_helper_default,
|
|
21023
|
+
name: varchar().notNull(),
|
|
21024
|
+
image: varchar()
|
|
21025
|
+
});
|
|
21020
21026
|
// src/lib/db/schema/common.schema.ts
|
|
21021
21027
|
var logTable = pgTable("log", {
|
|
21022
21028
|
...base_schema_helper_default,
|
|
@@ -73202,6 +73208,10 @@ var inventoryTags = [
|
|
|
73202
73208
|
{
|
|
73203
73209
|
name: "InventoryRefund",
|
|
73204
73210
|
description: "\u0410\u0433\u0443\u0443\u043B\u0430\u0445\u044B\u043D \u0431\u0443\u0446\u0430\u0430\u043B\u0442"
|
|
73211
|
+
},
|
|
73212
|
+
{
|
|
73213
|
+
name: "InventorySupplier",
|
|
73214
|
+
description: "\u0410\u0433\u0443\u0443\u043B\u0430\u0445\u044B\u043D \u043D\u0438\u0439\u043B\u04AF\u04AF\u043B\u044D\u0433\u0447"
|
|
73205
73215
|
}
|
|
73206
73216
|
];
|
|
73207
73217
|
var merchantTags = [
|
|
@@ -95937,8 +95947,8 @@ var version2 = XLSX.version;
|
|
|
95937
95947
|
// src/routes/inventory/log/logic.ts
|
|
95938
95948
|
var InventoryLogLogic;
|
|
95939
95949
|
((InventoryLogLogic) => {
|
|
95940
|
-
InventoryLogLogic.select = async (query) => {
|
|
95941
|
-
const filter = and(
|
|
95950
|
+
InventoryLogLogic.select = async (query, user2) => {
|
|
95951
|
+
const filter = and(logic_default.getInventoryItemFilter(query, user2), eq(inventoryLogTable.createdUserId, query.createdUserId ?? "").if(query.createdUserId), eq(sql`date(${inventoryLogTable.createdAt})`, query.createdAt ?? "").if(query.createdAt), eq(inventoryLogTable.sellPrice, query.sellPrice ?? 0).if(query.sellPrice));
|
|
95942
95952
|
const columns = getTableColumns(inventoryLogTable);
|
|
95943
95953
|
const base = db_default.select({
|
|
95944
95954
|
...columns,
|
|
@@ -95980,7 +95990,7 @@ var InventoryLogLogic;
|
|
|
95980
95990
|
});
|
|
95981
95991
|
};
|
|
95982
95992
|
})(InventoryLogLogic ||= {});
|
|
95983
|
-
var
|
|
95993
|
+
var logic_default2 = InventoryLogLogic;
|
|
95984
95994
|
|
|
95985
95995
|
// node_modules/drizzle-typebox/index.mjs
|
|
95986
95996
|
var CONSTANTS = {
|
|
@@ -96300,7 +96310,8 @@ var selectInventoryItemSchema = t.Composite([
|
|
|
96300
96310
|
PaginationSchema
|
|
96301
96311
|
]);
|
|
96302
96312
|
var importInventoryItemSchema = t.Object({
|
|
96303
|
-
file: t.File()
|
|
96313
|
+
file: t.File(),
|
|
96314
|
+
branchId: t.Optional(t.String({ format: "uuid" }))
|
|
96304
96315
|
});
|
|
96305
96316
|
|
|
96306
96317
|
// src/routes/inventory/item/logic.ts
|
|
@@ -96339,7 +96350,7 @@ var InventoryItemLogic;
|
|
|
96339
96350
|
merchantId: body.merchantId ?? user2.merchantId
|
|
96340
96351
|
}).returning();
|
|
96341
96352
|
if (body.quantity) {
|
|
96342
|
-
await
|
|
96353
|
+
await logic_default2.create({
|
|
96343
96354
|
itemId: inventoryItem.id,
|
|
96344
96355
|
quantity: body.quantity,
|
|
96345
96356
|
description: "\u0413\u0430\u0440\u0430\u0430\u0440 \u0431\u0430\u0440\u0430\u0430 \u043D\u044D\u043C\u0441\u044D\u043D.",
|
|
@@ -96364,32 +96375,33 @@ var InventoryItemLogic;
|
|
|
96364
96375
|
throw new Error("\u0410\u0433\u0443\u0443\u043B\u0430\u0445\u044B\u043D \u0431\u0430\u0440\u0430\u0430 \u043E\u043B\u0434\u0441\u043E\u043D\u0433\u04AF\u0439.");
|
|
96365
96376
|
}
|
|
96366
96377
|
};
|
|
96367
|
-
InventoryItemLogic.importExcel = async function* ({ file }, user2) {
|
|
96378
|
+
InventoryItemLogic.importExcel = async function* ({ file, branchId }, user2) {
|
|
96368
96379
|
const BATCH_SIZE = 1000;
|
|
96369
96380
|
const buffer = await file.arrayBuffer();
|
|
96370
96381
|
const workbook = readSync(buffer, { type: "buffer" });
|
|
96371
96382
|
const sheetName = workbook.SheetNames[0];
|
|
96372
96383
|
const sheet = workbook.Sheets[sheetName];
|
|
96373
|
-
const rows = utils.sheet_to_json(sheet
|
|
96374
|
-
const
|
|
96384
|
+
const rows = utils.sheet_to_json(sheet);
|
|
96385
|
+
const schema3 = t.Array(createInventoryItemSchema);
|
|
96386
|
+
let parsed = [];
|
|
96387
|
+
try {
|
|
96388
|
+
parsed = exports_value2.Parse(schema3, rows);
|
|
96389
|
+
} catch (err2) {
|
|
96390
|
+
return status("Bad Request", [...exports_value2.Errors(schema3, parsed)]);
|
|
96391
|
+
}
|
|
96375
96392
|
for (let i2 = 0;i2 < parsed.length; i2 += BATCH_SIZE) {
|
|
96376
96393
|
const batch = parsed.slice(i2, i2 + BATCH_SIZE);
|
|
96377
|
-
|
|
96378
|
-
|
|
96379
|
-
|
|
96380
|
-
|
|
96381
|
-
|
|
96382
|
-
|
|
96383
|
-
|
|
96384
|
-
|
|
96385
|
-
|
|
96386
|
-
|
|
96387
|
-
}
|
|
96394
|
+
await db_default.insert(inventoryItemTable).values(batch.map((item) => ({
|
|
96395
|
+
...item,
|
|
96396
|
+
branchId: branchId ?? user2.branchId,
|
|
96397
|
+
merchantId: user2.merchantId
|
|
96398
|
+
})));
|
|
96399
|
+
const percent = Math.round((i2 * BATCH_SIZE + batch.length) / parsed.length * 100);
|
|
96400
|
+
yield {
|
|
96401
|
+
percent: percent >= 100 ? 100 : percent,
|
|
96402
|
+
count: i2
|
|
96403
|
+
};
|
|
96388
96404
|
}
|
|
96389
|
-
yield {
|
|
96390
|
-
percent: 100,
|
|
96391
|
-
status: "completed"
|
|
96392
|
-
};
|
|
96393
96405
|
};
|
|
96394
96406
|
InventoryItemLogic.downloadExcelTemplate = () => {
|
|
96395
96407
|
const workbook = utils.book_new();
|
|
@@ -96406,7 +96418,7 @@ var InventoryItemLogic;
|
|
|
96406
96418
|
if (!currentInventory) {
|
|
96407
96419
|
return status("Not Found", "\u0410\u0433\u0443\u0443\u043B\u0430\u0445\u044B\u043D \u0431\u0430\u0440\u0430\u0430 \u043E\u043B\u0434\u0441\u043E\u043D\u0433\u04AF\u0439.");
|
|
96408
96420
|
}
|
|
96409
|
-
await
|
|
96421
|
+
await logic_default2.create({
|
|
96410
96422
|
itemId: input.id,
|
|
96411
96423
|
quantity: input.quantity,
|
|
96412
96424
|
description: input.description,
|
|
@@ -96417,7 +96429,7 @@ var InventoryItemLogic;
|
|
|
96417
96429
|
}).where(eq(inventoryItemTable.id, input.id));
|
|
96418
96430
|
};
|
|
96419
96431
|
})(InventoryItemLogic ||= {});
|
|
96420
|
-
var
|
|
96432
|
+
var logic_default = InventoryItemLogic;
|
|
96421
96433
|
|
|
96422
96434
|
// src/routes/inventory/item/index.ts
|
|
96423
96435
|
var itemRoutes = new Elysia({
|
|
@@ -96425,7 +96437,7 @@ var itemRoutes = new Elysia({
|
|
|
96425
96437
|
}).use(better_auth_default).use(permission_default).guard({
|
|
96426
96438
|
auth: true,
|
|
96427
96439
|
tags: ["InventoryItem"]
|
|
96428
|
-
}).get("/", async ({ query, user: user2 }) => await
|
|
96440
|
+
}).get("/", async ({ query, user: user2 }) => await logic_default.select(query, user2), {
|
|
96429
96441
|
query: selectInventoryItemSchema,
|
|
96430
96442
|
permission: ["INVENTORY_ITEM_SELECT_OWN", "INVENTORY_ITEM_SELECT_ADMIN"],
|
|
96431
96443
|
beforeHandle({ status: status2, query, permissions }) {
|
|
@@ -96433,7 +96445,7 @@ var itemRoutes = new Elysia({
|
|
|
96433
96445
|
return status2("Forbidden", "\u0417\u04E9\u0432\u0445\u04E9\u043D \u04E9\u04E9\u0440\u0438\u0439\u043D \u0441\u0430\u043B\u0431\u0430\u0440\u044B\u043D \u0431\u0430\u0440\u0430\u0430 \u0445\u0430\u0440\u0430\u0445 \u0431\u043E\u043B\u043E\u043C\u0436\u0442\u043E\u0439.");
|
|
96434
96446
|
}
|
|
96435
96447
|
}
|
|
96436
|
-
}).post("/", async ({ body, user: user2 }) => await
|
|
96448
|
+
}).post("/", async ({ body, user: user2 }) => await logic_default.create(body, user2), {
|
|
96437
96449
|
body: createInventoryItemSchema,
|
|
96438
96450
|
permission: ["INVENTORY_ITEM_CREATE_OWN", "INVENTORY_ITEM_CREATE_ADMIN"],
|
|
96439
96451
|
beforeHandle({ status: status2, body, permissions }) {
|
|
@@ -96441,15 +96453,20 @@ var itemRoutes = new Elysia({
|
|
|
96441
96453
|
return status2("Forbidden", "\u0417\u04E9\u0432\u0445\u04E9\u043D \u04E9\u04E9\u0440\u0438\u0439\u043D \u0441\u0430\u043B\u0431\u0430\u0440\u044B\u043D \u0431\u0430\u0440\u0430\u0430 \u04AF\u04AF\u0441\u0433\u044D\u0445 \u0431\u043E\u043B\u043E\u043C\u0436\u0442\u043E\u0439.");
|
|
96442
96454
|
}
|
|
96443
96455
|
}
|
|
96444
|
-
}).post("/excel", async ({ body, user: user2 }) =>
|
|
96456
|
+
}).post("/excel", async ({ body, user: user2 }) => logic_default.importExcel(body, user2), {
|
|
96445
96457
|
body: importInventoryItemSchema,
|
|
96446
|
-
permission: ["INVENTORY_ITEM_CREATE_OWN", "INVENTORY_ITEM_CREATE_ADMIN"]
|
|
96458
|
+
permission: ["INVENTORY_ITEM_CREATE_OWN", "INVENTORY_ITEM_CREATE_ADMIN"],
|
|
96459
|
+
beforeHandle: ({ permissions, body: { branchId }, status: status2 }) => {
|
|
96460
|
+
if (!permissions.includes("INVENTORY_ITEM_CREATE_ADMIN") && branchId) {
|
|
96461
|
+
return status2("Forbidden", "\u0417\u04E9\u0432\u0445\u04E9\u043D \u04E9\u04E9\u0440\u0438\u0439\u043D \u0441\u0430\u043B\u0431\u0430\u0440\u044B\u043D \u0431\u0430\u0440\u0430\u0430 \u043D\u044D\u043C\u044D\u0445 \u0431\u043E\u043B\u043E\u043C\u0436\u0442\u043E\u0439.");
|
|
96462
|
+
}
|
|
96463
|
+
}
|
|
96447
96464
|
}).get("/excel", async () => "").guard({
|
|
96448
96465
|
params: IdSchema
|
|
96449
|
-
}).put("/:id", async ({ params: { id }, body, user: user2, permissions }) => await
|
|
96466
|
+
}).put("/:id", async ({ params: { id }, body, user: user2, permissions }) => await logic_default.update(id, body, user2, permissions), {
|
|
96450
96467
|
body: updateInventoryItemSchema,
|
|
96451
96468
|
permission: ["INVENTORY_ITEM_UPDATE_OWN", "INVENTORY_ITEM_UPDATE_ADMIN"]
|
|
96452
|
-
}).delete("/:id", async ({ params: { id }, user: user2, permissions }) => await
|
|
96469
|
+
}).delete("/:id", async ({ params: { id }, user: user2, permissions }) => await logic_default.remove(id, user2, permissions), {
|
|
96453
96470
|
permission: ["INVENTORY_ITEM_DELETE_OWN", "INVENTORY_ITEM_DELETE_ADMIN"]
|
|
96454
96471
|
});
|
|
96455
96472
|
var item_default = itemRoutes;
|
|
@@ -96466,7 +96483,7 @@ var selectInventoryLogSchema = t.Composite([
|
|
|
96466
96483
|
// src/routes/inventory/log/index.ts
|
|
96467
96484
|
var logRoutes = new Elysia({
|
|
96468
96485
|
prefix: "/log"
|
|
96469
|
-
}).use(better_auth_default).use(permission_default).guard({ auth: true, tags: ["InventoryLog"] }).get("/", ({ query }) =>
|
|
96486
|
+
}).use(better_auth_default).use(permission_default).guard({ auth: true, tags: ["InventoryLog"] }).get("/", ({ query, user: user2 }) => logic_default2.select(query, user2), {
|
|
96470
96487
|
query: selectInventoryLogSchema,
|
|
96471
96488
|
permission: ["INVENTORY_LOG_SELECT_OWN", "INVENTORY_LOG_SELECT_ADMIN"],
|
|
96472
96489
|
beforeHandle({ status: status2, query, permissions }) {
|
|
@@ -96477,10 +96494,73 @@ var logRoutes = new Elysia({
|
|
|
96477
96494
|
});
|
|
96478
96495
|
var log_default = logRoutes;
|
|
96479
96496
|
|
|
96497
|
+
// src/routes/inventory/supplier/logic.ts
|
|
96498
|
+
var InventorySupplierLogic;
|
|
96499
|
+
((InventorySupplierLogic) => {
|
|
96500
|
+
InventorySupplierLogic.select = async (query) => {
|
|
96501
|
+
const columns = getTableColumns(inventorySupplierTable);
|
|
96502
|
+
const baseQuery = db_default.select({
|
|
96503
|
+
...columns,
|
|
96504
|
+
totalCount: sql`count(*) over()`.mapWith(Number)
|
|
96505
|
+
}).from(inventorySupplierTable).where(softDeletedFilter(inventorySupplierTable)).$dynamic();
|
|
96506
|
+
const suppliers = await pagination_helper_default(baseQuery, query.pagination);
|
|
96507
|
+
const content = {
|
|
96508
|
+
totalCount: suppliers[0]?.totalCount ?? 0,
|
|
96509
|
+
totalPage: suppliers.length === 0 ? 0 : Math.ceil(suppliers[0].totalCount / query.pagination.size)
|
|
96510
|
+
};
|
|
96511
|
+
return {
|
|
96512
|
+
result: suppliers.map(({ totalCount, ...i2 }) => i2),
|
|
96513
|
+
...content
|
|
96514
|
+
};
|
|
96515
|
+
};
|
|
96516
|
+
InventorySupplierLogic.create = async (body) => {
|
|
96517
|
+
const [supplier] = await db_default.insert(inventorySupplierTable).values(body).returning();
|
|
96518
|
+
return supplier;
|
|
96519
|
+
};
|
|
96520
|
+
InventorySupplierLogic.update = async (id, body) => {
|
|
96521
|
+
const [supplier] = await db_default.update(inventorySupplierTable).set(body).where(eq(inventorySupplierTable.id, id)).returning();
|
|
96522
|
+
if (!supplier) {
|
|
96523
|
+
return status("Not Found", "\u041D\u0438\u0439\u043B\u04AF\u04AF\u043B\u044D\u0433\u0447 \u043E\u043B\u0434\u0441\u043E\u043D\u0433\u04AF\u0439.");
|
|
96524
|
+
}
|
|
96525
|
+
return supplier;
|
|
96526
|
+
};
|
|
96527
|
+
InventorySupplierLogic.remove = async (id) => {
|
|
96528
|
+
const [supplier] = await db_default.update(inventorySupplierTable).set({
|
|
96529
|
+
deletedAt: sql`now()`
|
|
96530
|
+
}).where(eq(inventorySupplierTable.id, id)).returning();
|
|
96531
|
+
if (!supplier) {
|
|
96532
|
+
return status("Not Found", "\u041D\u0438\u0439\u043B\u04AF\u04AF\u043B\u044D\u0433\u0447 \u043E\u043B\u0434\u0441\u043E\u043D\u0433\u04AF\u0439.");
|
|
96533
|
+
}
|
|
96534
|
+
};
|
|
96535
|
+
})(InventorySupplierLogic ||= {});
|
|
96536
|
+
var logic_default3 = InventorySupplierLogic;
|
|
96537
|
+
|
|
96538
|
+
// src/routes/inventory/supplier/schema.ts
|
|
96539
|
+
var create3 = createInsertSchema(inventorySupplierTable);
|
|
96540
|
+
var update2 = createInsertSchema(inventorySupplierTable);
|
|
96541
|
+
var createInventorySupplierSchema = OmitBaseSchema(create3);
|
|
96542
|
+
var updateInventorySupplierSchema = OmitBaseSchema(update2);
|
|
96543
|
+
|
|
96544
|
+
// src/routes/inventory/supplier/index.ts
|
|
96545
|
+
var supplierRoutes = new Elysia({
|
|
96546
|
+
prefix: "/supplier"
|
|
96547
|
+
}).guard({
|
|
96548
|
+
tags: ["InventorySupplier"]
|
|
96549
|
+
}).get("/", async ({ query }) => await logic_default3.select(query), {
|
|
96550
|
+
query: PaginationSchema
|
|
96551
|
+
}).post("/", async ({ body }) => await logic_default3.create(body), {
|
|
96552
|
+
body: createInventorySupplierSchema
|
|
96553
|
+
}).guard({
|
|
96554
|
+
params: IdSchema
|
|
96555
|
+
}).put("/:id", async ({ params: { id }, body }) => await logic_default3.update(id, body), {
|
|
96556
|
+
body: updateInventorySupplierSchema
|
|
96557
|
+
}).delete("/:id", async ({ params: { id } }) => await logic_default3.remove(id));
|
|
96558
|
+
var supplier_default = supplierRoutes;
|
|
96559
|
+
|
|
96480
96560
|
// src/routes/inventory/index.ts
|
|
96481
96561
|
var inventorySchemaRoutes = new Elysia({
|
|
96482
96562
|
prefix: "/inventory"
|
|
96483
|
-
}).use(item_default).use(log_default);
|
|
96563
|
+
}).use(item_default).use(log_default).use(supplier_default);
|
|
96484
96564
|
var inventory_default = inventorySchemaRoutes;
|
|
96485
96565
|
|
|
96486
96566
|
// src/lib/db/helpers/crud.helper.ts
|
|
@@ -96565,18 +96645,18 @@ var MerchantBranchLogic;
|
|
|
96565
96645
|
return branch;
|
|
96566
96646
|
};
|
|
96567
96647
|
})(MerchantBranchLogic ||= {});
|
|
96568
|
-
var
|
|
96648
|
+
var logic_default4 = MerchantBranchLogic;
|
|
96569
96649
|
|
|
96570
96650
|
// src/routes/merchant/branch/schema.ts
|
|
96571
|
-
var
|
|
96651
|
+
var create4 = createInsertSchema(branchTable, {
|
|
96572
96652
|
phone: (schema3) => t.RegExp(/^\d{8}$/, { ...schema3 }),
|
|
96573
96653
|
email: (schema3) => t.String({ ...schema3, format: "email" }),
|
|
96574
96654
|
merchantId: (schema3) => t.Optional(schema3)
|
|
96575
96655
|
});
|
|
96576
|
-
var
|
|
96656
|
+
var update3 = createUpdateSchema(branchTable);
|
|
96577
96657
|
var select2 = createSelectSchema(branchTable);
|
|
96578
|
-
var createBranchSchema = OmitBaseSchema(
|
|
96579
|
-
var updateBranchSchema = OmitBaseSchema(
|
|
96658
|
+
var createBranchSchema = OmitBaseSchema(create4);
|
|
96659
|
+
var updateBranchSchema = OmitBaseSchema(update3);
|
|
96580
96660
|
var selectBranchSchema = t.Composite([
|
|
96581
96661
|
t.Partial(select2),
|
|
96582
96662
|
PaginationSchema
|
|
@@ -96592,7 +96672,7 @@ var branchRoutes = new Elysia({
|
|
|
96592
96672
|
}).get("/", async ({ query }) => await service.get(query), {
|
|
96593
96673
|
query: selectBranchSchema,
|
|
96594
96674
|
permission: ["MERCHANT_BRANCH_SELECT_OWN", "MERCHANT_BRANCH_SELECT_ADMIN"]
|
|
96595
|
-
}).post("/", async ({ body, user: user2, permissions }) => await
|
|
96675
|
+
}).post("/", async ({ body, user: user2, permissions }) => await logic_default4.create(body, user2, permissions), {
|
|
96596
96676
|
body: createBranchSchema,
|
|
96597
96677
|
permission: "MERCHANT_BRANCH_CREATE"
|
|
96598
96678
|
}).guard({
|
|
@@ -96601,14 +96681,14 @@ var branchRoutes = new Elysia({
|
|
|
96601
96681
|
var branch_default = branchRoutes;
|
|
96602
96682
|
|
|
96603
96683
|
// src/routes/merchant/merchant/schema.ts
|
|
96604
|
-
var
|
|
96605
|
-
var
|
|
96684
|
+
var create5 = createInsertSchema(merchantTable);
|
|
96685
|
+
var update4 = createUpdateSchema(merchantTable);
|
|
96606
96686
|
var select3 = createSelectSchema(merchantTable, {
|
|
96607
96687
|
phone: t.RegExp(/^\d{8}$/),
|
|
96608
96688
|
email: t.String({ format: "email" })
|
|
96609
96689
|
});
|
|
96610
|
-
var createMerchantSchema = OmitBaseSchema(
|
|
96611
|
-
var updateMerchantSchema = OmitBaseSchema(
|
|
96690
|
+
var createMerchantSchema = OmitBaseSchema(create5);
|
|
96691
|
+
var updateMerchantSchema = OmitBaseSchema(update4);
|
|
96612
96692
|
var selectMerchantSchema = t.Composite([
|
|
96613
96693
|
t.Partial(t.Pick(select3, ["phone", "regNumber", "serviceName", "isActive"])),
|
|
96614
96694
|
PaginationSchema
|
|
@@ -96646,10 +96726,10 @@ var merchantRoutes = new Elysia({
|
|
|
96646
96726
|
var merchant_default = merchantRoutes;
|
|
96647
96727
|
|
|
96648
96728
|
// src/routes/merchant/package/schema.ts
|
|
96649
|
-
var
|
|
96650
|
-
var
|
|
96651
|
-
var createPackageSchema = OmitBaseSchema(
|
|
96652
|
-
var updatePackageSchema = OmitBaseSchema(
|
|
96729
|
+
var create6 = createInsertSchema(packageTable);
|
|
96730
|
+
var update5 = createUpdateSchema(packageTable);
|
|
96731
|
+
var createPackageSchema = OmitBaseSchema(create6);
|
|
96732
|
+
var updatePackageSchema = OmitBaseSchema(update5);
|
|
96653
96733
|
|
|
96654
96734
|
// src/routes/merchant/package/index.ts
|
|
96655
96735
|
var service3 = new CrudHelper(packageTable, "\u0411\u0430\u0433\u0446 \u043E\u043B\u0434\u0441\u043E\u043D\u0433\u04AF\u0439.");
|
|
@@ -96864,13 +96944,13 @@ var permissionList = localPermissionList;
|
|
|
96864
96944
|
// src/routes/permission/logic.ts
|
|
96865
96945
|
var PermissionLogic;
|
|
96866
96946
|
((PermissionLogic) => {
|
|
96867
|
-
PermissionLogic.addPermission = async (body) => {
|
|
96947
|
+
PermissionLogic.addPermission = async (body, tdb = db_default) => {
|
|
96868
96948
|
const insert = body.permissions.map((permission) => ({
|
|
96869
96949
|
userId: body.userId,
|
|
96870
96950
|
code: permission
|
|
96871
96951
|
}));
|
|
96872
|
-
await
|
|
96873
|
-
await
|
|
96952
|
+
await tdb.delete(permissionTable).where(eq(permissionTable.userId, body.userId));
|
|
96953
|
+
await tdb.insert(permissionTable).values(insert);
|
|
96874
96954
|
};
|
|
96875
96955
|
PermissionLogic.selectGroups = async (query) => {
|
|
96876
96956
|
const columns = getTableColumns(permissionGroupTable);
|
|
@@ -96901,7 +96981,7 @@ var PermissionLogic;
|
|
|
96901
96981
|
return permissions;
|
|
96902
96982
|
};
|
|
96903
96983
|
})(PermissionLogic ||= {});
|
|
96904
|
-
var
|
|
96984
|
+
var logic_default5 = PermissionLogic;
|
|
96905
96985
|
|
|
96906
96986
|
// src/routes/permission/schema.ts
|
|
96907
96987
|
var addPermissionSchema = t.Object({
|
|
@@ -96928,7 +97008,7 @@ var permissionRoutes = new Elysia({
|
|
|
96928
97008
|
return permissionList;
|
|
96929
97009
|
}, {
|
|
96930
97010
|
permission: "PERMISSION_ADD"
|
|
96931
|
-
}).post("/", ({ body }) =>
|
|
97011
|
+
}).post("/", ({ body }) => logic_default5.addPermission(body), {
|
|
96932
97012
|
body: addPermissionSchema,
|
|
96933
97013
|
permission: "PERMISSION_ADD",
|
|
96934
97014
|
beforeHandle({ status: status2, body, permissions, publicPermissions }) {
|
|
@@ -96940,7 +97020,7 @@ var permissionRoutes = new Elysia({
|
|
|
96940
97020
|
}
|
|
96941
97021
|
}).group("/group", (app) => app.guard({
|
|
96942
97022
|
permission: "PERMISSION_GROUP_ALL"
|
|
96943
|
-
}).get("/", async ({ query }) => await
|
|
97023
|
+
}).get("/", async ({ query }) => await logic_default5.selectGroups(query), {
|
|
96944
97024
|
query: selectPermissionGroupSchema
|
|
96945
97025
|
}).post("/", async ({ body }) => await groupService.create(body), {
|
|
96946
97026
|
body: createPermissionGroupSchema
|
|
@@ -97078,7 +97158,7 @@ var UserLogic;
|
|
|
97078
97158
|
totalCount: sql`count(*) over()`.mapWith(Number)
|
|
97079
97159
|
}).from(user).where(filter).$dynamic();
|
|
97080
97160
|
const users = await pagination_helper_default(baseQuery, query.pagination);
|
|
97081
|
-
const userPermissions2 = await
|
|
97161
|
+
const userPermissions2 = await logic_default5.selectByUserId(users.map((u) => u.id));
|
|
97082
97162
|
const content = {
|
|
97083
97163
|
totalCount: users[0]?.totalCount ?? 0,
|
|
97084
97164
|
totalPage: users.length === 0 ? 0 : Math.ceil(users[0].totalCount / query.pagination.size)
|
|
@@ -97121,39 +97201,42 @@ var UserLogic;
|
|
|
97121
97201
|
branchId
|
|
97122
97202
|
}
|
|
97123
97203
|
});
|
|
97124
|
-
|
|
97125
|
-
|
|
97126
|
-
|
|
97127
|
-
|
|
97128
|
-
|
|
97129
|
-
|
|
97204
|
+
try {
|
|
97205
|
+
await logic_default5.addPermission({
|
|
97206
|
+
permissions: body.permissions,
|
|
97207
|
+
userId: result.user.id
|
|
97208
|
+
});
|
|
97209
|
+
} catch (err2) {
|
|
97210
|
+
await db_default.delete(user).where(eq(user.id, result.user.id));
|
|
97130
97211
|
}
|
|
97131
97212
|
return result.user;
|
|
97132
97213
|
};
|
|
97133
97214
|
UserLogic.update = async (id, body, user2, permissions) => {
|
|
97134
|
-
|
|
97135
|
-
|
|
97136
|
-
|
|
97137
|
-
|
|
97138
|
-
|
|
97139
|
-
|
|
97140
|
-
|
|
97215
|
+
return await db_default.transaction(async (db2) => {
|
|
97216
|
+
const [updatedUser] = await db2.update(user).set(body).where(and(eq(user.id, id), eq(user.merchantId, user2.merchantId).if(!permissions.some((p) => adminPermissions.includes(p))), eq(user.branchId, user2.branchId).if(!permissions.some((p) => adminPermissions.includes(p)) || permissions.includes("USER_CREATE_ADMIN")))).returning();
|
|
97217
|
+
if (!updatedUser) {
|
|
97218
|
+
return status("Not Found", "\u0425\u044D\u0440\u044D\u0433\u043B\u044D\u0433\u0447 \u043E\u043B\u0434\u0441\u043E\u043D\u0433\u04AF\u0439.");
|
|
97219
|
+
}
|
|
97220
|
+
await logic_default5.addPermission({
|
|
97221
|
+
permissions: body.permissions,
|
|
97222
|
+
userId: updatedUser.id
|
|
97223
|
+
}, db2);
|
|
97224
|
+
return updatedUser;
|
|
97141
97225
|
});
|
|
97142
|
-
return updatedUser;
|
|
97143
97226
|
};
|
|
97144
97227
|
})(UserLogic ||= {});
|
|
97145
|
-
var
|
|
97228
|
+
var logic_default6 = UserLogic;
|
|
97146
97229
|
|
|
97147
97230
|
// src/routes/user/schema.ts
|
|
97148
97231
|
var select4 = createSelectSchema(user);
|
|
97149
|
-
var
|
|
97150
|
-
var
|
|
97232
|
+
var create7 = createInsertSchema(user);
|
|
97233
|
+
var update6 = createUpdateSchema(user);
|
|
97151
97234
|
var selectUserSchema = t.Composite([
|
|
97152
97235
|
PaginationSchema,
|
|
97153
97236
|
t.Partial(t.Pick(select4, ["branchId"]))
|
|
97154
97237
|
]);
|
|
97155
97238
|
var createUserSchema = t.Composite([
|
|
97156
|
-
t.Pick(
|
|
97239
|
+
t.Pick(create7, ["name", "email"]),
|
|
97157
97240
|
t.Object({
|
|
97158
97241
|
password: t.Optional(t.String()),
|
|
97159
97242
|
merchantId: t.Optional(t.String({ format: "uuid" })),
|
|
@@ -97162,7 +97245,7 @@ var createUserSchema = t.Composite([
|
|
|
97162
97245
|
})
|
|
97163
97246
|
]);
|
|
97164
97247
|
var updateUserSchema = t.Composite([
|
|
97165
|
-
t.Omit(
|
|
97248
|
+
t.Omit(update6, ["password"]),
|
|
97166
97249
|
t.Object({
|
|
97167
97250
|
permissions: t.Array(StringEnum(permissionList.map((permission) => permission.code)))
|
|
97168
97251
|
})
|
|
@@ -97174,17 +97257,17 @@ var userRoutes = new Elysia({
|
|
|
97174
97257
|
}).use(better_auth_default).use(permission_default).guard({
|
|
97175
97258
|
auth: true,
|
|
97176
97259
|
tags: ["User"]
|
|
97177
|
-
}).get("/", async ({ query, user: user2, permissions }) =>
|
|
97260
|
+
}).get("/", async ({ query, user: user2, permissions }) => logic_default6.select(query, user2, permissions), {
|
|
97178
97261
|
query: selectUserSchema,
|
|
97179
97262
|
permission: [
|
|
97180
97263
|
"USER_SELECT_BACKOFFICE",
|
|
97181
97264
|
"USER_SELECT_ADMIN",
|
|
97182
97265
|
"USER_SELECT_OWN"
|
|
97183
97266
|
]
|
|
97184
|
-
}).post("/", async ({ body, user: user2, permissions }) =>
|
|
97267
|
+
}).post("/", async ({ body, user: user2, permissions }) => logic_default6.registerUser(body, user2, permissions), {
|
|
97185
97268
|
body: createUserSchema,
|
|
97186
97269
|
permission: ["USER_CREATE_ADMIN", "USER_CREATE_OWN"]
|
|
97187
|
-
}).put("/:id", async ({ body, user: user2, permissions, params: { id } }) =>
|
|
97270
|
+
}).put("/:id", async ({ body, user: user2, permissions, params: { id } }) => logic_default6.update(id, body, user2, permissions), {
|
|
97188
97271
|
body: updateUserSchema,
|
|
97189
97272
|
permission: ["USER_CREATE_ADMIN", "USER_CREATE_OWN"]
|
|
97190
97273
|
});
|
|
@@ -97208,11 +97291,7 @@ var app = new Elysia().use(index_default({
|
|
|
97208
97291
|
paths: await OpenAPI.getPaths(),
|
|
97209
97292
|
tags: swagger_tags_default
|
|
97210
97293
|
}
|
|
97211
|
-
})).use(pino_logger_default).
|
|
97212
|
-
return status(set2.status ?? 500, {
|
|
97213
|
-
error: error2
|
|
97214
|
-
});
|
|
97215
|
-
}).onAfterResponse(async ({ request, response, server, status: status2, set: set2, body, headers }) => {
|
|
97294
|
+
})).use(pino_logger_default).onAfterResponse(async ({ request, response, server, status: status2, set: set2, body, headers }) => {
|
|
97216
97295
|
const log = {
|
|
97217
97296
|
userId: (await auth2.api.getSession({ headers: request.headers }))?.user.id,
|
|
97218
97297
|
request: {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "autosync_backend2",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.76",
|
|
4
4
|
"module": "src/index.ts",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"db:migrate": "bunx --bun drizzle-kit migrate",
|
|
14
14
|
"db:generate": "bunx --bun drizzle-kit generate",
|
|
15
15
|
"biome:check": "bunx biome check --write",
|
|
16
|
-
"email": "email dev --dir src/lib/emails"
|
|
16
|
+
"email": "email dev --dir src/lib/emails",
|
|
17
|
+
"prepare": "husky"
|
|
17
18
|
},
|
|
18
19
|
"dependencies": {
|
|
19
20
|
"@bogeychan/elysia-logger": "^0.1.8",
|
|
@@ -45,6 +46,7 @@
|
|
|
45
46
|
"@types/react-dom": "^19.1.5",
|
|
46
47
|
"bun-types": "latest",
|
|
47
48
|
"drizzle-kit": "^0.31.1",
|
|
49
|
+
"husky": "^9.1.7",
|
|
48
50
|
"react-email": "^4.0.15"
|
|
49
51
|
},
|
|
50
52
|
"files": [
|