autosync_backend2 1.0.74 → 1.0.75
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 +2 -1
- package/dist/index.js +55 -41
- 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: {};
|
|
@@ -1317,7 +1318,7 @@ declare const app: Elysia<"", {
|
|
|
1317
1318
|
200: AsyncGenerator<{
|
|
1318
1319
|
percent: number;
|
|
1319
1320
|
status: string;
|
|
1320
|
-
},
|
|
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;
|
package/dist/index.js
CHANGED
|
@@ -95937,8 +95937,8 @@ var version2 = XLSX.version;
|
|
|
95937
95937
|
// src/routes/inventory/log/logic.ts
|
|
95938
95938
|
var InventoryLogLogic;
|
|
95939
95939
|
((InventoryLogLogic) => {
|
|
95940
|
-
InventoryLogLogic.select = async (query) => {
|
|
95941
|
-
const filter = and(
|
|
95940
|
+
InventoryLogLogic.select = async (query, user2) => {
|
|
95941
|
+
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
95942
|
const columns = getTableColumns(inventoryLogTable);
|
|
95943
95943
|
const base = db_default.select({
|
|
95944
95944
|
...columns,
|
|
@@ -95980,7 +95980,7 @@ var InventoryLogLogic;
|
|
|
95980
95980
|
});
|
|
95981
95981
|
};
|
|
95982
95982
|
})(InventoryLogLogic ||= {});
|
|
95983
|
-
var
|
|
95983
|
+
var logic_default2 = InventoryLogLogic;
|
|
95984
95984
|
|
|
95985
95985
|
// node_modules/drizzle-typebox/index.mjs
|
|
95986
95986
|
var CONSTANTS = {
|
|
@@ -96300,7 +96300,8 @@ var selectInventoryItemSchema = t.Composite([
|
|
|
96300
96300
|
PaginationSchema
|
|
96301
96301
|
]);
|
|
96302
96302
|
var importInventoryItemSchema = t.Object({
|
|
96303
|
-
file: t.File()
|
|
96303
|
+
file: t.File(),
|
|
96304
|
+
branchId: t.Optional(t.String({ format: "uuid" }))
|
|
96304
96305
|
});
|
|
96305
96306
|
|
|
96306
96307
|
// src/routes/inventory/item/logic.ts
|
|
@@ -96339,7 +96340,7 @@ var InventoryItemLogic;
|
|
|
96339
96340
|
merchantId: body.merchantId ?? user2.merchantId
|
|
96340
96341
|
}).returning();
|
|
96341
96342
|
if (body.quantity) {
|
|
96342
|
-
await
|
|
96343
|
+
await logic_default2.create({
|
|
96343
96344
|
itemId: inventoryItem.id,
|
|
96344
96345
|
quantity: body.quantity,
|
|
96345
96346
|
description: "\u0413\u0430\u0440\u0430\u0430\u0440 \u0431\u0430\u0440\u0430\u0430 \u043D\u044D\u043C\u0441\u044D\u043D.",
|
|
@@ -96364,21 +96365,27 @@ var InventoryItemLogic;
|
|
|
96364
96365
|
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
96366
|
}
|
|
96366
96367
|
};
|
|
96367
|
-
InventoryItemLogic.importExcel = async function* ({ file }, user2) {
|
|
96368
|
+
InventoryItemLogic.importExcel = async function* ({ file, branchId }, user2) {
|
|
96368
96369
|
const BATCH_SIZE = 1000;
|
|
96369
96370
|
const buffer = await file.arrayBuffer();
|
|
96370
96371
|
const workbook = readSync(buffer, { type: "buffer" });
|
|
96371
96372
|
const sheetName = workbook.SheetNames[0];
|
|
96372
96373
|
const sheet = workbook.Sheets[sheetName];
|
|
96373
96374
|
const rows = utils.sheet_to_json(sheet, { defval: null });
|
|
96374
|
-
|
|
96375
|
+
let parsed = [];
|
|
96376
|
+
const validator = TypeCompiler.Compile(t.Array(createInventoryItemSchema));
|
|
96377
|
+
if (validator.Check(rows)) {
|
|
96378
|
+
parsed = rows;
|
|
96379
|
+
} else {
|
|
96380
|
+
return status("Bad Request", [...validator.Errors(rows)]);
|
|
96381
|
+
}
|
|
96375
96382
|
for (let i2 = 0;i2 < parsed.length; i2 += BATCH_SIZE) {
|
|
96376
96383
|
const batch = parsed.slice(i2, i2 + BATCH_SIZE);
|
|
96377
96384
|
if (batch.length !== 0) {
|
|
96378
96385
|
await db_default.insert(inventoryItemTable).values(batch.map((item) => ({
|
|
96379
96386
|
...item,
|
|
96380
|
-
branchId:
|
|
96381
|
-
merchantId:
|
|
96387
|
+
branchId: branchId ?? user2.branchId,
|
|
96388
|
+
merchantId: user2.merchantId
|
|
96382
96389
|
})));
|
|
96383
96390
|
yield {
|
|
96384
96391
|
percent: Math.round(batch.length / parsed.length * 100),
|
|
@@ -96406,7 +96413,7 @@ var InventoryItemLogic;
|
|
|
96406
96413
|
if (!currentInventory) {
|
|
96407
96414
|
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
96415
|
}
|
|
96409
|
-
await
|
|
96416
|
+
await logic_default2.create({
|
|
96410
96417
|
itemId: input.id,
|
|
96411
96418
|
quantity: input.quantity,
|
|
96412
96419
|
description: input.description,
|
|
@@ -96417,7 +96424,7 @@ var InventoryItemLogic;
|
|
|
96417
96424
|
}).where(eq(inventoryItemTable.id, input.id));
|
|
96418
96425
|
};
|
|
96419
96426
|
})(InventoryItemLogic ||= {});
|
|
96420
|
-
var
|
|
96427
|
+
var logic_default = InventoryItemLogic;
|
|
96421
96428
|
|
|
96422
96429
|
// src/routes/inventory/item/index.ts
|
|
96423
96430
|
var itemRoutes = new Elysia({
|
|
@@ -96425,7 +96432,7 @@ var itemRoutes = new Elysia({
|
|
|
96425
96432
|
}).use(better_auth_default).use(permission_default).guard({
|
|
96426
96433
|
auth: true,
|
|
96427
96434
|
tags: ["InventoryItem"]
|
|
96428
|
-
}).get("/", async ({ query, user: user2 }) => await
|
|
96435
|
+
}).get("/", async ({ query, user: user2 }) => await logic_default.select(query, user2), {
|
|
96429
96436
|
query: selectInventoryItemSchema,
|
|
96430
96437
|
permission: ["INVENTORY_ITEM_SELECT_OWN", "INVENTORY_ITEM_SELECT_ADMIN"],
|
|
96431
96438
|
beforeHandle({ status: status2, query, permissions }) {
|
|
@@ -96433,7 +96440,7 @@ var itemRoutes = new Elysia({
|
|
|
96433
96440
|
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
96441
|
}
|
|
96435
96442
|
}
|
|
96436
|
-
}).post("/", async ({ body, user: user2 }) => await
|
|
96443
|
+
}).post("/", async ({ body, user: user2 }) => await logic_default.create(body, user2), {
|
|
96437
96444
|
body: createInventoryItemSchema,
|
|
96438
96445
|
permission: ["INVENTORY_ITEM_CREATE_OWN", "INVENTORY_ITEM_CREATE_ADMIN"],
|
|
96439
96446
|
beforeHandle({ status: status2, body, permissions }) {
|
|
@@ -96441,15 +96448,23 @@ var itemRoutes = new Elysia({
|
|
|
96441
96448
|
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
96449
|
}
|
|
96443
96450
|
}
|
|
96444
|
-
}).post("/excel", async ({ body, user: user2 }) =>
|
|
96451
|
+
}).post("/excel", async ({ body, user: user2 }) => logic_default.importExcel(body, user2), {
|
|
96445
96452
|
body: importInventoryItemSchema,
|
|
96446
|
-
permission: ["INVENTORY_ITEM_CREATE_OWN", "INVENTORY_ITEM_CREATE_ADMIN"]
|
|
96453
|
+
permission: ["INVENTORY_ITEM_CREATE_OWN", "INVENTORY_ITEM_CREATE_ADMIN"],
|
|
96454
|
+
beforeHandle: ({ permissions, body: { branchId } }) => {
|
|
96455
|
+
if (!permissions.includes("INVENTORY_ITEM_CREATE_ADMIN") && branchId) {
|
|
96456
|
+
return {
|
|
96457
|
+
status: "Forbidden",
|
|
96458
|
+
message: "\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."
|
|
96459
|
+
};
|
|
96460
|
+
}
|
|
96461
|
+
}
|
|
96447
96462
|
}).get("/excel", async () => "").guard({
|
|
96448
96463
|
params: IdSchema
|
|
96449
|
-
}).put("/:id", async ({ params: { id }, body, user: user2, permissions }) => await
|
|
96464
|
+
}).put("/:id", async ({ params: { id }, body, user: user2, permissions }) => await logic_default.update(id, body, user2, permissions), {
|
|
96450
96465
|
body: updateInventoryItemSchema,
|
|
96451
96466
|
permission: ["INVENTORY_ITEM_UPDATE_OWN", "INVENTORY_ITEM_UPDATE_ADMIN"]
|
|
96452
|
-
}).delete("/:id", async ({ params: { id }, user: user2, permissions }) => await
|
|
96467
|
+
}).delete("/:id", async ({ params: { id }, user: user2, permissions }) => await logic_default.remove(id, user2, permissions), {
|
|
96453
96468
|
permission: ["INVENTORY_ITEM_DELETE_OWN", "INVENTORY_ITEM_DELETE_ADMIN"]
|
|
96454
96469
|
});
|
|
96455
96470
|
var item_default = itemRoutes;
|
|
@@ -96466,7 +96481,7 @@ var selectInventoryLogSchema = t.Composite([
|
|
|
96466
96481
|
// src/routes/inventory/log/index.ts
|
|
96467
96482
|
var logRoutes = new Elysia({
|
|
96468
96483
|
prefix: "/log"
|
|
96469
|
-
}).use(better_auth_default).use(permission_default).guard({ auth: true, tags: ["InventoryLog"] }).get("/", ({ query }) =>
|
|
96484
|
+
}).use(better_auth_default).use(permission_default).guard({ auth: true, tags: ["InventoryLog"] }).get("/", ({ query, user: user2 }) => logic_default2.select(query, user2), {
|
|
96470
96485
|
query: selectInventoryLogSchema,
|
|
96471
96486
|
permission: ["INVENTORY_LOG_SELECT_OWN", "INVENTORY_LOG_SELECT_ADMIN"],
|
|
96472
96487
|
beforeHandle({ status: status2, query, permissions }) {
|
|
@@ -96864,13 +96879,13 @@ var permissionList = localPermissionList;
|
|
|
96864
96879
|
// src/routes/permission/logic.ts
|
|
96865
96880
|
var PermissionLogic;
|
|
96866
96881
|
((PermissionLogic) => {
|
|
96867
|
-
PermissionLogic.addPermission = async (body) => {
|
|
96882
|
+
PermissionLogic.addPermission = async (body, tdb = db_default) => {
|
|
96868
96883
|
const insert = body.permissions.map((permission) => ({
|
|
96869
96884
|
userId: body.userId,
|
|
96870
96885
|
code: permission
|
|
96871
96886
|
}));
|
|
96872
|
-
await
|
|
96873
|
-
await
|
|
96887
|
+
await tdb.delete(permissionTable).where(eq(permissionTable.userId, body.userId));
|
|
96888
|
+
await tdb.insert(permissionTable).values(insert);
|
|
96874
96889
|
};
|
|
96875
96890
|
PermissionLogic.selectGroups = async (query) => {
|
|
96876
96891
|
const columns = getTableColumns(permissionGroupTable);
|
|
@@ -97121,25 +97136,28 @@ var UserLogic;
|
|
|
97121
97136
|
branchId
|
|
97122
97137
|
}
|
|
97123
97138
|
});
|
|
97124
|
-
|
|
97125
|
-
|
|
97126
|
-
|
|
97127
|
-
|
|
97128
|
-
|
|
97129
|
-
|
|
97139
|
+
try {
|
|
97140
|
+
await logic_default4.addPermission({
|
|
97141
|
+
permissions: body.permissions,
|
|
97142
|
+
userId: result.user.id
|
|
97143
|
+
});
|
|
97144
|
+
} catch (err2) {
|
|
97145
|
+
await db_default.delete(user).where(eq(user.id, result.user.id));
|
|
97130
97146
|
}
|
|
97131
97147
|
return result.user;
|
|
97132
97148
|
};
|
|
97133
97149
|
UserLogic.update = async (id, body, user2, permissions) => {
|
|
97134
|
-
|
|
97135
|
-
|
|
97136
|
-
|
|
97137
|
-
|
|
97138
|
-
|
|
97139
|
-
|
|
97140
|
-
|
|
97150
|
+
return await db_default.transaction(async (db2) => {
|
|
97151
|
+
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();
|
|
97152
|
+
if (!updatedUser) {
|
|
97153
|
+
return status("Not Found", "\u0425\u044D\u0440\u044D\u0433\u043B\u044D\u0433\u0447 \u043E\u043B\u0434\u0441\u043E\u043D\u0433\u04AF\u0439.");
|
|
97154
|
+
}
|
|
97155
|
+
await logic_default4.addPermission({
|
|
97156
|
+
permissions: body.permissions,
|
|
97157
|
+
userId: updatedUser.id
|
|
97158
|
+
}, db2);
|
|
97159
|
+
return updatedUser;
|
|
97141
97160
|
});
|
|
97142
|
-
return updatedUser;
|
|
97143
97161
|
};
|
|
97144
97162
|
})(UserLogic ||= {});
|
|
97145
97163
|
var logic_default5 = UserLogic;
|
|
@@ -97208,11 +97226,7 @@ var app = new Elysia().use(index_default({
|
|
|
97208
97226
|
paths: await OpenAPI.getPaths(),
|
|
97209
97227
|
tags: swagger_tags_default
|
|
97210
97228
|
}
|
|
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 }) => {
|
|
97229
|
+
})).use(pino_logger_default).onAfterResponse(async ({ request, response, server, status: status3, set: set2, body, headers }) => {
|
|
97216
97230
|
const log = {
|
|
97217
97231
|
userId: (await auth2.api.getSession({ headers: request.headers }))?.user.id,
|
|
97218
97232
|
request: {
|
|
@@ -97224,7 +97238,7 @@ var app = new Elysia().use(index_default({
|
|
|
97224
97238
|
method: request.method,
|
|
97225
97239
|
path: request.url,
|
|
97226
97240
|
statusCode: set2.status?.toString() ?? "200",
|
|
97227
|
-
error:
|
|
97241
|
+
error: status3
|
|
97228
97242
|
};
|
|
97229
97243
|
await db_default.insert(logTable).values(log);
|
|
97230
97244
|
}).mount(auth2.handler).use(routes_default).listen(env_default.PORT);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "autosync_backend2",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.75",
|
|
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": [
|