mnemo_cards/mnemo_cards_backend/lib/main.dart

87 lines
2.7 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(List<String> args) async {
// WidgetsFlutterBinding.ensureInitialized();
// final dir = (await getApplicationDocumentsDirectory()).path;
final dir =
args.contains('--isar') ? args[args.indexOf('--isar') + 1] : 'isar';
final backupDir = args.contains('--backup')
? args[args.indexOf('--backup') + 1]
: '../mnemo_cards_telegram_bot/backups/';
WORK_DIR = args.contains('--workdir')
? args[args.indexOf('--workdir') + 1]
: '/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);
isar = await IsarConnector().connect(
dir: dir,
name: 'db',
inspector: args.contains('--debug'),
);
getIt.registerSingleton<Isar>(isar);
configureDependencies();
await getIt<MnemoShelf>().initV2(args);
// 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();
}