-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathseed.py
65 lines (56 loc) · 2.52 KB
/
seed.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
from faker import Faker
from faker_commerce import Provider as CommerceProvider
from datetime import datetime
from catalog_microservice.infra.utils.generate_uuid import generate_uuid
from catalog_microservice.infra.database.settings.connection import DBConnectionHandler
from catalog_microservice.infra.database.entities.categorys import Categories
from catalog_microservice.infra.database.entities.products import Products
class SeedCatalog:
def __init__(self) -> None:
self.__faker = Faker()
self.__faker.add_provider(CommerceProvider)
self.__connection = DBConnectionHandler()
self.__categories = []
self.__products = []
def __enter__(self):
self.__connection.__enter__()
self.__connection.session.query(Products).delete()
self.__connection.session.query(Categories).delete()
return self
def __exit__(self, exc_type, exc_val, exc_tb):
self.__connection.__exit__(exc_type, exc_val, exc_tb)
def create_category(self, amount: int):
for _ in range(amount):
self.__categories.append(
Categories(
id = generate_uuid(),
name = self.__faker.ecommerce_category(),
description = self.__faker.catch_phrase(),
created_at = datetime.now(),
updated_at = datetime.now()
)
)
def create_product(self, amount: int):
for _ in range(amount):
self.__products.append(
Products(
id = generate_uuid(),
name = self.__faker.ecommerce_name(),
description = self.__faker.catch_phrase(),
price = self.__faker.random_number(2),
stock = self.__faker.random_number(2),
category_id = self.__faker.random_element(self.__categories).id,
created_at = datetime.now(),
updated_at = datetime.now()
)
)
def seed_all(self, amount_categories: int, amount_products: int):
self.create_category(amount_categories)
self.create_product(amount_products)
self.__connection.session.add_all(self.__categories)
self.__connection.session.add_all(self.__products)
self.__connection.session.commit()
print('Data seeded successfully!')
if __name__ == '__main__':
with SeedCatalog() as seed:
seed.seed_all(10, 50)