Чтение строк таблицы MS SQL в карту для итерации по API - PullRequest
0 голосов
/ 07 августа 2020

У меня возникли проблемы с получением строк таблицы MS SQL для повторения значений по запросу для вызова API. Я пробовал использовать альтернативные типы сканирования sqlx (MapScan()) для получения того, что мне нужно. Он вернет правильные имена ключей столбцов на карте, но не правильные значения. Я получил пример кода отсюда: https://jmoiron.github.io/sqlx/

MS SQL вывод с использованием MapScan:

map[DB_Name:[104 100 99 118 99 108 48 53 48 48 51]
    Project_DB_Name:[67 121 116 111 114 105]
    Status:[78 111 116 32 83 116 97 114 116 101 100]]

Вопрос в том, создает карту - лучший маршрут для итерации по API, или мне следует создать структуру db: или json:? Мой план состоит в том, чтобы выполнить итерацию DB_Name для одного вызова API, а вывод добавить к карте или структуре [], чтобы я мог повторять output, DB_Name и Project_DB_Name для другого вызова API.

ОБНОВЛЕНИЕ:

Я читал, что создание структуры быстрее с точки зрения производительности, и поэтому создал структуру db:. После получения строк из таблицы возвращается тип []main.DBS.

type DBS struct {
    ProjectDBName string `db:"Project_DB_Name"`
    DBName        string `db:"DB_Name"`
    Status        string `db:"Status"`
}

func main() {
    Databases, err := ReadTrkgTbl(SQLServer, Database, TrkgTbl, BatchSize)
    if err != nil {
        log.Fatal(err)
    }
    m, _ := json.Marshal(Databases)
    s := string(m)
    fmt.Println(s)
}

ВЫХОД:

[{"ProjectDBName":"Project1","DBName":"db19156","Status":"Not Started"},
 {"ProjectDBName":"Project2","DBName":"db10231","Status":"Not Started"},
 {"ProjectDBName":"Project3","DBName":"db18134","Status":"Not Started"}]

Мой второй вопрос: как взять значения из ключа DBName и повторять его по функции.

func DBId(session *Credentials, DBName string) (string, error) {
    r, err := session.Get(fmt.Sprintf("/mssql/db?name=%s", DBName))
    if err != nil {
        log.Fatal(err)
    }
       // do something with r
}

Нужно ли мне создавать новую структуру с "id" (строка)? Как я могу использовать значения []main.DBS с "id" для следующей функции, которая использует ProjectDBName, DBName и "id"?

...