Browse Source

[upd] name module

wpr-672-secrets
loveckiy.ivan 3 weeks ago
parent
commit
43cb78769d
  1. 2
      crypto.go
  2. 2
      function.go
  3. 4
      go.mod
  4. 11
      go.sum
  5. 2
      http.go
  6. 2
      vendor/git.lowcodeplatform.net/fabric/models/.gitconfig
  7. 9
      vendor/git.lowcodeplatform.net/fabric/models/.gitignore
  8. 3
      vendor/git.lowcodeplatform.net/fabric/models/README.md
  9. 103
      vendor/git.lowcodeplatform.net/fabric/models/code.go
  10. 178
      vendor/git.lowcodeplatform.net/fabric/models/data.go
  11. 18
      vendor/git.lowcodeplatform.net/fabric/models/http.go
  12. 38
      vendor/git.lowcodeplatform.net/fabric/models/ping.go
  13. 80
      vendor/git.lowcodeplatform.net/fabric/models/profile.go
  14. 25
      vendor/git.lowcodeplatform.net/fabric/models/token.go
  15. 50
      vendor/git.lowcodeplatform.net/fabric/models/tree.go
  16. 4
      vendor/modules.txt

2
crypto.go

@ -13,7 +13,7 @@ import (
"strings"
"time"
"git.lowcodeplatform.net/fabric/models"
"git.edtech.vm.prod-6.cloud.el/fabric/models"
"golang.org/x/crypto/argon2"
)

2
function.go

@ -15,7 +15,7 @@ import (
"syscall"
"time"
"git.lowcodeplatform.net/fabric/models"
"git.edtech.vm.prod-6.cloud.el/fabric/models"
"github.com/segmentio/ksuid"
)

4
go.mod

@ -1,9 +1,9 @@
module git.lowcodeplatform.net/fabric/lib
module git.edtech.vm.prod-6.cloud.el/fabric/lib
go 1.18
require (
git.lowcodeplatform.net/fabric/models v0.1.27
git.edtech.vm.prod-6.cloud.el/fabric/models v0.1.39
github.com/BurntSushi/toml v1.2.0
github.com/ReneKroon/ttlcache v1.7.0
github.com/aws/aws-sdk-go v1.40.45

11
go.sum

@ -42,8 +42,11 @@ cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9
cloud.google.com/go/storage v1.28.0 h1:DLrIZ6xkeZX6K70fU/boWx5INJumt6f+nwwWSHXzzGY=
cloud.google.com/go/storage v1.28.0/go.mod h1:qlgZML35PXA3zoEnIkiPLY4/TOkUleufRlu6qmcf7sI=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
git.lowcodeplatform.net/fabric/models v0.1.27 h1:LXS9y6/NWyDwBlb59kZLYxviHNAfY99H/qVLzMUGyK8=
git.lowcodeplatform.net/fabric/models v0.1.27/go.mod h1:RSR+ysusHS7bhYOCDuWbkuGQkFL0Mum4r/FXPzStUQQ=
git.edtech.vm.prod-6.cloud.el/fabric/models v0.1.27 h1:LXS9y6/NWyDwBlb59kZLYxviHNAfY99H/qVLzMUGyK8=
git.edtech.vm.prod-6.cloud.el/fabric/models v0.1.27 h1:hHlYGb1SCnnikGHoXmndU+XK2QGRQoCIX1lmXZJJhNM=
git.edtech.vm.prod-6.cloud.el/fabric/models v0.1.27/go.mod h1:RSR+ysusHS7bhYOCDuWbkuGQkFL0Mum4r/FXPzStUQQ=
git.edtech.vm.prod-6.cloud.el/fabric/models v0.1.39 h1:e4CJccgTs+6t9M2TacemoEKqhHOyOEJsP7GIHgtXRkA=
git.edtech.vm.prod-6.cloud.el/fabric/models v0.1.39/go.mod h1:uzhSJ9iRFnuW3Y2eu4/fT2d4A5NGrHEr02N9ekWjtW4=
github.com/Azure/azure-sdk-for-go v32.5.0+incompatible h1:Hn/DsObfmw0M7dMGS/c0MlVrJuGFzHzOpBWL89acR68=
github.com/Azure/azure-sdk-for-go v32.5.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
@ -93,6 +96,8 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI=
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY=
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
@ -105,6 +110,7 @@ github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE=
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/gabriel-vasile/mimetype v1.4.1 h1:TRWk7se+TOjCYgRth7+1/OYLNiRNIotknkFtf/dnN7Q=
github.com/gabriel-vasile/mimetype v1.4.1/go.mod h1:05Vi0w3Y9c/lNvJOdmIwvrrAhX3rYhfQQCaf9VJcv7M=
@ -176,6 +182,7 @@ github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPg
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0=
github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ=
github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=

2
http.go

@ -13,7 +13,7 @@ import (
"strings"
"time"
"git.lowcodeplatform.net/fabric/models"
"git.edtech.vm.prod-6.cloud.el/fabric/models"
"github.com/labstack/gommon/color"
)

2
vendor/git.lowcodeplatform.net/fabric/models/.gitconfig

@ -1,2 +0,0 @@
[url "ssh://git@git.lowcodeplatform.net/"]
insteadOf = https://git.lowcodeplatform.net/

9
vendor/git.lowcodeplatform.net/fabric/models/.gitignore

@ -1,9 +0,0 @@
.history
.idea
.vscode
.DS_Store
*~merged*
*~merged
/public
.env
local

3
vendor/git.lowcodeplatform.net/fabric/models/README.md

@ -1,3 +0,0 @@
# models
Модели общих сущностей проекта Lowcodeplatform Fabric

103
vendor/git.lowcodeplatform.net/fabric/models/code.go

@ -1,103 +0,0 @@
package models
import (
"encoding/json"
"errors"
)
var StatusCode = RStatus{
"OK": {"", "Запрос выполнен", 200, "", nil},
"OKLicenseActivation": {"", "Лицензия была активирована", 200, "", nil},
"Unauthorized": {"", "Ошибка авторизации", 401, "", nil},
"NotCache": {"", "Доступно только в Турбо-режиме", 200, "", nil},
"NotStatus": {"", "Ответ сервера не содержит статус выполнения запроса", 501, "", nil},
"NotExtended": {"", "На сервере отсутствует расширение, которое желает использовать клиент", 501, "", nil},
"ErrorFormatJson": {"", "Ошибка формата JSON-запроса", 500, "ErrorFormatJson", nil},
"ErrorTransactionFalse": {"", "Ошибка выполнения тразакции SQL", 500, "ErrorTransactionFalse", nil},
"ErrorBeginDB": {"", "Ошибка подключения к БД", 500, "ErrorBeginDB", nil},
"ErrorPrepareSQL": {"", "Ошибка подготовки запроса SQL", 500, "ErrorPrepareSQL", nil},
"ErrorNullParameter": {"", "Ошибка! Не передан параметр", 503, "ErrorNullParameter", nil},
"ErrorQuery": {"", "Ошибка запроса на выборку данных", 500, "ErrorQuery", nil},
"ErrorScanRows": {"", "Ошибка переноса данных из запроса в объект", 500, "ErrorScanRows", nil},
"ErrorNullFields": {"", "Не все поля заполнены", 500, "ErrorScanRows", nil},
"ErrorAccessType": {"", "Ошибка доступа к элементу типа", 500, "ErrorAccessType", nil},
"ErrorGetData": {"", "Ошибка доступа данным объекта", 500, "ErrorGetData", nil},
"ErrorRevElement": {"", "Значение было изменено ранее.", 409, "ErrorRevElement", nil},
"ErrorForbiddenElement": {"", "Значение занято другим пользователем.", 403, "ErrorForbiddenElement", nil},
"ErrorUnprocessableEntity": {"", "Необрабатываемый экземпляр", 422, "ErrorUnprocessableEntity", nil},
"ErrorNotFound": {"", "Значение не найдено", 404, "ErrorNotFound", nil},
"ErrorReadDir": {"", "Ошибка чтения директории", 403, "ErrorReadDir", nil},
"ErrorReadConfigDir": {"", "Ошибка чтения директории конфигураций", 403, "ErrorReadConfigDir", nil},
"errorOpenConfigDir": {"", "Ошибка открытия директории конфигураций", 403, "errorOpenConfigDir", nil},
"ErrorReadConfigFile": {"", "Ошибка чтения файла конфигураций", 403, "ErrorReadConfigFile", nil},
"ErrorReadLogFile": {"", "Ошибка чтения файла логирования", 403, "ErrorReadLogFile", nil},
"ErrorScanLogFile": {"", "Ошибка построчного чтения файла логирования", 403, "ErrorScanLogFile", nil},
"ErrorPortBusy": {"", "Указанный порт занят", 403, "ErrorPortBusy", nil},
"ErrorGone": {"", "Объект был удален ранее", 410, "ErrorGone", nil},
"ErrorShema": {"", "Ошибка формата заданной схемы формирования запроса", 410, "ErrorShema", nil},
"ErrorInitBase": {"", "Ошибка инициализации новой базы данных", 410, "ErrorInitBase", nil},
"ErrorCreateCacheRecord": {"", "Ошибка создания объекта в кеше", 410, "ErrorCreateCacheRecord", nil},
"ErrorUpdateParams": {"", "Не переданы параметры для обновления серверов (сервер источник, сервер получатель)", 410, "ErrorUpdateParams", nil},
"ErrorIntervalProxy": {"", "Ошибка переданного интервала (формат: 1000:2000)", 410, "ErrorIntervalProxy", nil},
"ErrorReservPortProxy": {"", "Ошибка выделения порта proxy-сервером", 410, "ErrorReservPortProxy", nil},
}
type RStatus map[string]RestStatus
type RestStatus struct {
Source string `json:"source,omitempty"`
Description string `json:"description"`
Status int `json:"status"`
Code string `json:"code"`
Error error `json:"error"`
}
func (r RestStatus) MarshalJSON() ([]byte, error) {
type RestStatusJson struct {
Source string `json:"source,omitempty"`
Description string `json:"description"`
Status int `json:"status"`
Code string `json:"code"`
Error string `json:"error"`
}
errStr := ""
if r.Error != nil {
errStr = r.Error.Error()
}
return json.Marshal(RestStatusJson{
Source: r.Source,
Description: r.Description,
Status: r.Status,
Code: r.Code,
Error: errStr,
})
}
func (r RestStatus) UnmarshalJSON(b []byte) error {
type RestStatusJson struct {
Source string `json:"source"`
Description string `json:"description"`
Status int `json:"status"`
Code string `json:"code"`
Error string `json:"error"`
}
t := RestStatusJson{}
err := json.Unmarshal(b, &t)
if err != nil {
return err
}
r.Source = t.Source
r.Description = t.Description
r.Code = t.Code
r.Status = t.Status
if t.Error == "" {
r.Error = nil
} else {
r.Error = errors.New(t.Error)
}
return nil
}

178
vendor/git.lowcodeplatform.net/fabric/models/data.go

@ -1,178 +0,0 @@
package models
import "strings"
type Data struct {
Uid string `json:"uid"`
Id string `json:"id"`
Source string `json:"source"`
Parent string `json:"parent"`
Type string `json:"type"`
Title string `json:"title"`
Rev string `json:"rev"`
Copies string `json:"copies"`
Attributes map[string]Attribute `json:"attributes"`
}
type Attribute struct {
Value string `json:"value"`
Src string `json:"src"`
Tpls string `json:"tpls"`
Status string `json:"status"`
Rev string `json:"rev"`
Editor string `json:"editor"`
}
type Response struct {
Data interface{} `json:"data"`
Status RestStatus `json:"status"`
Metrics Metrics `json:"metrics"`
}
type ResponseData struct {
Data []Data `json:"data"`
Res interface{} `json:"res"`
Status RestStatus `json:"status"`
Metrics Metrics `json:"metrics"`
}
type Metrics struct {
ResultSize int `json:"result_size"`
ResultCount int `json:"result_count"`
ResultOffset int `json:"result_offset"`
ResultLimit int `json:"result_limit"`
ResultPage int `json:"result_page"`
TimeExecution string `json:"time_execution"`
TimeQuery string `json:"time_query"`
PageLast int `json:"page_last"`
PageCurrent int `json:"page_current"`
PageList []int `json:"page_list"`
PageFrom int `json:"page_from"`
PageTo int `json:"page_to"`
}
// Attr возвращаем необходимый значение атрибута для объекта если он есть, инае пусто
// а также из заголовка объекта
func (p *Data) Attr(name, element string) (result string, found bool) {
if _, found := p.Attributes[name]; found {
// фикс для тех объектов, на которых добавлено скрытое поле Uid
if name == "uid" {
return p.Uid, true
}
switch element {
case "src":
return p.Attributes[name].Src, true
case "value":
return p.Attributes[name].Value, true
case "tpls":
return p.Attributes[name].Tpls, true
case "rev":
return p.Attributes[name].Rev, true
case "status":
return p.Attributes[name].Status, true
case "uid":
return p.Uid, true
case "source":
return p.Source, true
case "id":
return p.Id, true
case "title":
return p.Title, true
case "type":
return p.Type, true
}
} else {
switch element {
case "uid":
return p.Uid, true
case "source":
return p.Source, true
case "rev":
return p.Rev, true
case "id":
return p.Id, true
case "title":
return p.Title, true
case "type":
return p.Type, true
}
}
return "", false
}
// AttrSet заменяем значение аттрибутов в объекте профиля
func (p *Data) AttrSet(name, element, value string) bool {
g := Attribute{}
for k, v := range p.Attributes {
if k == name {
g = v
}
}
switch element {
case "src":
g.Src = value
case "value":
g.Value = value
case "tpls":
g.Tpls = value
case "rev":
g.Rev = value
case "status":
g.Status = value
}
f := p.Attributes
for k, _ := range f {
if k == name {
f[k] = g
return true
}
}
return false
}
// RemoveData удаляем элемент из слайса
func (p *ResponseData) RemoveData(i int) bool {
if i < len(p.Data) {
p.Data = append(p.Data[:i], p.Data[i+1:]...)
} else {
//log.Warning("Error! Position invalid (", i, ")")
return false
}
return true
}
// FilterRole применяем ограничения доступа для объектов типа ResponseData
// фильтруем массив данных
// если непустое поле access_read, значит назначены права, а следовательно проверяем право просмотра для роли пользователя
// также возвращаем
func (p *ResponseData) FilterRole(role string) {
sliceData := p.Data
for i := len(sliceData) - 1; i >= 0; i-- {
v := sliceData[i]
attr_read, _ := v.Attr("access_read", "src")
attr_write, _ := v.Attr("attr_write", "src")
attr_delete, _ := v.Attr("attr_delete", "src")
attr_admin, _ := v.Attr("attr_admin", "src")
if (!strings.Contains(attr_read, role) || attr_read == "") &&
(!strings.Contains(attr_write, role) || attr_write == "") &&
(!strings.Contains(attr_delete, role) || attr_delete == "") &&
(!strings.Contains(attr_admin, role) || attr_admin == "") {
p.RemoveData(i)
}
}
return
}

18
vendor/git.lowcodeplatform.net/fabric/models/http.go

@ -1,18 +0,0 @@
package models
const (
headerXRequestID = "X-Request-ID"
headerXUserID = "X-User-ID"
headerXRequestUnit = "X-Request-Unit"
headerXRequestService = "X-Request-Service"
requestIDField = "request-id"
userIDField = "user-id"
serviceIDField = "service-id"
configIDField = "config-id"
)
var ProxiedHeaders = map[string]string{
requestIDField: headerXRequestID,
userIDField: headerXUserID,
}

38
vendor/git.lowcodeplatform.net/fabric/models/ping.go

@ -1,38 +0,0 @@
package models
// Pong тип ответа, который сервис отдает прокси при периодическом опросе (ping-е)
type Pong struct {
Uid string `json:"uid"`
Config string `json:"config"`
Name string `json:"name"`
Version string `json:"version"`
Status string `json:"status"`
Host string `json:"host"`
Pid string `json:"pid"`
Replicas int `json:"replicas"`
PortHTTP int `json:"portHTTP"`
PortGrpc int `json:"portGrpc"`
PortMetric int `json:"portMetric"`
PortHTTPS int `json:"portHTTPS"`
EnableHttps bool `json:"enableHttps"`
DeadTime int64 `json:"dead_time"`
Follower string `json:"follower"`
Metrics interface{} `json:"metrics"`
Environment string `json:"environment"`
ServiceVersion string `json:"service_version"`
HashCommit string `json:"hash_commit"`
//deprecated
Port int `json:"port"`
State string `json:"state"`
Https bool `json:"https"`
AccessPublic bool `json:"access_public"`
}
type Hosts struct {
Host string `json:"host"`
PortFrom int `json:"portfrom"`
PortTo int `json:"portto"`
Protocol string `json:"protocol"`
}

80
vendor/git.lowcodeplatform.net/fabric/models/profile.go

@ -1,80 +0,0 @@
package models
type ProfileData struct {
Revision string `json:"revision"` // ревизия текущей сессии (если сессия обновляется (меняется профиль) - ID-сессии остается, но ревизия меняется
Hash string `json:"hash"`
Email string `json:"email"`
Uid string `json:"uid"`
ObjUid string `json:"obj_uid"`
FirstName string `json:"first_name"`
LastName string `json:"last_name"`
Photo string `json:"photo"`
Age string `json:"age"`
City string `json:"city"`
Country string `json:"country"`
Oauth_identity string `json:"oauth_identity"`
Status string `json:"status"` // - src поля Status в профиле (иногда необходимо для доп.фильтрации)
Raw []Data `json:"raw"` // объект пользователя (нужен при сборки проекта для данного юзера при добавлении прав на базу)
Tables []Data `json:"tables"`
//Roles []Data // разремить после запуска новой версии
Roles map[string]string `json:"roles"` // deprecated
Homepage string `json:"homepage"`
Maket string `json:"maket"`
UpdateFlag bool `json:"update_flag"`
UpdateData []Data `json:"update_data"`
CurrentRole Data `json:"current_role"`
Profiles []Data `json:"profiles"`
CurrentProfile Data `json:"current_profile"`
Navigator []*Items `json:"navigator"`
Groups string
GroupsValue string
GroupsDefaultSrc string
GroupsDefaultValue string
ButtonsNavTop []Data
CountLicense int
BaseMode map[string]string
// TODO проверить где используется и выпилить
RolesOld map[string]string `json:"roles"` //deplicated
First_name string //deplicated
Last_name string //deplicated
Identity string `json:"identity"`
Phone string `json:"phone"`
}
type Items struct {
Title string `json:"title"`
ExtentedLink string `json:"extentedLink"`
Uid string `json:"uid"`
Source string `json:"source"`
Icon string `json:"icon"`
Leader string `json:"leader"`
Order string `json:"order"`
Type string `json:"type"`
Preview string `json:"preview"`
Url string `json:"url"`
Sub []string `json:"sub"`
Incl []*Items `json:"incl"`
Class string `json:"class"`
FinderMode string `json:"finder_mode"`
}
// ScanSub метод типа Items (перемещаем структуры в карте, исходя из заявленной вложенности элементов)
// (переделать дубль фукнции)
func (p *Items) ScanSub(maps *map[string]*Items) {
if p.Sub != nil && len(p.Sub) != 0 {
for _, c := range p.Sub {
gg := *maps
fromP := gg[c]
if fromP != nil {
copyPolygon := *fromP
p.Incl = append(p.Incl, &copyPolygon)
delete(*maps, c)
copyPolygon.ScanSub(maps)
}
}
}
}

25
vendor/git.lowcodeplatform.net/fabric/models/token.go

@ -1,25 +0,0 @@
package models
import "github.com/golang-jwt/jwt"
type Token struct {
Uid string
Role string
Profile string
Groups string
Local string
Type string
Session string
SessionRev string // ревизия текущей сессии (если сессия обновляется (меняется профиль) - ID-сессии остается, но ревизия меняется
jwt.StandardClaims
}
type Roles struct {
Title string
Uid string
}
type XServiceKey struct {
Domain string
Expired int64
}

50
vendor/git.lowcodeplatform.net/fabric/models/tree.go

@ -1,50 +0,0 @@
package models
type DataTree struct {
Uid string `json:"uid"`
Id string `json:"id"`
Source string `json:"source"`
Parent string `json:"parent"`
Type string `json:"type"`
Title string `json:"title"`
Rev string `json:"rev"`
Сopies string `json:"copies"`
Attributes map[string]Attribute `json:"attributes"`
Sub []string `json:"sub"`
Incl []*DataTree `json:"incl"`
}
type DataTreeOut struct {
Uid string `json:"uid"`
Id string `json:"id"`
Source string `json:"source"`
Parent string `json:"parent"`
Type string `json:"type"`
Title string `json:"title"`
Rev string `json:"rev"`
Сopies string `json:"copies"`
Attributes map[string]Attribute `json:"attributes"`
Sub []string `json:"sub"`
Incl []DataTree `json:"incl"`
}
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
// метод типа Items (перемещаем структуры в карте, исходя из заявленной вложенности элементов)
// (переделать дубль фукнции)
func (p *DataTree) ScanSub(maps *map[string]*DataTree) {
if p.Sub != nil && len(p.Sub) != 0 {
for _, c := range p.Sub {
gg := *maps
fromP := gg[c]
if fromP != nil {
copyPolygon := *fromP
p.Incl = append(p.Incl, &copyPolygon)
delete(*maps, c)
copyPolygon.ScanSub(maps)
}
}
}
}

4
vendor/modules.txt

@ -19,9 +19,9 @@ cloud.google.com/go/storage
cloud.google.com/go/storage/internal
cloud.google.com/go/storage/internal/apiv2
cloud.google.com/go/storage/internal/apiv2/stubs
# git.lowcodeplatform.net/fabric/models v0.1.27
# git.edtech.vm.prod-6.cloud.el/fabric/models v0.1.39
## explicit; go 1.17
git.lowcodeplatform.net/fabric/models
git.edtech.vm.prod-6.cloud.el/fabric/models
# github.com/Azure/azure-sdk-for-go v32.5.0+incompatible
## explicit
github.com/Azure/azure-sdk-for-go/storage

Loading…
Cancel
Save