-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinitiate_database.py
122 lines (100 loc) · 3.54 KB
/
initiate_database.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
"""
Creates the database themehospitals.db.
"""
from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from sqlalchemy import create_engine
# Creates an instance of the declarative_base class
Base = declarative_base()
class User(Base):
"""
Defines table User and its parameters.
Parameters: id (int), name, gender, email, type, picture (string).
"""
# Sets table name
__tablename__ = 'user'
# Define columns
id = Column(Integer, primary_key=True)
name = Column(String(250), nullable=False)
gender = Column(String(250), nullable=False)
email = Column(String(250), nullable=False)
type = Column(String(250), nullable=False)
picture = Column(String(250))
# Creates a serialization property to be used on the API endopoint
@property
def serialize(self):
return {
'name': self.name,
'id': self.id,
'gender': self.gender,
'email': self.email,
'picture': self.picture,
'type': self.type,
}
class Hospital(Base):
"""
Defines table Hospital and its parameters.
Parameters: id, user_id (int); name, accepted_insurance, address, phone (string). # noqa
Relationship: User.
"""
# Sets table name
__tablename__ = 'hospital'
# Define columns
id = Column(Integer, primary_key=True)
name = Column(String(250), nullable=False)
accepted_insurance = Column(String(250), nullable=False)
address = Column(String(250), nullable=False)
phone = Column(String(250), nullable=False)
user_id = Column(Integer, ForeignKey('user.id'))
user = relationship(User)
# Creates a serialization property to be used on the API endopoint
@property
def serialize(self):
return {
'name': self.name,
'id': self.id,
'accepted_insurance': self.accepted_insurance,
'address': self.address,
'phone': self.phone,
'owner id': self.user_id,
}
class Condition(Base):
"""
Defines table Condition and its parameters.
Parameters: id, user_id, hospital_id (int); name, cause, sympton, cure, type, cost (string). # noqa
Relationship: User, Hospital
"""
# Sets table name
__tablename__ = 'condition'
# Define columns
id = Column(Integer, primary_key=True)
name = Column(String(250), nullable=False)
cause = Column(String(250), nullable=False)
sympton = Column(String(250), nullable=False)
cure = Column(String(250), nullable=False)
type = Column(String(250), nullable=False)
cost = Column(String(250), nullable=False)
hospital_id = Column(Integer, ForeignKey('hospital.id'))
hospital = relationship(Hospital)
user_id = Column(Integer, ForeignKey('user.id'))
user = relationship(User)
# Creates a serialization property to be used on the API endopoint
@property
def serialize(self):
return {
'name': self.name,
'id': self.id,
'cause': self.cause,
'sympton': self.sympton,
'cure': self.cure,
'type': self.type,
'cost': self.cost,
'hospital id': self.hospital_id,
'hospital owner id': self.user_id,
}
# Initiates an engine for the databases
engine = create_engine('sqlite:///themehospitals.db')
# Bind the engine to the metadata of the Base class to access the
# declaratives in a DBSession instance
Base.metadata.create_all(engine)