musicus_mobile/server/lib/src/server.dart

64 lines
2 KiB
Dart
Raw Normal View History

2020-04-25 13:21:38 +02:00
import 'dart:io';
import 'package:aqueduct/aqueduct.dart';
import 'package:moor_ffi/moor_ffi.dart';
import 'package:musicus_database/musicus_database.dart';
import 'auth.dart';
2020-04-25 13:21:38 +02:00
import 'compositions.dart';
import 'configuration.dart';
import 'database.dart';
2020-04-25 13:21:38 +02:00
import 'ensembles.dart';
import 'instruments.dart';
import 'persons.dart';
import 'recordings.dart';
import 'works.dart';
import 'work_recordings.dart';
2020-04-25 13:21:38 +02:00
class MusicusServer extends ApplicationChannel {
Database db;
ServerDatabase serverDb;
String secret;
2020-04-25 13:21:38 +02:00
@override
Future<void> prepare() async {
final config = MusicusServerConfiguration(options.configurationFilePath);
if (config.dbPath != null) {
db = Database(VmDatabase(File(config.dbPath)));
} else {
db = Database(VmDatabase.memory());
}
if (config.serverDbPath != null) {
serverDb = ServerDatabase(VmDatabase(File(config.serverDbPath)));
} else {
serverDb = ServerDatabase(VmDatabase.memory());
}
secret = config.secret;
2020-04-25 13:21:38 +02:00
}
@override
Controller get entryPoint => Router()
..route('/login').link(() => LoginController(serverDb, secret))
..route('/register').link(() => RegisterController(serverDb))
..route('/persons/[:id]')
.link(() => AuthorizationController(serverDb, secret))
.link(() => PersonsController(db))
2020-04-25 13:21:38 +02:00
..route('/persons/:id/works').link(() => CompositionsController(db))
..route('/instruments/[:id]')
.link(() => AuthorizationController(serverDb, secret))
.link(() => InstrumentsController(db))
..route('/works/:id')
.link(() => AuthorizationController(serverDb, secret))
.link(() => WorksController(db))
2020-04-25 13:21:38 +02:00
..route('/works/:id/recordings').link(() => WorkRecordingsController(db))
..route('/ensembles/[:id]')
.link(() => AuthorizationController(serverDb, secret))
.link(() => EnsemblesController(db))
..route('/recordings/:id')
.link(() => AuthorizationController(serverDb, secret))
.link(() => RecordingsController(db));
2020-04-25 13:21:38 +02:00
}