mirror of
https://github.com/Michatec/MiniFaceBook.git
synced 2026-03-31 23:46:30 +02:00
Files
This commit is contained in:
137
models.py
Normal file
137
models.py
Normal file
@@ -0,0 +1,137 @@
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
from flask_login import UserMixin
|
||||
from datetime import datetime
|
||||
|
||||
db = SQLAlchemy()
|
||||
|
||||
class User(UserMixin, db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
username = db.Column(db.String(150), unique=True, nullable=False)
|
||||
email = db.Column(db.String(150), unique=True, nullable=False)
|
||||
password = db.Column(db.String(150), nullable=False)
|
||||
created_at = db.Column(db.DateTime, default=datetime.now)
|
||||
is_admin = db.Column(db.Boolean, default=False)
|
||||
is_owner = db.Column(db.Boolean, default=False)
|
||||
profile_pic = db.Column(db.String(200), default='default.png')
|
||||
discord_id = db.Column(db.String(50), unique=True)
|
||||
discord_linked = db.Column(db.Boolean, default=False)
|
||||
posts = db.relationship('Post', backref='user', cascade="all, delete", passive_deletes=True)
|
||||
comments = db.relationship('Comment', backref='user', cascade="all, delete", passive_deletes=True)
|
||||
likes = db.relationship('Like', backref='user', cascade="all, delete", passive_deletes=True)
|
||||
friendships_sent = db.relationship(
|
||||
'Friendship',
|
||||
foreign_keys='Friendship.requester_id',
|
||||
backref='requester',
|
||||
cascade="all, delete",
|
||||
passive_deletes=True
|
||||
)
|
||||
friendships_received = db.relationship(
|
||||
'Friendship',
|
||||
foreign_keys='Friendship.receiver_id',
|
||||
backref='receiver',
|
||||
cascade="all, delete",
|
||||
passive_deletes=True
|
||||
)
|
||||
uploads = db.relationship('Upload', backref='user', cascade="all, delete", passive_deletes=True)
|
||||
rewards = db.relationship('Reward', backref='user', cascade="all, delete", passive_deletes=True)
|
||||
shop_items = db.relationship('UserShopItem', backref='user', cascade="all, delete", passive_deletes=True)
|
||||
|
||||
def reward_points(self):
|
||||
return sum(r.points for r in self.rewards)
|
||||
|
||||
class Friendship(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
requester_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||
receiver_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||
status = db.Column(db.String(20), default='pending')
|
||||
|
||||
class Post(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||
content = db.Column(db.Text, nullable=False)
|
||||
created_at = db.Column(db.DateTime, default=datetime.now)
|
||||
visibility = db.Column(db.String(20), default='public')
|
||||
likes = db.relationship('Like', backref='post', lazy='dynamic', cascade="all, delete-orphan", passive_deletes=True)
|
||||
comments = db.relationship('Comment', backref='post', cascade="all, delete-orphan", passive_deletes=True)
|
||||
uploads = db.relationship('Upload', backref='post', cascade="all, delete-orphan", passive_deletes=True)
|
||||
|
||||
class Comment(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||
content = db.Column(db.Text, nullable=False)
|
||||
created_at = db.Column(db.DateTime, default=datetime.now)
|
||||
|
||||
class Like(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
post_id = db.Column(db.Integer, db.ForeignKey('post.id', ondelete='CASCADE'))
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||
|
||||
class PasswordResetRequest(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||
requested_at = db.Column(db.DateTime, default=datetime.now)
|
||||
status = db.Column(db.String(20), default='pending')
|
||||
user = db.relationship('User', backref='reset_requests')
|
||||
|
||||
class Upload(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||
post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
|
||||
filename = db.Column(db.String(255))
|
||||
filetype = db.Column(db.String(50))
|
||||
uploaded_at = db.Column(db.DateTime, default=datetime.now)
|
||||
|
||||
class Event(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
timestamp = db.Column(db.DateTime, default=datetime.now)
|
||||
message = db.Column(db.String(255))
|
||||
|
||||
class Notification(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||
message = db.Column(db.String(255))
|
||||
created_at = db.Column(db.DateTime, default=datetime.now)
|
||||
read = db.Column(db.Boolean, default=False)
|
||||
|
||||
class Reward(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||
type = db.Column(db.String(50))
|
||||
points = db.Column(db.Integer, default=0)
|
||||
created_at = db.Column(db.DateTime, default=datetime.now)
|
||||
|
||||
class ShopItem(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
name = db.Column(db.String(100), nullable=False)
|
||||
description = db.Column(db.String(255))
|
||||
price = db.Column(db.Integer, nullable=False)
|
||||
icon = db.Column(db.String(50), default="bi-gift")
|
||||
|
||||
class UserShopItem(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||
item_id = db.Column(db.Integer, db.ForeignKey('shop_item.id'))
|
||||
bought_at = db.Column(db.DateTime, default=datetime.now)
|
||||
item = db.relationship('ShopItem')
|
||||
|
||||
class SupportRequest(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||
title = db.Column(db.String(100), nullable=False)
|
||||
created_at = db.Column(db.DateTime, default=datetime.now)
|
||||
status = db.Column(db.String(20), default='open')
|
||||
comments = db.relationship('SupportComment', backref='request', cascade="all, delete", passive_deletes=True)
|
||||
|
||||
class SupportComment(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
request_id = db.Column(db.Integer, db.ForeignKey('support_request.id'))
|
||||
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
|
||||
message = db.Column(db.Text, nullable=False)
|
||||
created_at = db.Column(db.DateTime, default=datetime.now)
|
||||
user = db.relationship('User')
|
||||
|
||||
SHOPITEM_ID_GOLDRAHMEN = 2
|
||||
SHOPITEM_ID_PREMIUM = 1
|
||||
SHOPITEM_ID_EXTRA_UPLOAD = 3
|
||||
SHOPITEM_ID_EXTRA_TYPES = 4
|
||||
Reference in New Issue
Block a user