Move database to seperate package

This commit is contained in:
Elias Projahn 2020-04-24 22:41:52 +02:00
parent 939840d95f
commit 7e25880cc5
28 changed files with 98 additions and 24 deletions

View file

@ -4,8 +4,38 @@ The classical music player and organizer.
https://musicus.org
## Project structure
The top level directories contain the main Musicus packages, of which some
depend on other ones. All packages are written in [Dart](https://dart.dev).
### `database`
A Database of classical music. This package will be used by all standalone
Musicus applications for storing classical music metadata.
### `mobile`
The Musicus mobile app. It is being developed using
[Flutter toolkit](https://flutter.dev) and only runs on Android for now.
### `player`
The simplest possible audio player plugin. This is used by the mobile app for
playback.
## Hacking
Picking up Dart as a programming language and Flutter as an UI toolkit should
be relatively straight forward. You can visit
[this page](https://flutter.dev/docs/get-started/install) to get started with
Flutter. After cloning the Musicus repository, it works best to work at its
subcomponents one at a time. I recommend
[VS Code](https://flutter.dev/docs/get-started/editor?tab=vscode) for editing.
Please contact me via e-mail (see my profile), if you have any questions or
need help. I'm also open to ideas for the future of Musicus! Please use the
issue tracker for them.
You can use the following command to automatically update generated code while
working on Musicus:

31
database/.gitignore vendored Normal file
View file

@ -0,0 +1,31 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# VS Code related
.vscode/
# Flutter/Dart/Pub related
**/*.g.dart
**/doc/api/
.dart_tool/
pubspec.lock
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/

View file

@ -0,0 +1 @@
export 'src/database.dart';

14
database/pubspec.yaml Normal file
View file

@ -0,0 +1,14 @@
name: musicus_database
description: A database for classical music.
version: 0.0.1
environment:
sdk: ">=2.3.0 <3.0.0"
dependencies:
moor:
moor_ffi:
dev_dependencies:
build_runner:
moor_generator:

View file

@ -6,11 +6,11 @@ import 'package:flutter/widgets.dart';
import 'package:moor/isolate.dart';
import 'package:moor/moor.dart';
import 'package:moor_ffi/moor_ffi.dart';
import 'package:musicus_database/musicus_database.dart';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart' as pp;
import 'package:shared_preferences/shared_preferences.dart';
import 'database.dart';
import 'music_library.dart';
import 'player.dart';

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
class EnsembleEditor extends StatefulWidget {
final Ensemble ensemble;

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
class InstrumentEditor extends StatefulWidget {
final Instrument instrument;

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
class PersonEditor extends StatefulWidget {
final Person person;

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
import '../selectors/performer.dart';
import '../selectors/work.dart';
import '../widgets/texts.dart';

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
import '../music_library.dart';
import '../selectors/files.dart';
import '../selectors/recording.dart';

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
import '../selectors/instruments.dart';
import '../selectors/person.dart';

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
import '../editors/tracks.dart';
import 'person.dart';

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
import '../editors/person.dart';
import 'work.dart';

View file

@ -1,9 +1,9 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
import '../music_library.dart';
import '../widgets/play_pause_button.dart';
import '../widgets/recording_tile.dart';

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
import '../editors/work.dart';
import '../widgets/texts.dart';

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
import '../editors/instrument.dart';
class InstrumentsSelector extends StatefulWidget {

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
import '../editors/ensemble.dart';
import '../editors/person.dart';

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
import '../editors/person.dart';
class PersonsSelector extends StatelessWidget {

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
import '../editors/recording.dart';
import '../widgets/texts.dart';
import '../widgets/works_by_composer.dart';

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
import '../editors/work.dart';
// TODO: Lazy load works and/or optimize queries.

View file

@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:musicus/database.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../music_library.dart';

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
import 'texts.dart';

View file

@ -1,9 +1,9 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
class EnsembleText extends StatelessWidget {
final int ensembleId;

View file

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:musicus_database/musicus_database.dart';
import '../backend.dart';
import '../database.dart';
class WorksByComposer extends StatelessWidget {
final int personId;

View file

@ -14,6 +14,8 @@ dependencies:
sdk: flutter
moor:
moor_ffi:
musicus_database:
path: ../database
musicus_player:
path: ../player
path:
@ -21,10 +23,6 @@ dependencies:
rxdart:
shared_preferences:
dev_dependencies:
build_runner:
moor_generator:
flutter:
uses-material-design: true
fonts: