mirror of
https://github.com/StanGirard/quivr.git
synced 2024-11-27 10:20:32 +03:00
9aaedcff51
* 🗃️ Rename users table into user_daily_usage * 💥 replace User model with UserIdentity model * 🗃️ New UserDailyUsage class for database interaction * 🐛 fix daily requests rate limiting per user * 🐛 fix user stats and properties update * ✏️ add typing and linting * 🚚 rename user_dialy_usage Class into user_usage & requests_count into daily_requests_count * 🚑 fix some rebase errors
74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
from datetime import datetime
|
|
from uuid import uuid4
|
|
|
|
from sqlalchemy import Boolean, Column, DateTime, ForeignKey, Integer, String
|
|
from sqlalchemy.ext.declarative import declarative_base
|
|
from sqlalchemy.orm import relationship
|
|
|
|
Base = declarative_base()
|
|
|
|
|
|
class User(Base):
|
|
__tablename__ = "users"
|
|
|
|
user_id = Column(String, primary_key=True)
|
|
email = Column(String)
|
|
date = Column(DateTime)
|
|
daily_requests_count = Column(Integer)
|
|
|
|
|
|
class Brain(Base):
|
|
__tablename__ = "brains"
|
|
|
|
brain_id = Column(Integer, primary_key=True)
|
|
name = Column(String)
|
|
users = relationship("BrainUser", back_populates="brain")
|
|
vectors = relationship("BrainVector", back_populates="brain")
|
|
|
|
|
|
class BrainUser(Base):
|
|
__tablename__ = "brains_users"
|
|
|
|
id = Column(Integer, primary_key=True)
|
|
user_id = Column(Integer, ForeignKey("users.user_id"))
|
|
brain_id = Column(Integer, ForeignKey("brains.brain_id"))
|
|
rights = Column(String)
|
|
|
|
user = relationship("User")
|
|
brain = relationship("Brain", back_populates="users")
|
|
|
|
|
|
class BrainVector(Base):
|
|
__tablename__ = "brains_vectors"
|
|
|
|
vector_id = Column(String, primary_key=True, default=lambda: str(uuid4()))
|
|
brain_id = Column(Integer, ForeignKey("brains.brain_id"))
|
|
file_sha1 = Column(String)
|
|
|
|
brain = relationship("Brain", back_populates="vectors")
|
|
|
|
|
|
class BrainSubscriptionInvitation(Base):
|
|
__tablename__ = "brain_subscription_invitations"
|
|
|
|
id = Column(Integer, primary_key=True) # Assuming an integer primary key named 'id'
|
|
brain_id = Column(String, ForeignKey("brains.brain_id"))
|
|
email = Column(String, ForeignKey("users.email"))
|
|
rights = Column(String)
|
|
|
|
brain = relationship("Brain")
|
|
user = relationship("User", foreign_keys=[email])
|
|
|
|
|
|
class ApiKey(Base):
|
|
__tablename__ = "api_keys"
|
|
|
|
key_id = Column(String, primary_key=True, default=lambda: str(uuid4()))
|
|
user_id = Column(Integer, ForeignKey("users.user_id"))
|
|
api_key = Column(String, unique=True)
|
|
creation_time = Column(DateTime, default=datetime.utcnow)
|
|
is_active = Column(Boolean, default=True)
|
|
deleted_time = Column(DateTime, nullable=True)
|
|
|
|
user = relationship("User")
|