Files
2026-07-13 12:43:34 +08:00

67 lines
2.1 KiB
Python

from sqlalchemy import Column, Integer, String,ForeignKey
from superagi.models.base_model import DBBaseModel
class Project(DBBaseModel):
"""
Model representing a project.
Attributes:
id (Integer): The primary key of the project.
name (String): The name of the project.
organisation_id (Integer): The ID of the organization to which the project belongs.
description (String): The description of the project.
"""
__tablename__ = 'projects'
id = Column(Integer, primary_key=True)
name = Column(String)
organisation_id = Column(Integer)
description = Column(String)
def __repr__(self):
"""
Returns a string representation of the Project object.
Returns:
str: String representation of the Project object.
"""
return f"Project(id={self.id}, name='{self.name}')"
@classmethod
def find_or_create_default_project(cls, session, organisation_id):
"""
Finds or creates the default project for the given organization.
Args:
session: The database session.
organisation_id (int): The ID of the organization.
Returns:
Project: The found or created default project.
"""
project = session.query(Project).filter(Project.organisation_id == organisation_id, Project.name == "Default Project").first()
if project is None:
default_project = Project(
name="Default Project",
organisation_id=organisation_id,
description="New Default Project"
)
session.add(default_project)
session.commit()
session.flush()
else:
default_project = project
return default_project
@classmethod
def find_by_org_id(cls, session, org_id: int):
project = session.query(Project).filter(Project.organisation_id == org_id).first()
return project
@classmethod
def find_by_id(cls, session, project_id: int):
project = session.query(Project).filter(Project.id == project_id).first()
return project