Compare commits
3 Commits
98d39bba2e
...
d242e4ff68
Author | SHA1 | Date | |
---|---|---|---|
d242e4ff68 | |||
76465636ee | |||
1e36c2d966 |
BIN
db/Model.mwb
BIN
db/Model.mwb
Binary file not shown.
68
src/app.py
68
src/app.py
@ -1,14 +1,56 @@
|
||||
import sys
|
||||
from PySide6.QtGui import QGuiApplication
|
||||
from PySide6.QtQml import QQmlApplicationEngine
|
||||
# import sys
|
||||
# from PySide6.QtGui import QGuiApplication
|
||||
# from PySide6.QtQml import QQmlApplicationEngine
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = QGuiApplication(sys.argv)
|
||||
engine = QQmlApplicationEngine()
|
||||
engine.addImportPath(sys.path[0])
|
||||
engine.loadFromModule("ui", "Main")
|
||||
if not engine.rootObjects():
|
||||
sys.exit(-1)
|
||||
exit_code = app.exec()
|
||||
del engine
|
||||
sys.exit(exit_code)
|
||||
# if __name__ == "__main__":
|
||||
# app = QGuiApplication(sys.argv)
|
||||
# engine = QQmlApplicationEngine()
|
||||
# engine.addImportPath(sys.path[0])
|
||||
# engine.loadFromModule("ui", "Main")
|
||||
# if not engine.rootObjects():
|
||||
# sys.exit(-1)
|
||||
# exit_code = app.exec()
|
||||
# del engine
|
||||
# sys.exit(exit_code)
|
||||
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
|
||||
from models.book import Book, BookStatusEnum
|
||||
from models.author import Author
|
||||
|
||||
# Replace with your MySQL database credentials
|
||||
DATABASE_URI = 'mysql+mysqlconnector://username:password@localhost:3306/library'
|
||||
|
||||
# Create the engine
|
||||
engine = create_engine(DATABASE_URI, echo=True)
|
||||
|
||||
# Create a configured session class
|
||||
SessionLocal = sessionmaker(bind=engine)
|
||||
|
||||
# Create a session instance
|
||||
session = SessionLocal()
|
||||
|
||||
new_author = Author(first_name="John", last_name="Doe")
|
||||
|
||||
session.add(new_author)
|
||||
session.commit()
|
||||
|
||||
new_book = Book(
|
||||
title="Sample Book",
|
||||
description="A fascinating tale.",
|
||||
year_published="2023",
|
||||
isbn="1234567890123",
|
||||
status='available',
|
||||
author_id=new_author.id
|
||||
)
|
||||
|
||||
session.add(new_book)
|
||||
session.commit()
|
||||
|
||||
books = session.query(Book).all()
|
||||
for book in books:
|
||||
print(book.title, book.author.first_name)
|
||||
|
||||
session.close()
|
@ -0,0 +1,7 @@
|
||||
from .author import Author
|
||||
from .book_category import BookCategory
|
||||
from .book import Book
|
||||
from .book_category_link import BookCategoryLink
|
||||
from .member import Member
|
||||
from .librarian import Librarian
|
||||
from .loan import Loan
|
@ -1,9 +1,7 @@
|
||||
from sqlalchemy import Column, Integer, String, TIMESTAMP, UniqueConstraint
|
||||
from sqlalchemy import Column, Integer, String, TIMESTAMP, UniqueConstraint, func
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
|
||||
from .book import Book
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
|
||||
@ -11,7 +9,7 @@ class Author(Base):
|
||||
__tablename__ = 'author'
|
||||
__table_args__ = (UniqueConstraint('id'),)
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
first_name = Column(String(50), nullable=False)
|
||||
last_name = Column(String(50), nullable=False)
|
||||
last_updated = Column(TIMESTAMP, nullable=False, default='CURRENT_TIMESTAMP()')
|
||||
last_updated = Column(TIMESTAMP, nullable=False, server_default=func.now())
|
||||
|
@ -1,6 +1,6 @@
|
||||
import enum
|
||||
|
||||
from sqlalchemy import Column, Integer, String, TIMESTAMP, Text, ForeignKey, Enum, UniqueConstraint
|
||||
from sqlalchemy import Column, Integer, String, TIMESTAMP, Text, ForeignKey, Enum, UniqueConstraint, func
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
|
||||
@ -19,14 +19,14 @@ class Book(Base):
|
||||
__tablename__ = 'book'
|
||||
__table_args__ = (UniqueConstraint('isbn'),)
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
author_id = Column(Integer, ForeignKey('author.id'), nullable=False)
|
||||
title = Column(String(100), nullable=False)
|
||||
description = Column(Text, nullable=False)
|
||||
year_published = Column(String(4), nullable=False)
|
||||
isbn = Column(String(13), nullable=False, unique=True)
|
||||
status = Column(Enum(BookStatusEnum), nullable=False, default=BookStatusEnum.available)
|
||||
created_at = Column(TIMESTAMP, nullable=False, default='CURRENT_TIMESTAMP()')
|
||||
last_updated = Column(TIMESTAMP, nullable=False, default='CURRENT_TIMESTAMP()')
|
||||
created_at = Column(TIMESTAMP, nullable=False, server_default=func.now())
|
||||
last_updated = Column(TIMESTAMP, nullable=False, server_default=func.now())
|
||||
|
||||
author = relationship('Author', backref='books')
|
||||
|
@ -1,5 +1,4 @@
|
||||
from .book import Book
|
||||
from sqlalchemy import Column, Integer, String, TIMESTAMP, ForeignKey, UniqueConstraint
|
||||
from sqlalchemy import Column, Integer, String, TIMESTAMP, ForeignKey, UniqueConstraint, func
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
|
||||
@ -10,10 +9,10 @@ class BookCategory(Base):
|
||||
__tablename__ = 'book_category'
|
||||
__table_args__ = (UniqueConstraint('name'),)
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
parent_category_id = Column(Integer, ForeignKey('book_category.id'), nullable=True)
|
||||
name = Column(String(100), nullable=False)
|
||||
mature_content = Column(Integer, nullable=False, default=0)
|
||||
last_updated = Column(TIMESTAMP, nullable=False, default='CURRENT_TIMESTAMP()')
|
||||
last_updated = Column(TIMESTAMP, nullable=False, server_default=func.now())
|
||||
|
||||
parent_category = relationship('BookCategory', remote_side=[id])
|
||||
|
@ -1,6 +1,6 @@
|
||||
import enum
|
||||
|
||||
from sqlalchemy import Column, Integer, String, TIMESTAMP, Text, ForeignKey, Enum, UniqueConstraint
|
||||
from sqlalchemy import Column, Integer, String, TIMESTAMP, Text, ForeignKey, Enum, UniqueConstraint, func
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
|
||||
@ -21,12 +21,12 @@ class Librarian(Base):
|
||||
__tablename__ = 'librarian'
|
||||
__table_args__ = (UniqueConstraint('id'),)
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
first_name = Column(String(50), nullable=False)
|
||||
last_name = Column(String(50), nullable=False)
|
||||
email = Column(String(100), nullable=False, unique=True)
|
||||
phone = Column(String(20), nullable=False)
|
||||
hire_date = Column(TIMESTAMP, nullable=False, default='CURRENT_TIMESTAMP()')
|
||||
hire_date = Column(TIMESTAMP, nullable=False, server_default=func.now())
|
||||
status = Column(Enum(LibrarianStatusEnum), nullable=False, default=LibrarianStatusEnum.active)
|
||||
role = Column(Enum(LibrarianRoleEnum), nullable=False)
|
||||
last_updated = Column(TIMESTAMP, nullable=False, default='CURRENT_TIMESTAMP()')
|
||||
last_updated = Column(TIMESTAMP, nullable=False, server_default=func.now())
|
||||
|
@ -1,6 +1,6 @@
|
||||
import enum
|
||||
|
||||
from sqlalchemy import Column, Integer, String, TIMESTAMP, Text, ForeignKey, Enum, UniqueConstraint, Float
|
||||
from sqlalchemy import Column, Integer, String, TIMESTAMP, Text, ForeignKey, Enum, UniqueConstraint, Float, func
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
|
||||
@ -22,16 +22,16 @@ class Loan(Base):
|
||||
__tablename__ = 'loan'
|
||||
__table_args__ = (UniqueConstraint('id'),)
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
book_id = Column(Integer, ForeignKey('book.id'), nullable=False)
|
||||
member_id = Column(Integer, ForeignKey('member.id'), nullable=False)
|
||||
librarian_id = Column(Integer, ForeignKey('librarian.id'), nullable=False)
|
||||
loan_date = Column(TIMESTAMP, nullable=False, default='CURRENT_TIMESTAMP()')
|
||||
loan_date = Column(TIMESTAMP, nullable=False, server_default=func.now())
|
||||
due_date = Column(TIMESTAMP, nullable=False)
|
||||
return_date = Column(TIMESTAMP, nullable=True)
|
||||
status = Column(Enum(LoanStatusEnum), nullable=False, default=LoanStatusEnum.borrowed)
|
||||
overdue_fee = Column(Float, nullable=True)
|
||||
last_updated = Column(TIMESTAMP, nullable=False, default='CURRENT_TIMESTAMP()')
|
||||
last_updated = Column(TIMESTAMP, nullable=False, server_default=func.now())
|
||||
|
||||
book = relationship('Book', backref='loans')
|
||||
member = relationship('Member', backref='loans')
|
||||
|
@ -1,6 +1,6 @@
|
||||
import enum
|
||||
|
||||
from sqlalchemy import Column, Integer, String, TIMESTAMP, Text, ForeignKey, Enum, UniqueConstraint
|
||||
from sqlalchemy import Column, Integer, String, TIMESTAMP, Text, ForeignKey, Enum, UniqueConstraint, func
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
|
||||
@ -14,11 +14,11 @@ class Member(Base):
|
||||
__tablename__ = 'member'
|
||||
__table_args__ = (UniqueConstraint('id'),)
|
||||
|
||||
id = Column(Integer, primary_key=True)
|
||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||
first_name = Column(String(50), nullable=False)
|
||||
last_name = Column(String(50), nullable=False)
|
||||
email = Column(String(100), nullable=False, unique=True)
|
||||
phone = Column(String(20), nullable=True)
|
||||
register_date = Column(TIMESTAMP, nullable=True, default='CURRENT_TIMESTAMP()')
|
||||
register_date = Column(TIMESTAMP, nullable=True, server_default=func.now())
|
||||
status = Column(Enum(MemberStatusEnum), nullable=True, default=MemberStatusEnum.active)
|
||||
last_updated = Column(TIMESTAMP, nullable=True)
|
Loading…
x
Reference in New Issue
Block a user