002-product.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import pathlib
  2. current = pathlib.Path(__file__).parent
  3. root = current.parent
  4. import sys
  5. sys.path.append(str(root))
  6. import assets
  7. import sqlmodel
  8. def drop_database() -> None:
  9. db = pathlib.Path("./002-product.db")
  10. if db.is_file():
  11. db.unlink()
  12. drop_database()
  13. connection = sqlmodel.create_engine("sqlite:///002-product.db")
  14. sqlmodel.SQLModel.metadata.create_all(connection)
  15. builder = assets.product_factory()
  16. builder.name = "Sample name"
  17. builder.author = "Simple UwU Artist"
  18. builder.description = "This is simple description"
  19. builder.barcode = "123456789012"
  20. product = builder.result
  21. print("Create first product:")
  22. print(product)
  23. print()
  24. with assets.product_loader(connection) as loader:
  25. print("Inserting product...")
  26. loader.store(product)
  27. print("Inserted:")
  28. print(product)
  29. print()
  30. with assets.product_loader(connection) as loader:
  31. print("Get by name:")
  32. print(loader.get_by_name("Sample name"))
  33. print()
  34. print("Get by barcode:")
  35. print(loader.get_by_barcode("123456789012"))
  36. print()
  37. with assets.product_loader(connection) as loader:
  38. print("Updating:")
  39. builder = assets.product_factory(loader.get_by_barcode("123456789012"))
  40. builder.stock_count = 200
  41. product = builder.result
  42. loader.store(product)
  43. print("After update:")
  44. print(loader.get_by_barcode("123456789012"))
  45. print()
  46. with assets.product_loader(connection) as loader:
  47. print("Get from stock:")
  48. builder = assets.product_factory(loader.get_by_barcode("123456789012"))
  49. builder.get_from_stock()
  50. product = builder.result
  51. loader.store(product)
  52. print(loader.get_by_barcode("123456789012"))
  53. print()
  54. with assets.product_loader(connection) as loader:
  55. print("Delete from database:")
  56. loader.drop(product)
  57. print(loader.get_by_barcode("123456789012"))
  58. print()
  59. drop_database()