Some checks are pending
Backend CI / test (push) Waiting to run
Backend CI / build (push) Blocked by required conditions
Deploy Mnemo Cards / Deploy Backend (push) Waiting to run
Deploy Mnemo Cards / Deploy Web App (push) Blocked by required conditions
Deploy Mnemo Cards / Final Verification (push) Blocked by required conditions
93 lines
2.9 KiB
Dart
93 lines
2.9 KiB
Dart
import 'dart:developer';
|
|
import 'dart:io';
|
|
|
|
import 'package:isar/isar.dart';
|
|
import 'package:mnemo_cards_backend/api/mnemo_shelf.dart';
|
|
import 'package:mnemo_cards_backend/cron/add_free_packs.dart';
|
|
import 'package:mnemo_cards_backend/cron/backup.dart';
|
|
import 'package:mnemo_cards_backend/cron/cron_executor.dart';
|
|
import 'package:mnemo_cards_backend/cron/generate_promocodes.dart';
|
|
import 'package:mnemo_cards_backend/discounts/discounts_manager.dart';
|
|
import 'package:mnemo_cards_backend/user/user_manager.dart';
|
|
import 'package:mnemo_cards_common_backend/mnemo_cards_common_backend.dart';
|
|
import 'package:mnemo_cards_backend/tests/test_manager.dart';
|
|
|
|
import 'api/di/injector.dart';
|
|
import 'cron/check_admins.dart';
|
|
import 'cron/check_payment.dart';
|
|
import 'cron/delete_old_archives.dart';
|
|
import 'cron/discount_campaign_task.dart';
|
|
import 'cron/tasks_seeder.dart';
|
|
import 'cron/test_generator.dart';
|
|
import 'cron/update_online_users.dart';
|
|
import 'packs/free_packs_distributor.dart';
|
|
|
|
late Isar isar;
|
|
|
|
late final String WORK_DIR;
|
|
|
|
void main() async {
|
|
// WidgetsFlutterBinding.ensureInitialized();
|
|
// final dir = (await getApplicationDocumentsDirectory()).path;
|
|
|
|
// Чтение переменных окружения вместо CLI аргументов
|
|
final dir = Platform.environment['ISAR_DIR'] ?? 'isar';
|
|
final backupDir = Platform.environment['BACKUP_DIR'] ??
|
|
'../mnemo_cards_telegram_bot/backups/';
|
|
WORK_DIR = Platform.environment['WORK_DIR'] ?? '/root/mnemo_cards_backend';
|
|
|
|
print(
|
|
'running server in ${(await Process.run('pwd', [], runInShell: true)).stdout}',
|
|
);
|
|
|
|
// For rustore payments
|
|
final rustoreEnabled = false;
|
|
if (rustoreEnabled) {
|
|
final pythonInit = await Process.run(
|
|
workingDirectory: WORK_DIR,
|
|
'./prepare_python.sh',
|
|
[],
|
|
runInShell: true,
|
|
);
|
|
print(pythonInit.stdout);
|
|
print(pythonInit.stderr);
|
|
// if (pythonInit.stderr != null) {
|
|
// throw Exception('Not inited');
|
|
// }
|
|
} else {
|
|
log('\n\n*******\nRUSTORE IS DISABLED\n******\n\n', level: 1000);
|
|
}
|
|
|
|
// await Isar.initializeIsarCore(download: true);
|
|
final debugMode = Platform.environment['DEBUG'] == 'true' ||
|
|
Platform.environment['DEBUG'] == '1';
|
|
|
|
isar = await IsarConnector().connect(
|
|
dir: dir,
|
|
name: 'db',
|
|
inspector: debugMode,
|
|
);
|
|
getIt.registerSingleton<Isar>(isar);
|
|
configureDependencies();
|
|
await getIt<MnemoShelf>().initV2();
|
|
|
|
// ignore: unawaited_futures
|
|
CronManager([
|
|
DeleteOldArchives(),
|
|
CheckAdminsTask(),
|
|
TestGeneratorTask(getIt.get<TestManager>()),
|
|
getIt.get<CheckPaymentTask>(),
|
|
AddFreePacks(getIt.get<FreePacksDistributor>()),
|
|
Backup(backupDir),
|
|
GeneratePromocodes(),
|
|
DiscountCampaignTask(getIt.get<DiscountsManager>()),
|
|
UpdateOnlineUsersTask(getIt.get<UserManager>()),
|
|
TasksSeederTask(),
|
|
]).init();
|
|
|
|
|
|
ProcessSignal.sigterm.watch().listen((signal) async {
|
|
await isar.close();
|
|
exit(0);
|
|
});
|
|
}
|