52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
from sqlalchemy import (
|
|
Column,
|
|
Integer,
|
|
String,
|
|
Text,
|
|
Numeric,
|
|
Boolean,
|
|
Date,
|
|
JSON,
|
|
)
|
|
from sqlalchemy.orm import DeclarativeBase
|
|
|
|
|
|
class Base(DeclarativeBase):
|
|
pass
|
|
|
|
|
|
class Program(Base):
|
|
__tablename__ = "programs"
|
|
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
day_of_week = Column(Integer, nullable=False) # 1=Mon … 7=Sun
|
|
day_label = Column(String(10), nullable=False) # "Monday", …
|
|
time = Column(String(10), nullable=False) # "6:00 AM"
|
|
title = Column(String(200), nullable=False)
|
|
host = Column(String(100), nullable=False)
|
|
genre = Column(String(80), nullable=False)
|
|
|
|
|
|
class Event(Base):
|
|
__tablename__ = "events"
|
|
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
date = Column(Date, nullable=False)
|
|
title = Column(String(200), nullable=False)
|
|
description = Column(Text, nullable=False)
|
|
location = Column(String(200), nullable=False)
|
|
icon = Column(String(10), nullable=False)
|
|
rsvp_url = Column(String(500), nullable=True)
|
|
active = Column(Boolean, default=True)
|
|
|
|
|
|
class DonationTier(Base):
|
|
__tablename__ = "donation_tiers"
|
|
|
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
|
name = Column(String(50), unique=True, nullable=False)
|
|
amount = Column(Numeric(10, 2), nullable=False)
|
|
icon = Column(String(10), nullable=False)
|
|
benefits = Column(JSON, nullable=False)
|
|
display_order = Column(Integer, nullable=False)
|