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); configureDependencies(); await getIt().initV2(); // ignore: unawaited_futures CronManager([ DeleteOldArchives(), CheckAdminsTask(), TestGeneratorTask(getIt.get()), getIt.get(), AddFreePacks(getIt.get()), Backup(backupDir), GeneratePromocodes(), DiscountCampaignTask(getIt.get()), UpdateOnlineUsersTask(getIt.get()), TasksSeederTask(), ]).init(); }