class PostLikeSchema(ma.SQLAlchemyAutoSchema): class Meta: model = PostLike post = ma.Nested(PostSchema) user = ma.Nested(UserSchema) created_at = ma.DateTime()
class TrackSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Tracks trackname = ma.String() artist = ma.Nested(ArtistSchema) mood = ma.Nested(MoodSchema) trackurl = ma.String()
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 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 GroupSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Group name = ma.String(required=True, validate=Length(min=1)) description = ma.String() content = ma.Nested(contents_schema)
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 ProductSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Product title = ma.String(required=True, validate=Length(min=1)) price = ma.Number(required=True, validate=Range(0, 1000000)) store = ma.Nested(StoreSchema(only=("storename", )))
class GroupMemberSchema(ma.SQLAlchemyAutoSchema): class Meta: model = GroupMembers profile_id = ma.Integer(required=True) admin = ma.Boolean(required=True) groups = ma.Nested(GroupSchema)
class ExampleSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Example title = ma.String(required=True, validate=Length( min=1)) # This is declaring a required data type on the title column user = ma.Nested(UserSchema) # Each example must have a user
class BookSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Book title = ma.String(required=True, validate=Length(min=1)) author = ma.String() user = ma.Nested(UserSchema)
class OrderSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Order order_placed = ma.Boolean() cart = ma.List(ma.Integer()) customer = ma.Nested(CustomerSchema(only=("firstname", )))
class RecipeSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Recipe recipe_name = ma.String(required=True, validate=Length(max=40)) description = ma.String(required=True, validate=Length(max=40)) recipe_image = ma.String(required=False, validate=Length(min=1)) user = ma.Nested(UserSchema)
class StoreSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Store storename = ma.String(validate=Length(min=1)) firstname = ma.String(validate=Length(min=1)) lastname = ma.String(validate=Length(min=1)) user = ma.Nested(UserSchema)
class FavPizzaSchema(ma.SQLAlchemyAutoSchema): class Meta: model = FavPizza fav_pizza_id = ma.Integer(required=True) user_id = ma.Integer(required=True) pizza_id = ma.Integer(required=True) user = ma.Nested(UserSchema)
class ProfileSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Profile username = ma.String(required=True, validate=Length(min=1)) # username is required and the minimum length is 1 firstname = ma.String(required=True, validate=Length(min=1)) # first_name is required and the minimum length is 1 lastname = ma.String(required=True, validate=Length(min=1)) # last_name is required and the minimum length is 1 user = ma.Nested(UserSchema) # Nesting the user schema in the profile Schema
class FavFriendsSchema(ma.SQLAlchemyAutoSchema): class Meta: model = FavFriends fav_friends_id = ma.Integer(required=True) user_id = ma.Integer(required=True) friend_id = ma.Integer(required=True) user = ma.Nested(UserSchema)
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)) profile = ma.Nested(ProfileSchema)
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 ProfileSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Profile username = ma.String(required=True, validate=Length(min=1)) firstname = ma.String(required=True, validate=Length(min=1)) lastname = ma.String(required=True, validate=Length(min=1)) user = ma.Nested(UserSchema)
class ResumeProjectSchema(ma.SQLAlchemyAutoSchema): class Meta: model = ResumeProject resume_path = ma.String(required=True) github_account = ma.Url(required=True) last_updated = ma.DateTime(required=True) user = ma.Nested(user_schema)
class LikesSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Likes likes_id = ma.Integer(required=True) comment_id = ma.Integer(required=True) user_id = ma.Integer(required=True) likes = ma.String(required=True) user = ma.Nested(UserSchema)
class CustomerSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Customer firstname = ma.String(required=True, validate=Length(min=1)) lastname = ma.String(required=True, validate=Length(min=1)) email = ma.String(required=True, validate=Length(min=1)) phone = ma.String(validate=Length(min=1)) store = ma.Nested(StoreSchema(only=("storename", )))
class CommentsSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Comments comment_id = ma.Integer(required=True) pizza_id = ma.Integer(required=True) user_id = ma.Integer(required=True) comment = ma.String(required=True) user = ma.Nested(UserSchema)
class PizzaRatingSchema(ma.SQLAlchemyAutoSchema): class Meta: model = PizzaRating rating_id = ma.Integer(required=True) pizza_id = ma.Integer(required=True) user_id = ma.Integer(required=True) user_rating = ma.Integer(required=True) user = ma.Nested(UserSchema)
class BookSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Book title = ma.String(required=True, validate=Length( min=1)) # This is declaring a required data type on the title column user = ma.Nested( UserSchema ) # 'Attaches' the user tot he book. So when we look up the book it shows the authors data too
class LeagueSchema(ma.SQLAlchemyAutoSchema): # Generates Schema automatically class Meta: model = League # Generate Schema using the Profile Model title = ma.String(required=True, validate=Length( min=1)) # username is required and the minimum length is 1 description = ma.String(required=True, validate=Length( min=1)) # first_name is required and the minimum length is 1 user = ma.Nested(UserSchema)
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 ProfileSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Profiles 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) user = ma.Nested(UsersSchema)
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)
class PostSchema(ma.SQLAlchemyAutoSchema): class Meta: model = Post caption = ma.String() created_at = ma.DateTime() updated_at = ma.DateTime() total_likes = ma.Integer() total_dislikes = ma.Integer() total_comments = ma.Integer() user = ma.Nested(UserSchema)