Coverage for mindsdb / api / http / namespaces / projects.py: 100%

26 statements  

« prev     ^ index     » next       coverage.py v7.13.1, created at 2026-01-21 00:36 +0000

1from http import HTTPStatus 

2 

3from flask_restx import Resource 

4 

5from mindsdb.metrics.metrics import api_endpoint_metrics 

6from mindsdb.api.http.utils import http_error 

7from mindsdb.api.http.namespaces.configs.projects import ns_conf 

8from mindsdb.api.executor.controllers.session_controller import SessionController 

9from mindsdb.utilities.exception import EntityNotExistsError 

10 

11 

12@ns_conf.route("/") 

13class ProjectsList(Resource): 

14 @ns_conf.doc("list_projects") 

15 @api_endpoint_metrics("GET", "/projects") 

16 def get(self): 

17 """List all projects""" 

18 session = SessionController() 

19 

20 projects = [{"name": i} for i in session.datahub.get_projects_names()] 

21 return projects 

22 

23 

24@ns_conf.route("/<project_name>") 

25class ProjectsGet(Resource): 

26 @ns_conf.doc("get_project") 

27 @api_endpoint_metrics("GET", "/projects/project") 

28 def get(self, project_name): 

29 """Gets a project by name""" 

30 session = SessionController() 

31 

32 try: 

33 project = session.database_controller.get_project(project_name) 

34 except EntityNotExistsError: 

35 return http_error(HTTPStatus.NOT_FOUND, "Project not exists", f"Project name {project_name} does not exist") 

36 

37 return {"name": project.name}