class CollectionSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Collection name = ma.String(required=True, validate=Length(min=1)) collaborative = ma.Boolean(required=True) public = ma.Boolean(required=True) owner = ma.Nested(UserSchema)
class ConnectionSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Connection requester = ma.Nested(user_schema) confirmer = ma.Nested(user_schema) last_updated = ma.DateTime(default=datetime.utcnow) user_1_approved = ma.Boolean(default=True) user_2_approved = ma.Boolean(default=False) status = ma.String(default='pending', validate=[OneOf(["pending", "confirmed"])])
class ProfileSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Profile load_only = ["admin"] username = ma.String(required=True, validate=Length(min=1)) fname = ma.String(required=True, validate=Length(min=1)) lname = ma.String(required=True, validate=Length(min=1)) admin = ma.Boolean(required=False) account_active = ma.Boolean(required=True) user = ma.Nested(UserSchema)
class MessageSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Message sender = ma.Nested(user_schema) receiver = ma.Nested(user_schema) content = ma.String(required=True, validate=validate.Length(min=10)) read = ma.Boolean(default=False) liked = ma.Boolean(default=False) sent_time = ma.DateTime(required=True, nullable=False, default=datetime.utcnow)
class PostSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Post post_name = ma.String(required=True, validate=Length(min=5)) post_description = ma.String(required=True, validate=Length(min=5)) account_active = ma.Boolean(required=True) front_end = ma.Boolean(required=True) back_end = ma.Boolean(required=True) full_stack = ma.Boolean(required=True) completed = ma.Boolean(required=True) post_github = ma.String(required=True, validate=Length(min=5)) profile = ma.Nested(ProfileSchema)
class ProfileSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Profiles load_only = ["admin"] username = ma.String(required=True, validate=Length(min=1)) fname = ma.String(required=True, validate=Length(min=1)) lname = ma.String(required=True, validate=Length(min=1)) account_active = ma.Boolean(required=True) github = ma.String(required=False, validate=Length(min=1)) user = ma.Nested(UsersSchema) front_end = ma.Boolean(required=True) back_end = ma.Boolean(required=True) full_stack = ma.Boolean(required=True) admin = ma.Boolean()
class GroupMemberSchema(ma.SQLAlchemyAutoSchema): class Meta: model = GroupMembers profile_id = ma.Integer(required=True) admin = ma.Boolean(required=True) groups = ma.Nested(GroupSchema)
class CategorySchema(ma.SQLAlchemyAutoSchema): class Meta: model = Category title = ma.String(required=True, validate=Length(min=1)) description = ma.String(required=True, validate=Length(min=1)) private = ma.Boolean(required=True)
class EquipmentOrderSchema(ma.SQLAlchemyAutoSchema): class Meta: model = EquipmentOrder order_return_date_estimate = ma.DateTime(required=False) order_actual_return_date = ma.DateTime(required=False) order_active = ma.Boolean(required=True, default=True)
class OrderSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Order date_ordered = ma.Date(format='%Y-%m-%d', missing=datetime.now()) shipped = ma.Boolean(missing=False) shipping = ma.Nested(OrderShippingSchema)
class Meta: model = User load_only = ["password"] email = ma.String(required=True, validate=Length(min=4)) password = ma.String(required=True, validate=Length(min=6)) subscription_status = ma.Boolean(required=False)
class OrderSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Order order_placed = ma.Boolean() cart = ma.List(ma.Integer()) customer = ma.Nested(CustomerSchema(only=("firstname", )))
class UserSchema(ma.SQLAlchemyAutoSchema): class Meta: model = User load_only = ["password", "admin"] email = ma.String(required=True, validate=[Length(min=4), Email()]) password = ma.String(required=True, validate=Length(min=6)) admin = ma.Boolean(missing=False)
class MenuSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Menu title = ma.String(required=True, validate=Length(max=20)) price = ma.Integer(required=False) vegetarian = ma.Boolean(required=False) portion = ma.String(required=False)
class TrackSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Track name = ma.String(required=True, validate=Length(min=1)) track_num = ma.Integer(required=True) disc_num = ma.Integer(required=True) duration_ms = ma.Integer(required=True) explicit = ma.Boolean(required=True) album = ma.Nested(AlbumSchema)
class UsersSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Users username = ma.String(required=True, validate=Length(min=1)) fname = ma.String(required=True, validate=Length(min=1)) lname = ma.String(required=True, validate=Length(min=1)) profile_pic = ma.String(required=False) account_active = ma.Boolean(required=True) account = ma.Nested(AccountsSchema)