add comments to db

main
lza_menace 3 years ago
parent 3d85028b29
commit bbaea9cc13

@ -13,6 +13,10 @@ db = pw.PostgresqlDatabase(
) )
class User(pw.Model): class User(pw.Model):
"""
User model is for pure user authentication management
and reporting.
"""
id = pw.AutoField() id = pw.AutoField()
register_date = pw.DateTimeField(default=datetime.now) register_date = pw.DateTimeField(default=datetime.now)
last_login_date = pw.DateTimeField(default=datetime.now) last_login_date = pw.DateTimeField(default=datetime.now)
@ -42,6 +46,12 @@ class User(pw.Model):
database = db database = db
class CreatorProfile(pw.Model): class CreatorProfile(pw.Model):
"""
CreatorProfile model is for creators to provide metadata about
themselves for their fans or even just the general public.
Links to social media, contact info, portfolio sites, etc
should go in here.
"""
id = pw.AutoField() id = pw.AutoField()
user = pw.ForeignKeyField(User) user = pw.ForeignKeyField(User)
create_date = pw.DateTimeField(default=datetime.now) create_date = pw.DateTimeField(default=datetime.now)
@ -51,12 +61,18 @@ class CreatorProfile(pw.Model):
twitter_handle = pw.CharField(null=True) twitter_handle = pw.CharField(null=True)
email = pw.CharField(unique=True, null=True) email = pw.CharField(unique=True, null=True)
bio = pw.CharField() bio = pw.CharField()
verified = pw.CharField(default=False)
class Meta: class Meta:
database = db database = db
class BackerProfile(pw.Model): class BackerProfile(pw.Model):
"""
BackerProfile model is for backers to give contact info
if they wanted to retain communications in some way...ie
recurring emails and/or notifications. For now.
"""
id = pw.AutoField() id = pw.AutoField()
register_date = pw.DateTimeField(default=datetime.now) register_date = pw.DateTimeField(default=datetime.now)
last_login_date = pw.DateTimeField(default=datetime.now) last_login_date = pw.DateTimeField(default=datetime.now)
@ -67,11 +83,18 @@ class BackerProfile(pw.Model):
class SubscriptionMeta(pw.Model): class SubscriptionMeta(pw.Model):
"""
SubscriptionMeta model is for the Creator to define details about
their subscription plan to release for subscribers. There is no
editing in place, only creating new plans; anyone utilizing an
existing subscription (by loading it on screen) will be grandfathered in.
"""
id = pw.AutoField() id = pw.AutoField()
create_date = pw.DateTimeField(default=datetime.now) create_date = pw.DateTimeField(default=datetime.now)
creator = pw.ForeignKeyField(CreatorProfile) creator = pw.ForeignKeyField(CreatorProfile)
atomic_xmr = pw.BigIntegerField() atomic_xmr = pw.BigIntegerField()
number_hours = pw.IntegerField() number_hours = pw.IntegerField()
wallet_address = pw.CharField()
def get_end_date(self) -> datetime: def get_end_date(self) -> datetime:
# some timedelta shiz # some timedelta shiz
@ -82,20 +105,27 @@ class SubscriptionMeta(pw.Model):
class Subscription(pw.Model): class Subscription(pw.Model):
"""
Subscription model gets created when backers can confirm payment via
the `check_tx_key` RPC method. Once a subscription is in place and is
associated with a user, that user is then elligible to view that
creator's content.
"""
id = pw.AutoField() id = pw.AutoField()
subscribe_date = pw.DateTimeField(default=datetime.now) subscribe_date = pw.DateTimeField(default=datetime.now)
active = pw.BooleanField(default=True) active = pw.BooleanField(default=True)
creator = pw.ForeignKeyField(CreatorProfile) creator = pw.ForeignKeyField(CreatorProfile)
backer = pw.ForeignKeyField(BackerProfile) backer = pw.ForeignKeyField(BackerProfile)
meta = pw.ForeignKeyField(SubscriptionMeta) meta = pw.ForeignKeyField(SubscriptionMeta)
xmr_address = pw.CharField(unique=True)
xmr_acct_idx = pw.BigIntegerField(unique=True) # in case it gets many subscribers
xmr_addr_idx = pw.BigIntegerField(unique=True)
class Meta: class Meta:
database = db database = db
class TextPost(pw.Model): class TextPost(pw.Model):
"""
TextPost model is the first content type available to post. Metadata
here is basic for now, let's proof out the other components first.
"""
id = pw.AutoField() id = pw.AutoField()
post_date = pw.DateTimeField(default=datetime.now) post_date = pw.DateTimeField(default=datetime.now)
hidden = pw.BooleanField(default=False) hidden = pw.BooleanField(default=False)

Loading…
Cancel
Save