From ea69be8df1f3e48e4e1ed487b6b1a378853c603a Mon Sep 17 00:00:00 2001 From: mr Date: Fri, 17 Jan 2025 17:23:29 +0100 Subject: [PATCH] working oc-datacenter --- controllers/booking.go | 100 ++++++++++++++++++++++---------------- go.mod | 5 +- go.sum | 76 +++++++++++++++++++++++++++++ routers/commentsRouter.go | 9 ++++ swagger/swagger.json | 57 +++++++++++++++++++++- swagger/swagger.yml | 40 ++++++++++++++- 6 files changed, 242 insertions(+), 45 deletions(-) diff --git a/controllers/booking.go b/controllers/booking.go index cd89666..5d29fe1 100644 --- a/controllers/booking.go +++ b/controllers/booking.go @@ -8,8 +8,8 @@ import ( oclib "cloud.o-forge.io/core/oc-lib" "cloud.o-forge.io/core/oc-lib/dbs" + "cloud.o-forge.io/core/oc-lib/models/booking" b "cloud.o-forge.io/core/oc-lib/models/booking" - "cloud.o-forge.io/core/oc-lib/models/workflow_execution" beego "github.com/beego/beego/v2/server/web" "go.mongodb.org/mongo-driver/bson/primitive" ) @@ -19,10 +19,40 @@ type BookingController struct { beego.Controller } +// @Title Search +// @Description search bookings by execution +// @Param id path string true "id execution" +// @Param is_draft query string false "draft wished" +// @Success 200 {workspace} models.workspace +// @router /search/execution/:id [get] +func (o *BookingController) ExecutionSearch() { + /* + * This is a sample of how to use the search function + * The search function is used to search for data in the database + * The search function takes in a filter and a data type + * The filter is a struct that contains the search parameters + * The data type is an enum that specifies the type of data to search for + * The search function returns a list of data that matches the filter + * The data is then returned as a json object + */ + // store and return Id or post with UUID + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + id := o.Ctx.Input.Param(":id") + isDraft := o.Ctx.Input.Query("is_draft") + f := dbs.Filters{ + Or: map[string][]dbs.Filter{ // filter by name if no filters are provided + "execution_id": {{Operator: dbs.EQUAL.String(), Value: id}}, + }, + } + o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.BOOKING), user, peerID, groups, nil).Search(&f, "", isDraft == "true") + o.ServeJSON() +} + // @Title Search // @Description search bookings // @Param start_date path string true "the word search you want to get" // @Param end_date path string true "the word search you want to get" +// @Param is_draft query string false "draft wished" // @Success 200 {workspace} models.workspace // @router /search/:start_date/:end_date [get] func (o *BookingController) Search() { @@ -36,25 +66,30 @@ func (o *BookingController) Search() { * The data is then returned as a json object */ // store and return Id or post with UUID + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) start_date, _ := time.Parse("2006-01-02", o.Ctx.Input.Param(":start_date")) end_date, _ := time.Parse("2006-01-02", o.Ctx.Input.Param(":end_date")) + isDraft := o.Ctx.Input.Query("is_draft") sd := primitive.NewDateTimeFromTime(start_date) ed := primitive.NewDateTimeFromTime(end_date) f := dbs.Filters{ And: map[string][]dbs.Filter{ - "workflowexecution.execution_date": {{Operator: "gte", Value: sd}, {Operator: "lte", Value: ed}}, + "execution_date": {{Operator: "gte", Value: sd}, {Operator: "lte", Value: ed}}, }, } - o.Data["json"] = oclib.Search(&f, "", oclib.LibDataEnum(oclib.BOOKING)) + o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.BOOKING), user, peerID, groups, nil).Search(&f, "", isDraft == "true") o.ServeJSON() } // @Title GetAll // @Description find booking by id +// @Param is_draft query string false "draft wished" // @Success 200 {booking} models.booking // @router / [get] func (o *BookingController) GetAll() { - o.Data["json"] = oclib.LoadAll(oclib.LibDataEnum(oclib.BOOKING)) + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + isDraft := o.Ctx.Input.Query("is_draft") + o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.BOOKING), user, peerID, groups, nil).LoadAll(isDraft == "true") o.ServeJSON() } @@ -64,8 +99,9 @@ func (o *BookingController) GetAll() { // @Success 200 {booking} models.booking // @router /:id [get] func (o *BookingController) Get() { + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) id := o.Ctx.Input.Param(":id") - o.Data["json"] = oclib.LoadOne(oclib.LibDataEnum(oclib.BOOKING), id) + o.Data["json"] = oclib.NewRequest(oclib.LibDataEnum(oclib.BOOKING), user, peerID, groups, nil).LoadOne(id) o.ServeJSON() } @@ -74,6 +110,7 @@ func (o *BookingController) Get() { // @Param id path string "id of the datacenter" // @Param start_date path string "the booking start date" format "2006-01-02T15:04:05" // @Param end_date path string "the booking end date" format "2006-01-02T15:04:05" +// @Param is_draft query string false "draft wished" // @Success 200 {object} models.object // @router /check/:id/:start_date/:end_date [get] func (o *BookingController) Check() { @@ -81,7 +118,7 @@ func (o *BookingController) Check() { * This function is used to check if a booking is available for a specific datacenter. * It takes the following parameters: * - id: the id of the datacenter - * - start_date: the start date of the booking + * - start_date: the start date of the booking/search/execution/:id * - end_date: the end date of the booking */ id := o.Ctx.Input.Param(":id") @@ -96,8 +133,8 @@ func (o *BookingController) Check() { "error": errors.New("invalid date format"), } } else { - booking := &b.Booking{} // create a new booking object - isAvailable, err2 := booking.CheckBooking(id, date, &date2) // check if the booking is available + booking := &b.Booking{} // create a new booking object + isAvailable, err2 := booking.Check(id, date, &date2, 1) // check if the booking is available fmt.Println(isAvailable, err2) code := 200 err := "" @@ -119,9 +156,10 @@ func (o *BookingController) Check() { o.ServeJSON() } -// @Title Post +// @Title Poststatic. // @Description create booking // @Param booking body string true "the booking you want to post" +// @Param is_draft query string false "draft wished" // @Success 200 {object} models.object // @router / [post] func (o *BookingController) Post() { @@ -133,15 +171,16 @@ func (o *BookingController) Post() { * - datacenter_resource_id: the id of the datacenter * - workflow_execution: the workflow execution */ - var resp workflow_execution.WorkflowExecutions - json.Unmarshal(o.Ctx.Input.CopyBody(10000), &resp) + var resp booking.Booking + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + json.Unmarshal(o.Ctx.Input.CopyBody(100000), &resp) dc_id := resp.ResourceID // delete all previous bookings - fmt.Println("Deleting previous bookings", resp) - res := oclib.Search(&dbs.Filters{And: map[string][]dbs.Filter{ - "workflowexecution.workflow_id": {{Operator: dbs.EQUAL.String(), Value: resp.WorkflowID}}, - "compute_resource_id": {{Operator: dbs.EQUAL.String(), Value: dc_id}}, - }}, "", oclib.LibDataEnum(oclib.BOOKING)) + isDraft := o.Ctx.Input.Query("is_draft") + res := oclib.NewRequest(oclib.LibDataEnum(oclib.BOOKING), user, peerID, groups, nil).Search(&dbs.Filters{And: map[string][]dbs.Filter{ + "workflow_id": {{Operator: dbs.EQUAL.String(), Value: resp.WorkflowID}}, + "resource_id": {{Operator: dbs.EQUAL.String(), Value: dc_id}}, + }}, "", isDraft == "true") if res.Code != 200 { o.Data["json"] = map[string]interface{}{ "data": nil, @@ -152,35 +191,12 @@ func (o *BookingController) Post() { return } for _, b := range res.Data { // delete all previous bookings - oclib.DeleteOne(oclib.LibDataEnum(oclib.BOOKING), b.GetID()) + oclib.NewRequest(oclib.LibDataEnum(oclib.BOOKING), user, peerID, groups, nil).DeleteOne(b.GetID()) } - books := make([]interface{}, 0) + b := oclib.NewRequest(oclib.LibDataEnum(oclib.BOOKING), user, peerID, groups, nil).StoreOne(resp.Serialize(&resp)) errormsg := "" - for _, exec := range resp.Executions { // create new bookings - if ok, _ := (&b.Booking{}).CheckBooking(dc_id, *exec.ExecDate, exec.EndDate); !ok { - res.Err += " -> the booking from " + exec.ExecDate.String() + " is already taken." - o.Data["json"] = map[string]interface{}{ - "data": nil, - "code": res.Code, - "error": res.Err + " -> the booking from " + exec.ExecDate.String() + " is already taken.", - } - o.ServeJSON() - return - } - new := &b.Booking{ - ComputeResourceID: dc_id, - WorkflowExecution: *exec, - } - // store the booking - b := oclib.StoreOne(oclib.LibDataEnum(oclib.BOOKING), new.Serialize()) - if b.Code == 200 { - books = append(books, b.Data) - } else { - errormsg += " -> " + b.Err - } - } o.Data["json"] = map[string]interface{}{ - "data": books, + "data": []interface{}{b}, "code": 200, "error": errormsg, } diff --git a/go.mod b/go.mod index 70ebec5..a2a32d8 100644 --- a/go.mod +++ b/go.mod @@ -5,12 +5,13 @@ go 1.22.0 toolchain go1.22.4 require ( - cloud.o-forge.io/core/oc-lib v0.0.0-20241121074503-15ca06aba883 + cloud.o-forge.io/core/oc-lib v0.0.0-20250117152246-b85ca8674b27 github.com/beego/beego/v2 v2.3.1 ) require ( github.com/beorn7/perks v1.0.1 // indirect + github.com/biter777/countries v1.7.5 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/gabriel-vasile/mimetype v1.4.6 // indirect @@ -24,6 +25,7 @@ require ( github.com/klauspost/compress v1.17.11 // indirect github.com/kr/text v0.2.0 // indirect github.com/leodido/go-urn v1.4.0 // indirect + github.com/marcinwyszynski/geopoint v0.0.0-20140302213024-cf2a6f750c5b // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect @@ -37,6 +39,7 @@ require ( github.com/prometheus/client_model v0.6.1 // indirect github.com/prometheus/common v0.60.1 // indirect github.com/prometheus/procfs v0.15.1 // indirect + github.com/robfig/cron v1.2.0 // indirect github.com/robfig/cron/v3 v3.0.1 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/rs/zerolog v1.33.0 // indirect diff --git a/go.sum b/go.sum index 9a7d151..c90f752 100644 --- a/go.sum +++ b/go.sum @@ -44,6 +44,76 @@ cloud.o-forge.io/core/oc-lib v0.0.0-20241121071546-e9b3a65a0ec6 h1:AdUkzaX63VF3f cloud.o-forge.io/core/oc-lib v0.0.0-20241121071546-e9b3a65a0ec6/go.mod h1:ya7Q+zHhaKM+XF6sAJ+avqHEVzaMnFJQih2X3TlTlGo= cloud.o-forge.io/core/oc-lib v0.0.0-20241121074503-15ca06aba883 h1:JdHJT8vuup4pJCC7rjiOe0/qD7at6400ml5zZHjEeUo= cloud.o-forge.io/core/oc-lib v0.0.0-20241121074503-15ca06aba883/go.mod h1:ya7Q+zHhaKM+XF6sAJ+avqHEVzaMnFJQih2X3TlTlGo= +cloud.o-forge.io/core/oc-lib v0.0.0-20241202081145-cb21db672bb5 h1:qxXC6fkEa8bLTo0qn3VrB55tfxyjHQQa/0n97piJhNI= +cloud.o-forge.io/core/oc-lib v0.0.0-20241202081145-cb21db672bb5/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241202121923-2ec6899a1865 h1:BhGzhy6gsEA7vthuq6KWyABsRuF4KV5NqOvfkygytGg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241202121923-2ec6899a1865/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241202134851-9a2ed2351d7e h1:3U5JBdQRti2OpALLPhev6lkUi1TlYHgo2ADidOAfEAs= +cloud.o-forge.io/core/oc-lib v0.0.0-20241202134851-9a2ed2351d7e/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241202152644-e2ddd7e4e6f9 h1:qUA6T5Pjq/pv6dZYH4PWktXmFiRnloDX84m1U5NhvLM= +cloud.o-forge.io/core/oc-lib v0.0.0-20241202152644-e2ddd7e4e6f9/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241202155908-599a6144803e h1:3xGLiTDTgWHIIPDZyTo/clMIj+gQxnIDSE78s9/0wNE= +cloud.o-forge.io/core/oc-lib v0.0.0-20241202155908-599a6144803e/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241203073336-6042d47700fd h1:iDryCORnODgAvBe1Yi+RnIGjYgUSkAv7ZCnm+CUV18w= +cloud.o-forge.io/core/oc-lib v0.0.0-20241203073336-6042d47700fd/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241203082527-2924ccd23b5c h1:3ghuxLEI3JXicDYoFx4YnkLauLl0Nq9UErjpL/2SqEU= +cloud.o-forge.io/core/oc-lib v0.0.0-20241203082527-2924ccd23b5c/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241203090110-471e0c9d9b48 h1:kVTpROPipS4YtROH9vAGZw21OMLNR48qbYedCngGThw= +cloud.o-forge.io/core/oc-lib v0.0.0-20241203090110-471e0c9d9b48/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241203095728-ea55c94c7328 h1:7iK2HzMm0EEEF60ajUVT/6jwqIirduww5Xa3191XS4I= +cloud.o-forge.io/core/oc-lib v0.0.0-20241203095728-ea55c94c7328/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241203105751-4b88da8ff66d h1:iIo+AMQ09MshkKKN8K8pd1ooLaigAYlnUUnQAaCidLo= +cloud.o-forge.io/core/oc-lib v0.0.0-20241203105751-4b88da8ff66d/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241203115141-6681c455d8e0 h1:RnHCONn0oYbEaTN1wDIeOAEM12cCZQRtvjBCVCb0b1Y= +cloud.o-forge.io/core/oc-lib v0.0.0-20241203115141-6681c455d8e0/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241204103308-fd01f535a131 h1:FdUY8b8xTdVzQ9wlphlo8TlbQif76V9oxGDYq26TsAs= +cloud.o-forge.io/core/oc-lib v0.0.0-20241204103308-fd01f535a131/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241204111455-1fcbc7c08ab0 h1:cBr4m2tcLf+dZufrjYvhvcsSqXcRDeyhnq5c5HY15po= +cloud.o-forge.io/core/oc-lib v0.0.0-20241204111455-1fcbc7c08ab0/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20241205082103-fbbce7817b73 h1:g96KMOxdhvM7x6YFqJfd08wybRzCLEvol7HfhKJfxO4= +cloud.o-forge.io/core/oc-lib v0.0.0-20241205082103-fbbce7817b73/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20250110164331-5255ffc2f728 h1:3p1G82xZmEAu2OEyY5HM42Cfbb1J887P9lSoRKNhgg8= +cloud.o-forge.io/core/oc-lib v0.0.0-20250110164331-5255ffc2f728/go.mod h1:2IevepXviessA6m67fB6ZJhZSeEeoOYWbVqPS4dzkbg= +cloud.o-forge.io/core/oc-lib v0.0.0-20250113102407-21a7ff90104a h1:rrLSuAHI/TGOTm5d7Bffu+qf4EnmPguOll5x5nG/3Tc= +cloud.o-forge.io/core/oc-lib v0.0.0-20250113102407-21a7ff90104a/go.mod h1:VgWEn23ddKySWXrwPMhqtiBjTJnbm5t7yWjzfvNxbbI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250113114256-11905339bb24 h1:Kc51xKbnyfeafHpOJP7mWh9InNGqZUwcJR46008D+Eg= +cloud.o-forge.io/core/oc-lib v0.0.0-20250113114256-11905339bb24/go.mod h1:VgWEn23ddKySWXrwPMhqtiBjTJnbm5t7yWjzfvNxbbI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250113124812-6e5c87379649 h1:dmtrmNDdTR/2R3HjaIbPdu5LZViPzigwSjU207NXCxI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250113124812-6e5c87379649/go.mod h1:VgWEn23ddKySWXrwPMhqtiBjTJnbm5t7yWjzfvNxbbI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250113135241-a0f436b3e162 h1:oGP40P/uUngU7stnsRdx0jwxZGc+pzLzrMlUjEBSy0M= +cloud.o-forge.io/core/oc-lib v0.0.0-20250113135241-a0f436b3e162/go.mod h1:VgWEn23ddKySWXrwPMhqtiBjTJnbm5t7yWjzfvNxbbI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250114071722-1c32cd2d12df h1:T52jgXQddoxwe+embR26Fwmz4G2jkl4QpYVHGtiLUNI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250114071722-1c32cd2d12df/go.mod h1:VgWEn23ddKySWXrwPMhqtiBjTJnbm5t7yWjzfvNxbbI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250114081637-918006302bb4 h1:AwCbDHjvUz9iQaF7hgYWyabVF/EzSSSk5bCNgntNJ6c= +cloud.o-forge.io/core/oc-lib v0.0.0-20250114081637-918006302bb4/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250114105339-b782248da741 h1:akAQLlcAXDtUhbNHbona9xJrHCzK9jxlvsDsEpVP1fg= +cloud.o-forge.io/core/oc-lib v0.0.0-20250114105339-b782248da741/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250114135055-1a4694c8913a h1:AxnecA1YKOZ81OKb1akK2Qc/0UNDUxdjSww7ALyehas= +cloud.o-forge.io/core/oc-lib v0.0.0-20250114135055-1a4694c8913a/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250115082026-ad69c0495144 h1:MZ90rw4SKL0dqL/Lb+7E54vkk9fb8W6X0UJo9UW/XBk= +cloud.o-forge.io/core/oc-lib v0.0.0-20250115082026-ad69c0495144/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250115095644-be3803039583 h1:6My1sqjvqgHnC4TlE7RsZQHC8AVhad0gZl8uOvLTM9o= +cloud.o-forge.io/core/oc-lib v0.0.0-20250115095644-be3803039583/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250115102820-0e0540af43d0 h1:AcHC2WIeHOSjz5xe7OsjMi39EevxdY2O/9q0VMkDRz0= +cloud.o-forge.io/core/oc-lib v0.0.0-20250115102820-0e0540af43d0/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250116091455-68f418928395 h1:u4myLPGqBbzprWHg6713k5a++4yiq1ujlVy7yrMkZ9g= +cloud.o-forge.io/core/oc-lib v0.0.0-20250116091455-68f418928395/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250116142544-a4a249bab828 h1:yMDBDTs7LECyueUfh0iug502GN8GodVpQSl/gZchUjU= +cloud.o-forge.io/core/oc-lib v0.0.0-20250116142544-a4a249bab828/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117081640-450fab437cb7 h1:SV9U48sR09cNRl48489lQHrrKJFtTMQoQcRhmtsLTYQ= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117081640-450fab437cb7/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117090737-b990fe42d375 h1:UsPWfbVgvUcOC3BtD8B9dUQfv/FnRF4IZGrYxUJr1iM= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117090737-b990fe42d375/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117100508-d44fb976e4ff h1:GaLrVn6ame6BV7pfUB2xeHCCJLBECRiCCpPj6zteL+s= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117100508-d44fb976e4ff/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117121920-ed787683f47b h1:3wap+dPPplJkDglE5toKfdFUmjobAeIJWdiRtCQ3xkQ= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117121920-ed787683f47b/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117124801-e5c7dbe4cb96 h1:opQ/Uku27DOKAqDcKC9k6J9H5Tj9bNyKdHnJnD3U850= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117124801-e5c7dbe4cb96/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117135417-c63a1fef6c48 h1:dEebv8ZV5rt6BYPkcK6HOts+OPqkSxkKp5zn1lCq1vs= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117135417-c63a1fef6c48/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117152246-b85ca8674b27 h1:QEIj90eIoYsjs1uekbI3Nu48KDWmzGV7ugcr9agJbYI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250117152246-b85ca8674b27/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/beego/beego/v2 v2.3.0 h1:iECVwzm6egw6iw6tkWrEDqXG4NQtKLQ6QBSYqlM6T/I= github.com/beego/beego/v2 v2.3.0/go.mod h1:Ob/5BJ9fIKZLd4s9ZV3o9J6odkkIyL83et+p98gyYXo= @@ -52,6 +122,8 @@ github.com/beego/beego/v2 v2.3.1/go.mod h1:5cqHsOHJIxkq44tBpRvtDe59GuVRVv/9/tyVD github.com/beego/beego/v2 v2.3.2/go.mod h1:5cqHsOHJIxkq44tBpRvtDe59GuVRVv/9/tyVDxd5ce4= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/biter777/countries v1.7.5 h1:MJ+n3+rSxWQdqVJU8eBy9RqcdH6ePPn4PJHocVWUa+Q= +github.com/biter777/countries v1.7.5/go.mod h1:1HSpZ526mYqKJcpT5Ti1kcGQ0L0SrXWIaptUWjFfv2E= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/coreos/etcd v3.3.17+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -113,6 +185,8 @@ github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+ github.com/leodido/go-urn v1.4.0 h1:WT9HwE9SGECu3lg4d/dIA+jxlljEa1/ffXKmRjqdmIQ= github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjSBOlFxI= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= +github.com/marcinwyszynski/geopoint v0.0.0-20140302213024-cf2a6f750c5b h1:XBF8THPBy28s2ryI7+/Jf/847unLWxYMpJveX5Kox+0= +github.com/marcinwyszynski/geopoint v0.0.0-20140302213024-cf2a6f750c5b/go.mod h1:z1oqhOuuYpPHmUmAK2aNygKFlPdb4o3PppQnVTRFdrI= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -156,6 +230,8 @@ github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPA github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ= +github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= diff --git a/routers/commentsRouter.go b/routers/commentsRouter.go index e7dd0e8..118259a 100644 --- a/routers/commentsRouter.go +++ b/routers/commentsRouter.go @@ -52,6 +52,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["oc-datacenter/controllers:BookingController"] = append(beego.GlobalControllerRouter["oc-datacenter/controllers:BookingController"], + beego.ControllerComments{ + Method: "ExecutionSearch", + Router: `/search/execution/:id`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["oc-datacenter/controllers:VersionController"] = append(beego.GlobalControllerRouter["oc-datacenter/controllers:VersionController"], beego.ControllerComments{ Method: "GetAll", diff --git a/swagger/swagger.json b/swagger/swagger.json index 2095ab2..88e1508 100644 --- a/swagger/swagger.json +++ b/swagger/swagger.json @@ -22,6 +22,14 @@ ], "description": "find booking by id\n\u003cbr\u003e", "operationId": "BookingController.GetAll", + "parameters": [ + { + "in": "query", + "name": "is_draft", + "description": "draft wished", + "type": "string" + } + ], "responses": { "200": { "description": "{booking} models.booking" @@ -33,7 +41,7 @@ "booking" ], "description": "create booking\n\u003cbr\u003e", - "operationId": "BookingController.Post", + "operationId": "BookingController.Poststatic.", "parameters": [ { "in": "body", @@ -44,6 +52,12 @@ "type": "string" }, "type": "string" + }, + { + "in": "query", + "name": "is_draft", + "description": "draft wished", + "type": "string" } ], "responses": { @@ -83,6 +97,12 @@ "description": "2006-01-02T15:04:05", "type": "string", "default": "the booking end date" + }, + { + "in": "query", + "name": "is_draft", + "description": "draft wished", + "type": "string" } ], "responses": { @@ -95,6 +115,35 @@ } } }, + "/booking/search/execution/{id}": { + "get": { + "tags": [ + "booking" + ], + "description": "search bookings by execution\n\u003cbr\u003e", + "operationId": "BookingController.Search", + "parameters": [ + { + "in": "path", + "name": "id", + "description": "id execution", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "is_draft", + "description": "draft wished", + "type": "string" + } + ], + "responses": { + "200": { + "description": "{workspace} models.workspace" + } + } + } + }, "/booking/search/{start_date}/{end_date}": { "get": { "tags": [ @@ -116,6 +165,12 @@ "description": "the word search you want to get", "required": true, "type": "string" + }, + { + "in": "query", + "name": "is_draft", + "description": "draft wished", + "type": "string" } ], "responses": { diff --git a/swagger/swagger.yml b/swagger/swagger.yml index 667b1b5..3101854 100644 --- a/swagger/swagger.yml +++ b/swagger/swagger.yml @@ -20,6 +20,11 @@ paths: find booking by id
operationId: BookingController.GetAll + parameters: + - in: query + name: is_draft + description: draft wished + type: string responses: "200": description: '{booking} models.booking' @@ -29,7 +34,7 @@ paths: description: |- create booking
- operationId: BookingController.Post + operationId: BookingController.Poststatic. parameters: - in: body name: booking @@ -38,6 +43,10 @@ paths: schema: type: string type: string + - in: query + name: is_draft + description: draft wished + type: string responses: "200": description: "" @@ -83,6 +92,10 @@ paths: description: 2006-01-02T15:04:05 type: string default: the booking end date + - in: query + name: is_draft + description: draft wished + type: string responses: "200": description: "" @@ -107,6 +120,31 @@ paths: description: the word search you want to get required: true type: string + - in: query + name: is_draft + description: draft wished + type: string + responses: + "200": + description: '{workspace} models.workspace' + /booking/search/execution/{id}: + get: + tags: + - booking + description: |- + search bookings by execution +
+ operationId: BookingController.Search + parameters: + - in: path + name: id + description: id execution + required: true + type: string + - in: query + name: is_draft + description: draft wished + type: string responses: "200": description: '{workspace} models.workspace'