Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c8d8aad8c3 | ||
|
|
1c17501476 |
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "telegram-shop-bot",
|
||||
"version": "1.0.1",
|
||||
"version": "1.0.2",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"test": "vitest run",
|
||||
|
||||
@@ -5,7 +5,13 @@ import { dirname } from 'path';
|
||||
import { pathToFileURL } from 'url';
|
||||
|
||||
const __dirname = dirname(fileURLToPath(import.meta.url));
|
||||
const DB_PATH = new URL('../../db/shop.db', import.meta.url).pathname;
|
||||
// Путь к БД: env SHOP_DB_PATH (для единой БД с админкой) → по умолчанию ../db/shop.db.
|
||||
// Рассинхрон: админка (Next.js/Prisma) писала в custom.db, бот — в shop.db → товары,
|
||||
// добавленные в админке, не были видны боту. Оба должны использовать ОДИН файл.
|
||||
const DB_PATH =
|
||||
process.env.SHOP_DB_PATH && process.env.SHOP_DB_PATH !== 'false'
|
||||
? process.env.SHOP_DB_PATH
|
||||
: new URL('../../db/shop.db', import.meta.url).pathname;
|
||||
|
||||
let betterDb;
|
||||
|
||||
|
||||
@@ -55,7 +55,10 @@ export async function getCommissionWallets() {
|
||||
|
||||
/**
|
||||
* Check if the shop is activated.
|
||||
* Reads site_settings.shop_activated; falls back to env SHOP_ACTIVATED !== 'false' (default true).
|
||||
* Приоритет: env SHOP_ACTIVATED (единый источник — панель Bbox) → БД site_settings.
|
||||
* Раньше БД была первичной, и смена «Магазин активирован» в панели (env) не
|
||||
* влияла на бота (в БД оставалось старое значение) — рассинхрон «пишет true,
|
||||
* а бот говорит not activated». Теперь env главный; БД — зеркало-фоллбэк.
|
||||
* @returns {Promise<boolean>}
|
||||
*/
|
||||
export async function getShopActivated() {
|
||||
@@ -64,25 +67,26 @@ export async function getShopActivated() {
|
||||
return shopActivatedCache;
|
||||
}
|
||||
|
||||
try {
|
||||
const row = await db.getAsync(
|
||||
"SELECT value FROM site_settings WHERE key = 'shop_activated'"
|
||||
);
|
||||
|
||||
let activated;
|
||||
if (row) {
|
||||
activated = row.value !== 'false';
|
||||
} else {
|
||||
activated = process.env.SHOP_ACTIVATED !== 'false';
|
||||
let activated;
|
||||
// 1. env (панель Bbox / compose) — единый источник правды
|
||||
if (process.env.SHOP_ACTIVATED !== undefined) {
|
||||
activated = process.env.SHOP_ACTIVATED !== 'false';
|
||||
} else {
|
||||
// 2. БД site_settings (админка магазина может вести туда же)
|
||||
try {
|
||||
const row = await db.getAsync(
|
||||
"SELECT value FROM site_settings WHERE key = 'shop_activated'"
|
||||
);
|
||||
activated = row ? row.value !== 'false' : true;
|
||||
} catch (err) {
|
||||
logger.error({ err }, 'Failed to read shop_activated from site_settings');
|
||||
activated = true;
|
||||
}
|
||||
|
||||
shopActivatedCache = activated;
|
||||
shopActivatedCachedAt = now;
|
||||
return activated;
|
||||
} catch (err) {
|
||||
logger.error({ err }, 'Failed to read shop_activated from site_settings');
|
||||
return process.env.SHOP_ACTIVATED !== 'false';
|
||||
}
|
||||
|
||||
shopActivatedCache = activated;
|
||||
shopActivatedCachedAt = now;
|
||||
return activated;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user