Skip to content

Commit 6a4a0bb

Browse files
committed
Dealership with engine embedded in car document.
1 parent 2bdbf9e commit 6a4a0bb

File tree

5 files changed

+64
-1
lines changed

5 files changed

+64
-1
lines changed

Diff for: .gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -106,3 +106,4 @@ src/07_mongoengine/service_central/.idea/misc.xml
106106
src/07_mongoengine/service_central/.idea/modules.xml
107107
src/07_mongoengine/service_central/.idea/service_central.iml
108108
src/07_mongoengine/service_central/.idea/inspectionProfiles/profiles_settings.xml
109+
screencaster.xml

Diff for: src/07_mongoengine/service_central/nosql/car.py

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import uuid
2+
import mongoengine
3+
4+
from nosql.engine import Engine
5+
6+
7+
class Car(mongoengine.Document):
8+
model = mongoengine.StringField(required=True)
9+
make = mongoengine.StringField(required=True)
10+
year = mongoengine.IntField(required=True)
11+
mileage = mongoengine.FloatField(default=0.0)
12+
vi_number = mongoengine.StringField(
13+
default=lambda: str(uuid.uuid4()).replace('-', ''))
14+
15+
engine = mongoengine.EmbeddedDocumentField(Engine, required=True)
16+
17+
meta = {
18+
'db_alias': 'core',
19+
'collection': 'cars',
20+
}

Diff for: src/07_mongoengine/service_central/nosql/engine.py

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import uuid
2+
import mongoengine
3+
4+
5+
class Engine(mongoengine.EmbeddedDocument):
6+
horsepower = mongoengine.IntField(required=True)
7+
liters = mongoengine.FloatField(required=True)
8+
mpg = mongoengine.FloatField(required=True)
9+
serial_number = mongoengine.StringField(
10+
default=lambda: str(uuid.uuid4())
11+
)
+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import mongoengine
2+
3+
4+
def global_init():
5+
mongoengine.register_connection(alias='core', name='demo_dealership')

Diff for: src/07_mongoengine/service_central/service_app.py

+27-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
1+
import nosql.mongo_setup as mongo_setup
2+
from nosql.car import Car
3+
from nosql.engine import Engine
4+
5+
16
def main():
27
print_header()
8+
config_mongo()
39
user_loop()
410

511

@@ -13,6 +19,10 @@ def print_header():
1319
print()
1420

1521

22+
def config_mongo():
23+
mongo_setup.global_init()
24+
25+
1626
def user_loop():
1727
while True:
1828
print("Available actions:")
@@ -37,7 +47,23 @@ def user_loop():
3747

3848

3949
def add_car():
40-
print("TODO: add_car")
50+
model = input("What is the model? ")
51+
make = 'Ferrari' # input("What is the make? ")
52+
year = int(input("Year built? "))
53+
54+
car = Car()
55+
car.year = year
56+
car.make = make
57+
car.model = model
58+
59+
engine = Engine()
60+
engine.horsepower = 590
61+
engine.mpg = 22
62+
engine.liters = 4.0
63+
64+
car.engine = engine
65+
66+
car.save()
4167

4268

4369
def list_cars():

0 commit comments

Comments
 (0)