43 lines
1.6 KiB
Python
43 lines
1.6 KiB
Python
from app.models.user import db
|
|
from datetime import datetime
|
|
|
|
|
|
class Category(db.Model):
|
|
__tablename__ = 'categories'
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
name = db.Column(db.String(64), nullable=False)
|
|
parent_id = db.Column(db.Integer, db.ForeignKey('categories.id'), nullable=True)
|
|
sort = db.Column(db.Integer, default=0)
|
|
|
|
# 关系 - 只保留与自身的关系
|
|
parent = db.relationship('Category', remote_side=[id], backref='children')
|
|
|
|
def __repr__(self):
|
|
return f'<Category {self.name}>'
|
|
|
|
|
|
class Book(db.Model):
|
|
__tablename__ = 'books'
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
title = db.Column(db.String(255), nullable=False)
|
|
author = db.Column(db.String(128), nullable=False)
|
|
publisher = db.Column(db.String(128), nullable=True)
|
|
category_id = db.Column(db.Integer, db.ForeignKey('categories.id'), nullable=True)
|
|
tags = db.Column(db.String(255), nullable=True)
|
|
isbn = db.Column(db.String(32), unique=True, nullable=True)
|
|
publish_year = db.Column(db.String(16), nullable=True)
|
|
description = db.Column(db.Text, nullable=True)
|
|
cover_url = db.Column(db.String(255), nullable=True)
|
|
stock = db.Column(db.Integer, default=0)
|
|
price = db.Column(db.Numeric(10, 2), nullable=True)
|
|
status = db.Column(db.Integer, default=1) # 1:可用, 0:不可用
|
|
created_at = db.Column(db.DateTime, nullable=False, default=datetime.now)
|
|
updated_at = db.Column(db.DateTime, nullable=False, default=datetime.now)
|
|
|
|
# 移除所有关系引用
|
|
|
|
def __repr__(self):
|
|
return f'<Book {self.title}>'
|