Skip to content

Commit bda820b

Browse files
web: provide access project and datasets to all org members
1 parent 40d0dbb commit bda820b

25 files changed

Lines changed: 203 additions & 225 deletions

File tree

server/application/repositories/store.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ type DatasetStoreRepository interface {
7777
SearchDatasetsByOrgAndCreator(ctx context.Context, query string, pagination models.Pagination, orgID, createdBy string) (*models.PaginationView[*models.Dataset], error)
7878
DeleteByOrgAndCreator(ctx context.Context, datasetID, orgID, createdBy string) error
7979
UpdateByOrgAndCreator(ctx context.Context, datasetID, orgID, createdBy string, params *models.UpdateDatasetParams) (*models.Dataset, error)
80-
ListByProjectAndRole(ctx context.Context, projectID, orgID, createdBy string, role models.Role, pagination models.Pagination) (*models.PaginationView[*models.Dataset], error)
80+
ListByProjectAndOrg(ctx context.Context, projectID, orgID, createdBy string, pagination models.Pagination) (*models.PaginationView[*models.Dataset], error)
8181
}
8282

8383
type ChatStoreRepository interface {

server/application/services/store.go

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,8 @@ func (service *ProjectService) Create(params models.CreateProjectParams) (*model
2525
}
2626

2727
// Details - Get project by id
28-
func (service *ProjectService) Details(id, orgID, createdBy string, role models.Role) (*models.Project, error) {
29-
if role == models.Admin {
30-
return service.projectRepo.Details(context.Background(), id, orgID)
31-
}
32-
return service.projectRepo.DetailsByOrgAndCreator(context.Background(), id, orgID, createdBy)
28+
func (service *ProjectService) Details(id, orgID, createdBy string) (*models.Project, error) {
29+
return service.projectRepo.Details(context.Background(), id, orgID)
3330
}
3431

3532
func (service *ProjectService) GetProjectByID(id string) (*models.Project, error) {
@@ -61,17 +58,14 @@ func (service *ProjectService) DatasetsBelongToOrg(datasetNames []string, orgID
6158
}
6259

6360
// List - Search projects
64-
func (service *ProjectService) List(query string, limit, page int, orgID, createdBy string, role models.Role) (*models.PaginationView[*models.SearchProjectsResults], error) {
61+
func (service *ProjectService) List(query string, limit, page int, orgID, createdBy string) (*models.PaginationView[*models.SearchProjectsResults], error) {
6562
pagination := models.NewPagination()
6663
if limit != 0 {
6764
pagination.Limit = limit
6865
}
6966
pagination.Offset = (page - 1) * limit
7067

71-
if role == models.Admin {
72-
return service.projectRepo.SearchProject(context.Background(), query, pagination, orgID)
73-
}
74-
return service.projectRepo.SearchProjectByOrgAndCreator(context.Background(), query, pagination, orgID, createdBy)
68+
return service.projectRepo.SearchProject(context.Background(), query, pagination, orgID)
7569
}
7670

7771
func (service *ProjectService) ListAllProjects() ([]*models.Project, error) {
@@ -96,11 +90,8 @@ func (service *DatasetService) Create(params *models.CreateDatasetParams) (*mode
9690
return service.datasetRepo.Create(context.Background(), params)
9791
}
9892

99-
func (service *DatasetService) Details(id, orgID, createdBy string, role models.Role) (*models.Dataset, error) {
100-
if role == models.Admin {
101-
return service.datasetRepo.Details(context.Background(), id, orgID)
102-
}
103-
return service.datasetRepo.DetailsByOrgAndCreator(context.Background(), id, orgID, createdBy)
93+
func (service *DatasetService) Details(id, orgID, createdBy string) (*models.Dataset, error) {
94+
return service.datasetRepo.Details(context.Background(), id, orgID)
10495
}
10596

10697
func (service *DatasetService) GetByTableName(tableName string, orgID string) (*models.Dataset, error) {
@@ -113,7 +104,7 @@ func (service *DatasetService) List(projectID string, role models.Role, orgID, c
113104
pagination.Limit = limit
114105
}
115106
pagination.Offset = (page - 1) * limit
116-
return service.datasetRepo.ListByProjectAndRole(context.Background(), projectID, orgID, createdBy, role, pagination)
107+
return service.datasetRepo.ListByProjectAndOrg(context.Background(), projectID, orgID, createdBy, pagination)
117108
}
118109

119110
func (service *DatasetService) Delete(id, orgID, createdBy string, role models.Role) error {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package datasets
2+
3+
import (
4+
"context"
5+
6+
"github.com/factly/gopie/domain/models"
7+
)
8+
9+
func (s *PgDatasetStore) ListByProjectAndOrg(ctx context.Context, projectID, orgID, createdBy string, pagination models.Pagination) (*models.PaginationView[*models.Dataset], error) {
10+
return s.List(ctx, projectID, pagination)
11+
}

server/infrastructure/postgres/store/datasets/list_by_project_and_role.go

Lines changed: 0 additions & 73 deletions
This file was deleted.

server/interfaces/http/middleware/validate.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package middleware
33
import (
44
"github.com/factly/gopie/application/services"
55
"github.com/factly/gopie/domain"
6-
"github.com/factly/gopie/domain/models"
76
"github.com/gofiber/fiber/v2"
87
)
98

@@ -16,7 +15,6 @@ func ValidateProjectMiddleware(projectSvc *services.ProjectService) fiber.Handle
1615
projectID := c.Params("projectID")
1716
orgID, _ := c.Locals(OrganizationCtxKey).(string)
1817
userID, _ := c.Locals(UserCtxKey).(string)
19-
role := c.Locals(RoleCtxKey).(models.Role)
2018
if projectID == "" {
2119
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{
2220
"error": "Invalid request",
@@ -34,7 +32,7 @@ func ValidateProjectMiddleware(projectSvc *services.ProjectService) fiber.Handle
3432
})
3533
}
3634

37-
_, err := projectSvc.Details(projectID, orgID, userID, role)
35+
_, err := projectSvc.Details(projectID, orgID, userID)
3836
if err != nil {
3937
if domain.IsStoreError(err) && err == domain.ErrRecordNotFound {
4038
return c.Status(fiber.StatusNotFound).JSON(fiber.Map{

server/interfaces/http/routes/api/datasets/details.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package datasets
22

33
import (
44
"github.com/factly/gopie/domain"
5-
"github.com/factly/gopie/domain/models"
65
"github.com/factly/gopie/interfaces/http/middleware"
76
"github.com/gofiber/fiber/v2"
87
"go.uber.org/zap"
@@ -22,8 +21,7 @@ func (h *httpHandler) details(ctx *fiber.Ctx) error {
2221
datasetID := ctx.Params("datasetID")
2322
orgID := ctx.Locals(middleware.OrganizationCtxKey).(string)
2423
userID := ctx.Locals(middleware.UserCtxKey).(string)
25-
role := ctx.Locals(middleware.RoleCtxKey).(models.Role)
26-
dataset, err := h.datasetsSvc.Details(datasetID, orgID, userID, role)
24+
dataset, err := h.datasetsSvc.Details(datasetID, orgID, userID)
2725
if err != nil {
2826
h.logger.Error("Error fetching dataset details", zap.Error(err), zap.String("datasetID", datasetID))
2927
if domain.IsStoreError(err) && err == domain.ErrRecordNotFound {

server/interfaces/http/routes/api/datasets/get-column-descriptions.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,9 @@ func (h *httpHandler) getColumnDescriptions(ctx *fiber.Ctx) error {
2323
datasetID := ctx.Params("datasetID")
2424
orgID := ctx.Locals(middleware.OrganizationCtxKey).(string)
2525
userID := ctx.Locals(middleware.UserCtxKey).(string)
26-
role := ctx.Locals(middleware.RoleCtxKey).(models.Role)
2726

2827
// Get the dataset details to verify it exists and get the dataset name
29-
dataset, err := h.datasetsSvc.Details(datasetID, orgID, userID, role)
28+
dataset, err := h.datasetsSvc.Details(datasetID, orgID, userID)
3029
if err != nil {
3130
h.logger.Error("Error fetching dataset", zap.Error(err), zap.String("datasetID", datasetID))
3231
if domain.IsStoreError(err) && err == domain.ErrRecordNotFound {

server/interfaces/http/routes/api/datasets/update-column-descriptions.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ func (h *httpHandler) updateColumnDescriptions(ctx *fiber.Ctx) error {
3030
datasetID := ctx.Params("datasetID")
3131
orgID := ctx.Locals(middleware.OrganizationCtxKey).(string)
3232
userID := ctx.Locals(middleware.UserCtxKey).(string)
33-
role := ctx.Locals(middleware.RoleCtxKey).(models.Role)
3433

3534
var body updateColumnDescriptionsParams
3635
if err := ctx.BodyParser(&body); err != nil {
@@ -52,7 +51,7 @@ func (h *httpHandler) updateColumnDescriptions(ctx *fiber.Ctx) error {
5251
}
5352

5453
// Get the dataset details to verify it exists and get the dataset name
55-
dataset, err := h.datasetsSvc.Details(datasetID, orgID, userID, role)
54+
dataset, err := h.datasetsSvc.Details(datasetID, orgID, userID)
5655
if err != nil {
5756
h.logger.Error("Error fetching dataset", zap.Error(err), zap.String("datasetID", datasetID))
5857
if domain.IsStoreError(err) && err == domain.ErrRecordNotFound {

server/interfaces/http/routes/api/projects/datasets/delete.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func (h *httpHandler) delete(ctx *fiber.Ctx) error {
3030
orgID := ctx.Locals(middleware.OrganizationCtxKey).(string)
3131
userID := ctx.Locals(middleware.UserCtxKey).(string)
3232
role := ctx.Locals(middleware.RoleCtxKey).(models.Role)
33-
dataset, err := h.datasetsSvc.Details(datasetID, orgID, userID, role)
33+
dataset, err := h.datasetsSvc.Details(datasetID, orgID, userID)
3434
if err != nil {
3535
h.logger.Error("Error deleting dataset", zap.Error(err), zap.String("datasetID", datasetID))
3636
if domain.IsStoreError(err) && err == domain.ErrRecordNotFound {

server/interfaces/http/routes/api/projects/datasets/details.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package datasets
22

33
import (
44
"github.com/factly/gopie/domain"
5-
"github.com/factly/gopie/domain/models"
65
"github.com/factly/gopie/interfaces/http/middleware"
76
"github.com/gofiber/fiber/v2"
87
"go.uber.org/zap"
@@ -23,8 +22,7 @@ func (h *httpHandler) details(ctx *fiber.Ctx) error {
2322
datasetID := ctx.Params("datasetID")
2423
orgID := ctx.Locals(middleware.OrganizationCtxKey).(string)
2524
userID := ctx.Locals(middleware.UserCtxKey).(string)
26-
role := ctx.Locals(middleware.RoleCtxKey).(models.Role)
27-
dataset, err := h.datasetsSvc.Details(datasetID, orgID, userID, role)
25+
dataset, err := h.datasetsSvc.Details(datasetID, orgID, userID)
2826
if err != nil {
2927
h.logger.Error("Error fetching dataset details", zap.Error(err), zap.String("datasetID", datasetID))
3028
if domain.IsStoreError(err) && err == domain.ErrRecordNotFound {

0 commit comments

Comments
 (0)