22
33from flask import Flask
44
5- from time_tracker_api .database import DATABASE_TYPE , CRUDDao
5+ from time_tracker_api .database import CRUDDao
66from time_tracker_api .sql_repository import SQLCRUDDao , AuditedSQLModel , SQLModel
77
88
@@ -20,66 +20,24 @@ class ProjectDao(CRUDDao):
2020
2121
2222def create_dao (app : Flask ) -> ProjectDao :
23- if app .config ['DATABASE' ] == DATABASE_TYPE .SQL :
24- from time_tracker_api .sql_repository import db
23+ from time_tracker_api .sql_repository import db
2524
26- class ProjectSQLModel (db .Model , SQLModel , AuditedSQLModel ):
27- __tablename__ = 'projects'
28- id = db .Column (db .Integer , primary_key = True )
29- name = db .Column (db .String (50 ), unique = True , nullable = False )
30- description = db .Column (db .String (250 ), unique = False , nullable = False )
31- type = db .Column (db .String (10 ), nullable = False )
32- active = db .Column (db .Boolean , default = True )
25+ class ProjectSQLModel (db .Model , SQLModel , AuditedSQLModel ):
26+ __tablename__ = 'projects'
27+ id = db .Column (db .Integer , primary_key = True )
28+ name = db .Column (db .String (50 ), unique = True , nullable = False )
29+ description = db .Column (db .String (250 ), unique = False , nullable = False )
30+ type = db .Column (db .String (10 ), nullable = False )
31+ active = db .Column (db .Boolean , default = True )
3332
34- def __repr__ (self ):
35- return '<Project %r>' % self .name
33+ def __repr__ (self ):
34+ return '<Project %r>' % self .name
3635
37- def __str___ (self ):
38- return "the project \" %s\" " % self .name
36+ def __str___ (self ):
37+ return "the project \" %s\" " % self .name
3938
40- class ProjectSQLDao (SQLCRUDDao ):
41- def __init__ (self ):
42- SQLCRUDDao .__init__ (self , ProjectSQLModel )
39+ class ProjectSQLDao (SQLCRUDDao ):
40+ def __init__ (self ):
41+ SQLCRUDDao .__init__ (self , ProjectSQLModel )
4342
44- return ProjectSQLDao ()
45- else :
46- """
47- This is legacy, just to make clear how multiple database strategies can be supported
48- with the current design/architecture.
49- """
50- from time_tracker_api .errors import MissingResource
51-
52- class ProjectInMemoryDAO (object ):
53- def __init__ (self ):
54- self .counter = 0
55- self .projects = []
56-
57- def get_all (self ):
58- return self .projects
59-
60- def get (self , id ):
61- for project in self .projects :
62- if project .get ('id' ) == id :
63- return project
64- raise MissingResource ("Project '%s' not found" % id )
65-
66- def create (self , project ):
67- self .counter += 1
68- project ['id' ] = str (self .counter )
69- self .projects .append (project )
70- return project
71-
72- def update (self , id , data ):
73- project = self .get (id )
74- if project :
75- project .update (data )
76- return project
77- else :
78- raise MissingResource ("Project '%s' not found" % id )
79-
80- def delete (self , id ):
81- if id :
82- project = self .get (id )
83- self .projects .remove (project )
84-
85- return ProjectInMemoryDAO ()
43+ return ProjectSQLDao ()
0 commit comments