@@ -58,28 +58,30 @@ func SearchPrivateIssueOrPr(Page int, PageSize int, Keyword string, isPull bool,
}
}
func setDataSetQueryCondition(Keyword string, userId int64) builder.Cond {
func setDataSetQueryCondition(Keyword string, userId int64, isAdmin bool ) builder.Cond {
query := builder.NewCond()
if Keyword != "" {
query = query.And(builder.Or(builder.Like{"lower_alias", "%" + strings.ToLower(Keyword) + "%"}, builder.Like{"lower_name", "%" + strings.ToLower(Keyword) + "%"}))
}
query = query.And(
builder.Or(
builder.Eq{"owner_id": userId},
if !isAdmin {
query = query.And(
builder.Or(
builder.In("id", builder.Select("`subject_access`.subject_id").
From("subject_access").
Where(builder.Eq{"`subject_access`.user_id": userId}.
And(builder.Eq{"`subject_access`.subject_type": DatasetSubject}).
And(builder.In("`subject_access`.mode", int(AccessModeOwner), int(AccessModeRead), int(AccessModeWrite), int(AccessModeAdmin))))),
builder.In("id", builder.Select("`team_subject`.subject_id").
From("team_subject").
Where(builder.Eq{"`team_user`.uid ": userId}.
And(builder.Neq{"`team`.dataset_authorize": int(AccessModeOwner)})).
Join("INNER", "team_user", "`team_user`.team_id = `team_subject`.team_id").
Join("INNER", "team", "`team`.id = `team_subject`.team_id")),
)),
)
builder.Eq{"owner_id": userId},
builder.Or(
builder.In("id", builder.Select("`subject_access`.subject_id").
From("subject_access").
Where(builder.Eq{"`subject_access`.user_id": userId}.
And(builder.Eq{"`subject_access`.subject_type": DatasetSubject}).
And(builder.In("`subject_access`.mode", int(AccessModeOwner), int(AccessModeRead), int(AccessModeWrite), int(AccessModeAdmin))))),
builder.In("id", builder.Select("`team_subject`.subject_id").
From("team_subject").
Where(builder.Eq{"`team_user`.uid ": userId}.
And(builder.Neq{"`team`.dataset_authorize": int(AccessModeOwner)})).
Join("INNER", "team_user", "`team_user`.team_id = `team_subject`.team_id").
Join("INNER", "team", "`team`.id = `team_subject`.team_id")),
)),
)
}
query = query.And(
builder.Eq{"is_private": true},
)
@@ -88,11 +90,11 @@ func setDataSetQueryCondition(Keyword string, userId int64) builder.Cond {
//sess.And("(lower_name like '%" + strings.ToLower(Keyword) + "%' and is_private=true)")
}
func SearchDatasetBySQL(Page int, PageSize int, Keyword string, userId int64) ([]*DatasetRegistry, int64, error) {
func SearchDatasetBySQL(Page int, PageSize int, Keyword string, userId int64, isAdmin bool ) ([]*DatasetRegistry, int64, error) {
sess := x.NewSession()
defer sess.Close()
query := setDataSetQueryCondition(Keyword, userId)
query := setDataSetQueryCondition(Keyword, userId, isAdmin )
count, err := sess.Where(query).Count(new(DatasetRegistry))
if err != nil {
return nil, 0, err