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 | # import sys | ||||||
| from PySide6.QtGui import QGuiApplication | # from PySide6.QtGui import QGuiApplication | ||||||
| from PySide6.QtQml import QQmlApplicationEngine | # from PySide6.QtQml import QQmlApplicationEngine | ||||||
| 
 | 
 | ||||||
| if __name__ == "__main__": | # if __name__ == "__main__": | ||||||
|     app = QGuiApplication(sys.argv) | #     app = QGuiApplication(sys.argv) | ||||||
|     engine = QQmlApplicationEngine() | #     engine = QQmlApplicationEngine() | ||||||
|     engine.addImportPath(sys.path[0]) | #     engine.addImportPath(sys.path[0]) | ||||||
|     engine.loadFromModule("ui", "Main") | #     engine.loadFromModule("ui", "Main") | ||||||
|     if not engine.rootObjects(): | #     if not engine.rootObjects(): | ||||||
|         sys.exit(-1) | #         sys.exit(-1) | ||||||
|     exit_code = app.exec() | #     exit_code = app.exec() | ||||||
|     del engine | #     del engine | ||||||
|     sys.exit(exit_code) | #     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.orm import relationship | ||||||
| from sqlalchemy.ext.declarative import declarative_base | from sqlalchemy.ext.declarative import declarative_base | ||||||
| 
 | 
 | ||||||
| from .book import Book |  | ||||||
| 
 |  | ||||||
| Base = declarative_base() | Base = declarative_base() | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -11,7 +9,7 @@ class Author(Base): | |||||||
|     __tablename__  = 'author' |     __tablename__  = 'author' | ||||||
|     __table_args__ = (UniqueConstraint('id'),) |     __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) |     first_name   = Column(String(50), nullable=False) | ||||||
|     last_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 | 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.orm import relationship | ||||||
| from sqlalchemy.ext.declarative import declarative_base | from sqlalchemy.ext.declarative import declarative_base | ||||||
| 
 | 
 | ||||||
| @ -19,14 +19,14 @@ class Book(Base): | |||||||
|     __tablename__  = 'book' |     __tablename__  = 'book' | ||||||
|     __table_args__ = (UniqueConstraint('isbn'),) |     __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) |     author_id      = Column(Integer, ForeignKey('author.id'), nullable=False) | ||||||
|     title          = Column(String(100), nullable=False) |     title          = Column(String(100), nullable=False) | ||||||
|     description    = Column(Text, nullable=False) |     description    = Column(Text, nullable=False) | ||||||
|     year_published = Column(String(4), nullable=False) |     year_published = Column(String(4), nullable=False) | ||||||
|     isbn           = Column(String(13), nullable=False, unique=True) |     isbn           = Column(String(13), nullable=False, unique=True) | ||||||
|     status         = Column(Enum(BookStatusEnum), nullable=False, default=BookStatusEnum.available) |     status         = Column(Enum(BookStatusEnum), nullable=False, default=BookStatusEnum.available) | ||||||
|     created_at     = Column(TIMESTAMP, nullable=False, default='CURRENT_TIMESTAMP()') |     created_at     = Column(TIMESTAMP, nullable=False, server_default=func.now()) | ||||||
|     last_updated   = Column(TIMESTAMP, nullable=False, default='CURRENT_TIMESTAMP()') |     last_updated   = Column(TIMESTAMP, nullable=False, server_default=func.now()) | ||||||
| 
 | 
 | ||||||
|     author = relationship('Author', backref='books') |     author = relationship('Author', backref='books') | ||||||
|  | |||||||
| @ -1,5 +1,4 @@ | |||||||
| from .book import Book | from sqlalchemy import Column, Integer, String, TIMESTAMP, ForeignKey, UniqueConstraint, func | ||||||
| from sqlalchemy import Column, Integer, String, TIMESTAMP, ForeignKey, UniqueConstraint |  | ||||||
| from sqlalchemy.orm import relationship | from sqlalchemy.orm import relationship | ||||||
| from sqlalchemy.ext.declarative import declarative_base | from sqlalchemy.ext.declarative import declarative_base | ||||||
| 
 | 
 | ||||||
| @ -10,10 +9,10 @@ class BookCategory(Base): | |||||||
|     __tablename__  = 'book_category' |     __tablename__  = 'book_category' | ||||||
|     __table_args__ = (UniqueConstraint('name'),) |     __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) |     parent_category_id = Column(Integer, ForeignKey('book_category.id'), nullable=True) | ||||||
|     name               = Column(String(100), nullable=False) |     name               = Column(String(100), nullable=False) | ||||||
|     mature_content     = Column(Integer, nullable=False, default=0) |     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]) |     parent_category = relationship('BookCategory', remote_side=[id]) | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| import enum | 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.orm import relationship | ||||||
| from sqlalchemy.ext.declarative import declarative_base | from sqlalchemy.ext.declarative import declarative_base | ||||||
| 
 | 
 | ||||||
| @ -21,12 +21,12 @@ class Librarian(Base): | |||||||
|     __tablename__  = 'librarian' |     __tablename__  = 'librarian' | ||||||
|     __table_args__ = (UniqueConstraint('id'),) |     __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) |     first_name   = Column(String(50), nullable=False) | ||||||
|     last_name    = Column(String(50), nullable=False) |     last_name    = Column(String(50), nullable=False) | ||||||
|     email        = Column(String(100), nullable=False, unique=True) |     email        = Column(String(100), nullable=False, unique=True) | ||||||
|     phone        = Column(String(20), nullable=False) |     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) |     status       = Column(Enum(LibrarianStatusEnum), nullable=False, default=LibrarianStatusEnum.active) | ||||||
|     role         = Column(Enum(LibrarianRoleEnum), nullable=False) |     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 | 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.orm import relationship | ||||||
| from sqlalchemy.ext.declarative import declarative_base | from sqlalchemy.ext.declarative import declarative_base | ||||||
| 
 | 
 | ||||||
| @ -22,16 +22,16 @@ class Loan(Base): | |||||||
|     __tablename__  = 'loan' |     __tablename__  = 'loan' | ||||||
|     __table_args__ = (UniqueConstraint('id'),) |     __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) |     book_id      = Column(Integer, ForeignKey('book.id'), nullable=False) | ||||||
|     member_id    = Column(Integer, ForeignKey('member.id'), nullable=False) |     member_id    = Column(Integer, ForeignKey('member.id'), nullable=False) | ||||||
|     librarian_id = Column(Integer, ForeignKey('librarian.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) |     due_date     = Column(TIMESTAMP, nullable=False) | ||||||
|     return_date  = Column(TIMESTAMP, nullable=True) |     return_date  = Column(TIMESTAMP, nullable=True) | ||||||
|     status       = Column(Enum(LoanStatusEnum), nullable=False, default=LoanStatusEnum.borrowed) |     status       = Column(Enum(LoanStatusEnum), nullable=False, default=LoanStatusEnum.borrowed) | ||||||
|     overdue_fee  = Column(Float, nullable=True) |     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') |     book      = relationship('Book', backref='loans') | ||||||
|     member    = relationship('Member', backref='loans') |     member    = relationship('Member', backref='loans') | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| import enum | 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.orm import relationship | ||||||
| from sqlalchemy.ext.declarative import declarative_base | from sqlalchemy.ext.declarative import declarative_base | ||||||
| 
 | 
 | ||||||
| @ -14,11 +14,11 @@ class Member(Base): | |||||||
|     __tablename__  = 'member' |     __tablename__  = 'member' | ||||||
|     __table_args__ = (UniqueConstraint('id'),) |     __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) |     first_name    = Column(String(50), nullable=False) | ||||||
|     last_name     = Column(String(50), nullable=False) |     last_name     = Column(String(50), nullable=False) | ||||||
|     email         = Column(String(100), nullable=False, unique=True) |     email         = Column(String(100), nullable=False, unique=True) | ||||||
|     phone         = Column(String(20), nullable=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) |     status        = Column(Enum(MemberStatusEnum), nullable=True, default=MemberStatusEnum.active) | ||||||
|     last_updated  = Column(TIMESTAMP, nullable=True) |     last_updated  = Column(TIMESTAMP, nullable=True) | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user