Tenho a seguinte estrutura JSON que representa um esquema de banco de dados:
{
"db": [
{
"tables": [
{
"name": "tblFoo",
"cols": [
{
"name": "created",
"types": [ { "data_type": "timestamp" } ]
},
{
"name": "updated",
"types": [ { "data_type": "timestamp" } ]
},
{
"name": "username",
"types": [ { "data_type": "timestamp" } ]
}
]
},
{
"name": "tblBar",
"cols": [
{
"name": "created",
"types": [ { "data_type": "timestamp" } ]
},
…
etc., você entendeu a ideia. Preciso que ele seja transformado em um conjunto sequencial de "comandos" json onde cada tabela e suas colunas são uma linha separada, assim:
[
{"type": "TABLE", name:"tblFoo"},
{"type": "COLUMN", name:"created", ofTable: "tblFoo"},
{"type": "COLUMN", name:"updated", ofTable: "tblFoo"},
…
{"type": "TABLE", name:"tblBar"},
{"type": "COLUMN", name:"created", ofTable: "tblBar"},
]
Eu simplesmente não consigo entender. Eu tentei .db.tables[] | map(…)
no começo, mas isso obviamente só cria uma matriz do primeiro nível, tabelas, e eu não consigo adicionar/injetar as definições de coluna no mesmo nível.
Então tentei iterar sobre as colunas como .db.tables[].cols[]
com o operador decente recursivo, mas novamente a lista resultante é apenas a das colunas e não consigo adicionar/injetar as da tabela na lista de saída.
Você pode me ajudar a entrar no caminho certo?