source_gen

This commit is contained in:
thosakwe 2016-12-31 11:17:19 -05:00
parent 4ad42ae682
commit 3c8cab050e
6 changed files with 40 additions and 22 deletions

3
.gitignore vendored
View file

@ -2,6 +2,9 @@
### Dart template ### Dart template
# See https://www.dartlang.org/tools/private-files.html # See https://www.dartlang.org/tools/private-files.html
# source_gen
*.g.dart
# Files and directories created by pub # Files and directories created by pub
.buildlog .buildlog
.packages .packages

View file

@ -1,14 +1,26 @@
library angel.models.user; library angel.models.user;
import 'dart:convert';
import 'package:angel_mongo/model.dart'; import 'package:angel_mongo/model.dart';
import 'package:source_gen/generators/json_serializable.dart';
class User extends Model { part 'user.g.dart';
@JsonSerializable()
class User extends Model with _$UserSerializerMixin {
@JsonKey('email')
String email; String email;
@JsonKey('username')
String username; String username;
@JsonKey('password')
String password; String password;
@JsonKey('roles')
final List<String> roles = []; final List<String> roles = [];
factory User.fromJson(Map json) => _$UserFromJson(json);
User( User(
{String id, {String id,
this.email, this.email,
@ -16,28 +28,9 @@ class User extends Model {
this.password, this.password,
List<String> roles: const []}) { List<String> roles: const []}) {
this.id = id; this.id = id;
if (roles != null) { if (roles != null) {
this.roles.addAll(roles); this.roles.addAll(roles);
} }
} }
factory User.fromJson(String json) => new User.fromMap(JSON.decode(json));
factory User.fromMap(Map data) => new User(
id: data['id'],
email: data['email'],
username: data['username'],
password: data['password'],
roles: data['roles']);
Map toJson() {
return {
'id': id,
'email': email,
'username': username,
'password': password,
'roles': roles
};
}
} }

View file

@ -11,8 +11,10 @@ dependencies:
mailer: ^1.1.0+4 mailer: ^1.1.0+4
validate: ^1.5.2 validate: ^1.5.2
dev_dependencies: dev_dependencies:
build_runner: ^0.1.1
grinder: ^0.8.0+2 grinder: ^0.8.0+2
http: ^0.11.3 http: ^0.11.3
source_gen: ^0.5.2
test: ^0.12.13 test: ^0.12.13
transformers: transformers:
- angel_configuration - angel_configuration

4
tool/build.dart Normal file
View file

@ -0,0 +1,4 @@
import 'package:build_runner/build_runner.dart';
import 'phases.dart';
main() => build(PHASES, deleteFilesByDefault: true);

12
tool/phases.dart Normal file
View file

@ -0,0 +1,12 @@
import 'package:build_runner/build_runner.dart';
import 'package:source_gen/builder.dart';
import 'package:source_gen/generators/json_serializable_generator.dart';
final PhaseGroup PHASES = new PhaseGroup.singleAction(
new GeneratorBuilder(const [const JsonSerializableGenerator()]),
new InputSet('angel', const [
'bin/**/*.dart',
'lib/**/*.dart',
'views/**/*.dart',
'web/**/*.dart'
]));

4
tool/watch.dart Normal file
View file

@ -0,0 +1,4 @@
import 'package:build_runner/build_runner.dart';
import 'phases.dart';
main() => watch(PHASES, deleteFilesByDefault: true);