@@ -10,6 +10,8 @@ abstract class DAO<T> {
1010
1111 Resource toResource (T t);
1212
13+ T create (Resource resource);
14+
1315 T fetchById (String id) => _collection[id];
1416
1517 void insert (T t); // => collection[t.id] = t;
@@ -18,30 +20,43 @@ abstract class DAO<T> {
1820 _collection.values.skip (offset).take (limit);
1921}
2022
21- class CarDAO extends DAO <Car > {
22- Resource toResource (Car _) =>
23- Resource ('cars' , _.id, attributes: {'name' : _.name});
23+ class ModelDAO extends DAO <Model > {
24+ Resource toResource (Model _) =>
25+ Resource ('models' , _.id, attributes: {'name' : _.name});
26+
27+ void insert (Model model) => _collection[model.id] = model;
2428
25- void insert (Car car) => _collection[car.id] = car;
29+ Model create (Resource r) {
30+ return Model (r.id, r.attributes['name' ]);
31+ }
2632}
2733
2834class CityDAO extends DAO <City > {
2935 Resource toResource (City _) =>
3036 Resource ('cities' , _.id, attributes: {'name' : _.name});
3137
3238 void insert (City city) => _collection[city.id] = city;
39+
40+ City create (Resource r) {
41+ return City (r.id, r.attributes['name' ]);
42+ }
3343}
3444
35- class BrandDAO extends DAO <Brand > {
36- Resource toResource (Brand brand) => Resource ('brands' , brand.id, attributes: {
37- 'name' : brand.name
45+ class CompanyDAO extends DAO <Company > {
46+ Resource toResource (Company company) =>
47+ Resource ('companies' , company.id, attributes: {
48+ 'name' : company.name
3849 }, toOne: {
39- 'hq' : brand .headquarters == null
50+ 'hq' : company .headquarters == null
4051 ? null
41- : Identifier ('cities' , brand .headquarters)
52+ : Identifier ('cities' , company .headquarters)
4253 }, toMany: {
43- 'models' : brand .models.map ((_) => Identifier ('cars ' , _)).toList ()
54+ 'models' : company .models.map ((_) => Identifier ('models ' , _)).toList ()
4455 });
4556
46- void insert (Brand brand) => _collection[brand.id] = brand;
57+ void insert (Company company) => _collection[company.id] = company;
58+
59+ Company create (Resource r) {
60+ return Company (r.id, r.attributes['name' ]);
61+ }
4762}
0 commit comments