This commit is contained in:
mr
2026-04-29 07:47:44 +02:00
parent 6a3ce4a35b
commit c03b43f844
11 changed files with 194 additions and 58 deletions

View File

@@ -63,7 +63,7 @@ func (o *GeneralController) GetAll() {
o.ServeJSON()
}
func Websocket(ctx context.Context, user string, groups []string, dataType int, conn *websocket.Conn) {
func Websocket(ctx context.Context, user string, groups []string, dataType int, conn *websocket.Conn, extend ...string) {
defer conn.Close()
done := make(chan struct{})
go func() {
@@ -80,6 +80,8 @@ func Websocket(ctx context.Context, user string, groups []string, dataType int,
close(ch)
infrastructure.SearchMu.Lock()
delete(infrastructure.SearchStream, user)
delete(infrastructure.SearchStreamSeen, user)
delete(infrastructure.SearchStreamExtend, user)
infrastructure.SearchMu.Unlock()
}
fmt.Println("CLOSE !")

View File

@@ -3,8 +3,10 @@ package controllers
import (
"encoding/json"
"strconv"
"strings"
oclib "cloud.o-forge.io/core/oc-lib"
"cloud.o-forge.io/core/oc-lib/tools"
beego "github.com/beego/beego/v2/server/web"
)
@@ -36,6 +38,7 @@ func (o *PurchaseController) Post() {
// @Title GetAll
// @Description find compute by id
// @Param extend query string false "extend"
// @Param is_draft query string false "draft wished"
// @Param offset query string false "offset wished"
// @Param limit query string false "limit wished"
@@ -44,14 +47,21 @@ func (o *PurchaseController) Post() {
func (o *PurchaseController) GetAll() {
user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
isDraft := o.Ctx.Input.Query("is_draft")
extend := strings.Split(o.Ctx.Input.Query("extend"), ",")
offset, _ := strconv.Atoi(o.Ctx.Input.Query("offset"))
limit, _ := strconv.Atoi(o.Ctx.Input.Query("limit"))
o.Data["json"] = oclib.NewRequest(purchase_collection, user, peerID, groups, nil).LoadAll(isDraft == "true", int64(offset), int64(limit))
s := oclib.NewRequest(purchase_collection, user, peerID, groups, nil).LoadAll(isDraft == "true", int64(offset), int64(limit))
o.Data["json"] = map[string]interface{}{
"data": oclib.GetExtends(s.Data, extend...),
"code": 200,
"err": nil,
}
o.ServeJSON()
}
// @Title Get
// @Description find compute by key word
// @Param extend query string false "extend"
// @Param search path string true "the search you want to get"
// @Param is_draft query string false "draft wished"
// @Param offset query string false "offset wished"
@@ -62,20 +72,38 @@ func (o *PurchaseController) Search() {
user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
isDraft := o.Ctx.Input.Query("is_draft")
search := o.Ctx.Input.Param(":search")
extend := strings.Split(o.Ctx.Input.Query("extend"), ",")
offset, _ := strconv.Atoi(o.Ctx.Input.Query("offset"))
limit, _ := strconv.Atoi(o.Ctx.Input.Query("limit"))
o.Data["json"] = oclib.NewRequest(purchase_collection, user, peerID, groups, nil).Search(nil, search, isDraft == "true", int64(offset), int64(limit))
s := oclib.NewRequest(purchase_collection, user, peerID, groups, nil).Search(nil, search, isDraft == "true", int64(offset), int64(limit))
o.Data["json"] = map[string]interface{}{
"data": oclib.GetExtends(s.Data, extend...),
"code": 200,
"err": nil,
}
o.ServeJSON()
}
// @Title Get
// @Description find compute by id
// @Param extend query string false "extend"
// @Param id path string true "the id you want to get"
// @Success 200 {compute} models.compute
// @router /:id [get]
func (o *PurchaseController) Get() {
user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
id := o.Ctx.Input.Param(":id")
o.Data["json"] = oclib.NewRequest(purchase_collection, user, peerID, groups, nil).LoadOne(id)
extend := strings.Split(o.Ctx.Input.Query("extend"), ",")
data := oclib.NewRequest(purchase_collection, user, peerID, groups, nil).LoadOne(id)
if data.Data != nil {
m := oclib.GetExtend(data.Data, data.Data.Extend(extend...), map[tools.DataType]map[string]interface{}{})
o.Data["json"] = map[string]interface{}{
"data": m,
"code": 200,
"err": nil,
}
} else {
o.Data["json"] = data
}
o.ServeJSON()
}

View File

@@ -9,6 +9,7 @@ import (
oclib "cloud.o-forge.io/core/oc-lib"
"cloud.o-forge.io/core/oc-lib/models/resources"
"cloud.o-forge.io/core/oc-lib/models/utils"
"cloud.o-forge.io/core/oc-lib/tools"
beego "github.com/beego/beego/v2/server/web"
)
@@ -26,6 +27,9 @@ func resourceTypeEnum(t string, special bool) []oclib.LibDataEnum {
if t == "compute" || t == "resource" {
e = append(e, oclib.LibDataEnum(oclib.COMPUTE_RESOURCE))
}
if t == "service" || t == "resource" {
e = append(e, oclib.LibDataEnum(oclib.SERVICE_RESOURCE))
}
if t == "data" || t == "resource" {
e = append(e, oclib.LibDataEnum(oclib.DATA_RESOURCE))
}
@@ -70,19 +74,20 @@ func (o *ResourceController) GetAll() {
offset, _ := strconv.Atoi(o.Ctx.Input.Query("offset"))
limit, _ := strconv.Atoi(o.Ctx.Input.Query("limit"))
m := map[string][]map[string]interface{}{}
m := map[string][]utils.ShallowDBObject{}
for _, col := range o.collection(false) {
if m[col.String()] == nil {
m[col.String()] = []map[string]interface{}{}
m[col.String()] = []utils.ShallowDBObject{}
}
s := oclib.NewRequest(col, user, peerID, groups, nil).LoadAll(isDraft == "true", int64(offset), int64(limit))
for _, d := range s.Data {
m[col.String()] = append(m[col.String()], oclib.GetExtend(d, d.Extend(extend...)))
m[col.String()] = append(m[col.String()], s.Data...)
}
mm := map[string]interface{}{}
for k, v := range m {
mm[k] = oclib.GetExtends(v, extend...)
}
o.Data["json"] = map[string]interface{}{
"data": m,
"data": mm,
"code": 200,
"err": nil,
}
@@ -107,19 +112,21 @@ func (o *ResourceController) Search() {
offset, _ := strconv.Atoi(o.Ctx.Input.Query("offset"))
limit, _ := strconv.Atoi(o.Ctx.Input.Query("limit"))
m := map[string][]map[string]interface{}{}
m := map[string][]utils.ShallowDBObject{}
fmt.Println(o.collection(false))
for _, col := range o.collection(false) {
if m[col.String()] == nil {
m[col.String()] = []map[string]interface{}{}
m[col.String()] = []utils.ShallowDBObject{}
}
s := oclib.NewRequest(col, user, peerID, groups, nil).Search(nil, search, isDraft == "true", int64(offset), int64(limit))
for _, d := range s.Data {
m[col.String()] = append(m[col.String()], oclib.GetExtend(d, d.Extend(extend...)))
m[col.String()] = append(m[col.String()], s.Data...)
}
mm := map[string]interface{}{}
for k, v := range m {
mm[k] = oclib.GetExtends(v, extend...)
}
o.Data["json"] = map[string]interface{}{
"data": m,
"data": mm,
"code": 200,
"err": nil,
}
@@ -163,22 +170,21 @@ func (o *ResourceController) SearchExtended() {
limit, _ := strconv.Atoi(o.Ctx.Input.Query("limit"))
var res map[string]interface{}
json.Unmarshal(o.Ctx.Input.CopyBody(100000), &res)
m := map[string][]map[string]interface{}{}
m := map[string][]utils.ShallowDBObject{}
for _, col := range o.collection(false) {
if m[col.String()] == nil {
m[col.String()] = []map[string]interface{}{}
m[col.String()] = []utils.ShallowDBObject{}
}
fmt.Println(res, oclib.FiltersFromFlatMap(res, GetResource(col)))
s := oclib.NewRequest(col, user, peerID, groups, nil).Search(
oclib.FiltersFromFlatMap(res, GetResource(col)), "", isDraft == "true", int64(offset), int64(limit))
for _, d := range s.Data {
m[col.String()] = append(m[col.String()], oclib.GetExtend(d, d.Extend(extend...)))
m[col.String()] = append(m[col.String()], s.Data...)
}
mm := map[string]interface{}{}
for k, v := range m {
mm[k] = oclib.GetExtends(v, extend...)
}
o.Data["json"] = map[string]interface{}{
"data": m,
"data": mm,
"code": 200,
"err": nil,
}
@@ -197,10 +203,11 @@ func (o *ResourceController) Get() {
user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request)
id := o.Ctx.Input.Param(":id")
extend := strings.Split(o.Ctx.Input.Query("extend"), ",")
fmt.Println(user, groups, peerID)
fmt.Println("COLLECTIOn", o.collection(false))
for _, col := range o.collection(false) {
if d := oclib.NewRequest(col, user, peerID, groups, nil).LoadOne(id); d.Data != nil {
o.Data["json"] = oclib.GetExtend(d.Data, d.Data.Extend(extend...))
fmt.Println("EXTEND", d.Data.Extend(extend...), extend)
o.Data["json"] = oclib.GetExtend(d.Data, d.Data.Extend(extend...), map[tools.DataType]map[string]interface{}{})
break
} else {
o.Data["json"] = d

4
go.mod
View File

@@ -3,7 +3,7 @@ module oc-catalog
go 1.25.0
require (
cloud.o-forge.io/core/oc-lib v0.0.0-20260421124504-0c6efee27626
cloud.o-forge.io/core/oc-lib v0.0.0-20260429050913-47d487ea8011
github.com/beego/beego/v2 v2.3.8
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674
github.com/smartystreets/goconvey v1.7.2
@@ -83,7 +83,7 @@ require (
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
go.mongodb.org/mongo-driver v1.17.4 // indirect
golang.org/x/crypto v0.44.0 // indirect
golang.org/x/net v0.47.0
golang.org/x/net v0.47.0 // indirect
golang.org/x/sync v0.18.0 // indirect
golang.org/x/sys v0.38.0 // indirect
golang.org/x/text v0.31.0 // indirect

52
go.sum
View File

@@ -1,25 +1,37 @@
cloud.o-forge.io/core/oc-lib v0.0.0-20260330082109-a4ab3285e34c h1:M0y5jI9BO7fyi1nMa2S2hhY0jDbBC+Bg56+5tp9g/vs=
cloud.o-forge.io/core/oc-lib v0.0.0-20260330082109-a4ab3285e34c/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
cloud.o-forge.io/core/oc-lib v0.0.0-20260331181901-f3b5a54545ee h1:iJ1kgMbBOBIHwS4jHOVB5zFqOd7J9ZlweQBuchnmvT0=
cloud.o-forge.io/core/oc-lib v0.0.0-20260331181901-f3b5a54545ee/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
cloud.o-forge.io/core/oc-lib v0.0.0-20260401110447-20cac09f9d6f h1:yyp4UIBTEQWcmoD2T+Acb6dZfl7PWaLSRPwlpEOQxnE=
cloud.o-forge.io/core/oc-lib v0.0.0-20260401110447-20cac09f9d6f/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
cloud.o-forge.io/core/oc-lib v0.0.0-20260402074304-ad12f02a7024 h1:xxadsmNJoXdbzK+GsHtCLoKBmowe3n52iZtFZy0PVjk=
cloud.o-forge.io/core/oc-lib v0.0.0-20260402074304-ad12f02a7024/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
cloud.o-forge.io/core/oc-lib v0.0.0-20260402080126-2bc45557938b h1:jkvJ1+aiitFPlc+/8U1Z3Ss8UwxdUQhoh3NarZuT/ow=
cloud.o-forge.io/core/oc-lib v0.0.0-20260402080126-2bc45557938b/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
cloud.o-forge.io/core/oc-lib v0.0.0-20260403121807-913d9b3dfb0a h1:H7K91js08Vyx307MW6BwQ/kqNGTrQVMaR3xvrIrc2W8=
cloud.o-forge.io/core/oc-lib v0.0.0-20260403121807-913d9b3dfb0a/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
cloud.o-forge.io/core/oc-lib v0.0.0-20260407063242-2e9f4cb9f466 h1:1xy9pZenAkT1eHY+3ruzYimaLrCKRzYovJgjO61QSok=
cloud.o-forge.io/core/oc-lib v0.0.0-20260407063242-2e9f4cb9f466/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
cloud.o-forge.io/core/oc-lib v0.0.0-20260407073631-5dbe55e63081 h1:Fl08ZK6LrzkyFxxhTS+GAyEGiNR8kPvoBefo4iUVP/M=
cloud.o-forge.io/core/oc-lib v0.0.0-20260407073631-5dbe55e63081/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
cloud.o-forge.io/core/oc-lib v0.0.0-20260408143421-92eb2663bc69 h1:3QmJSTWSUoq1pVXsCLv0+nmmKBVwcdHXMp+GTFaVZQA=
cloud.o-forge.io/core/oc-lib v0.0.0-20260408143421-92eb2663bc69/go.mod h1:+ENuvBfZdESSvecoqGY/wSvRlT3vinEolxKgwbOhUpA=
cloud.o-forge.io/core/oc-lib v0.0.0-20260421123652-bbaea4fec401 h1:S4Bz4mudEx7IUthnHdmZVKwVmc2r2Tw5L6J9hYiXqr8=
cloud.o-forge.io/core/oc-lib v0.0.0-20260421123652-bbaea4fec401/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260421124504-0c6efee27626 h1:JOXbpVUlz5D3ajT48+2N4lmULb+c4/o2WAAHc60XbeA=
cloud.o-forge.io/core/oc-lib v0.0.0-20260421124504-0c6efee27626/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422071421-17a45eb5d1ee h1:G+Soi+DIicwNjJQ3kgI27ckHcXsEyRetHx65NXGQgkU=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422071421-17a45eb5d1ee/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422071808-a08c9b084d11 h1:B2iakt1sH9i6UWZtXw1qUhixM+sDBG6Ef5U4N+G9bFI=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422071808-a08c9b084d11/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422074816-6741e929ccf6 h1:nG/5E2c3eXHnmPP1WLOMemY0aij2xQe7nJ+rIkQi9mg=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422074816-6741e929ccf6/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422082406-94e3ebbdd9bf h1:e4NDKCOep7uqKs6flEyU0C7Khxp1FK8oBTD2tbNUK9w=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422082406-94e3ebbdd9bf/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422085552-da237b1d263c h1:W2Tp63hMA3N/pYs1M3+pvLNd6uMtV/IgZr4CiPbkO7s=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422085552-da237b1d263c/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422091539-b92634ccbae2 h1:0/F7U0o+SANqqyQqJ1H3uRky6eUO+bBhGdFktfbaa30=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422091539-b92634ccbae2/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422092532-5cda4fdd4010 h1:9yDRSmvuc5RzK0M/XLUihHk/NpVWuUVdGMmf05L8W/0=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422092532-5cda4fdd4010/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422093821-c208e2ccefc8 h1:+m6/0EUoP97rEm+NYz4T8zZZwpjOaFv0FoVbEea4cjc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422093821-c208e2ccefc8/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422094708-51e2dcc40409 h1:Xy0Py1oEE/75L0PwO/MeWjwZDMmc+DkJHkGtFAh2WTY=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422094708-51e2dcc40409/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422095416-a4366d3a09a4 h1:aGgx7WqqqGmJw7OC/FJkgYfVmCsdjYZPSytdZcamEUQ=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422095416-a4366d3a09a4/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422121328-538496cd6015 h1:ak8z12vC07LI/lpB6B9KJ/nLZy9J+Ez14G1iNDjRdQY=
cloud.o-forge.io/core/oc-lib v0.0.0-20260422121328-538496cd6015/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260423074839-e70e89b630b7 h1:WdExXiecLnST8a7gAh6Z9Xd1Q+0/EjTy1P+b9ABoga8=
cloud.o-forge.io/core/oc-lib v0.0.0-20260423074839-e70e89b630b7/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260427091650-f048b420d74d h1:jzgwgbZDASalQJSYbPF/L2L2RSP2OAbqhMB4YUXK27M=
cloud.o-forge.io/core/oc-lib v0.0.0-20260427091650-f048b420d74d/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260427105228-26fc02c5b236 h1:8beImgKDK7iwj0P9eJJ+pIlgHm7kCguCvjzztYjaSFs=
cloud.o-forge.io/core/oc-lib v0.0.0-20260427105228-26fc02c5b236/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260427111114-318fd522895d h1:VDx58DIq91kA4IEDgWQ4alv32Djcp1y77yw56wmPEe0=
cloud.o-forge.io/core/oc-lib v0.0.0-20260427111114-318fd522895d/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
cloud.o-forge.io/core/oc-lib v0.0.0-20260429050913-47d487ea8011 h1:owV5pQ+mS5xDCKEcGTO+BgsyYrKjkISL8LDsmjEb/3s=
cloud.o-forge.io/core/oc-lib v0.0.0-20260429050913-47d487ea8011/go.mod h1:JynnOb3eMr9VZW1mHq+Vsl3tzx6gPhPsGKpQD/dtEBc=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0=
github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM=

View File

@@ -478,7 +478,6 @@ func createDockerProcessingResource(
},
Infrastructure: enum.DOCKER,
OpenSource: true,
IsService: false,
}
for i := range tags {

View File

@@ -21,6 +21,7 @@ var ressourceCols = []oclib.LibDataEnum{
}
var SearchMu sync.RWMutex
var SearchStreamExtend = map[string][]string{}
var SearchStream = map[string]chan []byte{}
var SearchStreamSeen = map[string][]string{}
@@ -31,6 +32,7 @@ func EmitNATS(user string, groups []string, message tools.PropalgationMessage) {
SearchMu.Lock()
SearchStream[user] = make(chan []byte, 128)
SearchStreamSeen[user] = make([]string, 128)
SearchStreamExtend[user] = make([]string, 128)
SearchMu.Unlock()
tools.NewNATSCaller().SetNATSPub(tools.PROPALGATION_EVENT, tools.NATSResponse{
FromApp: "oc-catalog",
@@ -76,14 +78,21 @@ func ListenNATS() {
p.SetNotInCatalog(true)
return
}
SearchMu.Lock()
wrapped, merr := json.Marshal(map[string]interface{}{
"dtype": p.GetType(),
"data": p,
})
if a := SearchStreamExtend[resp.User]; len(a) > 0 {
wrapped, merr = json.Marshal(map[string]interface{}{
"dtype": p.GetType(),
"data": oclib.GetExtend(p, p.Extend(a...), map[tools.DataType]map[string]interface{}{}),
})
}
if merr != nil {
return
}
SearchMu.Lock()
if SearchStreamSeen[resp.User] != nil && slices.Contains(SearchStreamSeen[resp.User], p.GetID()) {
SearchStream[resp.User] <- wrapped // TODO when do we update it in our catalog ?
}

View File

@@ -5,6 +5,7 @@ import (
_ "oc-catalog/routers"
oclib "cloud.o-forge.io/core/oc-lib"
"cloud.o-forge.io/core/oc-lib/config"
"cloud.o-forge.io/core/oc-lib/tools"
beego "github.com/beego/beego/v2/server/web"
)
@@ -22,5 +23,7 @@ func main() {
go infrastructure.ListenNATS()
go infrastructure.StartDockerScraper()
if config.GetConfig().IsApi {
beego.Run()
}
}

View File

@@ -40,6 +40,7 @@ func TypedSearchHandler(w http.ResponseWriter, r *http.Request) {
search := parts[len(parts)-1]
dt := "resource"
t := "partner"
extend := strings.Split(r.URL.Query().Get("extend"), ",")
if len(parts) >= 3 {
dt = parts[len(parts)-3]
}
@@ -51,16 +52,21 @@ func TypedSearchHandler(w http.ResponseWriter, r *http.Request) {
if dataType <= 0 {
dataType = -1
}
user, _, groups := oclib.ExtractTokenInfo(*r)
user, _, groups := oclib.ExtractTokenInfoWs(*r)
b, _ := json.Marshal(map[string]string{"search": search, "type": t})
infrastructure.EmitNATS(user, groups, tools.PropalgationMessage{
Action: tools.PB_SEARCH,
DataType: dataType,
Payload: b,
})
if len(extend) > 0 {
controllers.Websocket(r.Context(), user, groups, dataType, conn, extend...)
} else {
controllers.Websocket(r.Context(), user, groups, dataType, conn)
}
}
func init() {
ns := beego.NewNamespace("/oc",
beego.NSNamespace("/generic",

View File

@@ -231,6 +231,12 @@
"description": "find compute by id\n\u003cbr\u003e",
"operationId": "PurchaseController.GetAll",
"parameters": [
{
"in": "query",
"name": "extend",
"description": "extend",
"type": "string"
},
{
"in": "query",
"name": "is_draft",
@@ -288,6 +294,12 @@
"description": "find compute by key word\n\u003cbr\u003e",
"operationId": "PurchaseController.Get",
"parameters": [
{
"in": "query",
"name": "extend",
"description": "extend",
"type": "string"
},
{
"in": "path",
"name": "search",
@@ -329,6 +341,12 @@
"description": "find compute by id\n\u003cbr\u003e",
"operationId": "PurchaseController.Get",
"parameters": [
{
"in": "query",
"name": "extend",
"description": "extend",
"type": "string"
},
{
"in": "path",
"name": "id",
@@ -352,6 +370,12 @@
"description": "list all resources across all types\n\u003cbr\u003e",
"operationId": "ResourceController.GetAll",
"parameters": [
{
"in": "query",
"name": "extend",
"description": "extend",
"type": "string"
},
{
"in": "path",
"name": "type",
@@ -429,6 +453,12 @@
"description": "false",
"type": "string"
},
{
"in": "query",
"name": "extend",
"description": "extend",
"type": "string"
},
{
"in": "query",
"name": "offset",
@@ -483,7 +513,13 @@
{
"in": "query",
"name": "is_draft",
"description": "draft wished",
"description": "draft wished$",
"type": "string"
},
{
"in": "query",
"name": "extend",
"description": "extend",
"type": "string"
},
{
@@ -533,6 +569,12 @@
"name": "is_draft",
"description": "draft wished",
"type": "string"
},
{
"in": "query",
"name": "extend",
"description": "extend",
"type": "string"
}
],
"responses": {

View File

@@ -183,6 +183,10 @@ paths:
<br>
operationId: PurchaseController.GetAll
parameters:
- in: query
name: extend
description: extend
type: string
- in: query
name: is_draft
description: draft wished
@@ -224,6 +228,10 @@ paths:
<br>
operationId: PurchaseController.Get
parameters:
- in: query
name: extend
description: extend
type: string
- in: path
name: id
description: the id you want to get
@@ -241,6 +249,10 @@ paths:
<br>
operationId: PurchaseController.Get
parameters:
- in: query
name: extend
description: extend
type: string
- in: path
name: search
description: the search you want to get
@@ -270,6 +282,10 @@ paths:
<br>
operationId: ResourceController.GetAll
parameters:
- in: query
name: extend
description: extend
type: string
- in: path
name: type
description: the type you want to get
@@ -335,6 +351,10 @@ paths:
name: is_draft
description: draft wished
type: string
- in: query
name: extend
description: extend
type: string
responses:
"200":
description: '{resource} models.resource'
@@ -403,6 +423,10 @@ paths:
name: is_draft
description: "false"
type: string
- in: query
name: extend
description: extend
type: string
- in: query
name: offset
description: "false"
@@ -441,7 +465,11 @@ paths:
type: string
- in: query
name: is_draft
description: draft wished
description: draft wished$
type: string
- in: query
name: extend
description: extend
type: string
- in: query
name: offset