diff --git a/lib/server/titamaapi.dart b/lib/server/titamaapi.dart index 7a1293b..5dac42a 100644 --- a/lib/server/titamaapi.dart +++ b/lib/server/titamaapi.dart @@ -3,6 +3,7 @@ library titama.server; import 'package:rpc/rpc.dart'; import '../common/messages.dart'; +import './titamaio.dart'; @ApiClass(version: 'v1') class TitamaApi { @@ -56,6 +57,9 @@ class TitamaApi { @ApiMethod(method: 'DELETE', path: 'course/{id}') List deleteCourse(int id) { _courses.removeWhere((course) => course.id == id); + + new TitamaIo().writeJson(_courses); + return _courses; } @@ -64,6 +68,8 @@ class TitamaApi { newCourse.id = _courses.length; _courses.add(newCourse); + new TitamaIo().writeJson(_courses); + return newCourse; } @@ -72,6 +78,9 @@ class TitamaApi { course.id = id; int index = _courses.indexOf(_courses.singleWhere((crs) => crs.id == id)); _courses.replaceRange(index, index + 1, [course]); + + new TitamaIo().writeJson(_courses); + return course; } } diff --git a/lib/server/titamaio.dart b/lib/server/titamaio.dart new file mode 100644 index 0000000..0dec2e3 --- /dev/null +++ b/lib/server/titamaio.dart @@ -0,0 +1,24 @@ +library titama.io; + +import 'dart:io'; +import 'dart:convert'; + +import '../common/messages.dart'; + +/** + * Class for writing and loading the courses as JSON to a file. + */ +class TitamaIo { + + final _filename = "./data.json"; + + /** + * Write courses as JSON in a file.k + * @param List _course List of courses to save. + */ + writeJson(List _courses) async { + String _json = JSON.encode(_courses); + await new File(_filename).writeAsString(_json); + } + +}