Merge pull request #37 from fleetside72/schema

Schema
This commit is contained in:
fleetside72 2018-12-02 01:48:33 -05:00 committed by GitHub
commit 0398544a51
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 104 additions and 66 deletions

2
.gitignore vendored
View File

@ -2,3 +2,5 @@
.dbeaver-data-sources.xml .dbeaver-data-sources.xml
.project .project
Scripts/ Scripts/
*.log
*.swp

View File

@ -7,70 +7,76 @@
"{Post Date}", "{Post Date}",
"{Description}" "{Description}"
], ],
"schemas": { "schemas": [
"default": [ {
{ "name": "default",
"path": "{Trans. Date}", "columns": [
"type": "date", {
"column_name": "Trans. Date" "path": "{Trans. Date}",
}, "type": "date",
{ "column_name": "Trans. Date"
"path": "{Post Date}", },
"type": "date", {
"column_name": "Post Date" "path": "{Post Date}",
}, "type": "date",
{ "column_name": "Post Date"
"path": "{Description}", },
"type": "text", {
"column_name": "Description" "path": "{Description}",
}, "type": "text",
{ "column_name": "Description"
"path": "{Amount}", },
"type": "numeric", {
"column_name": "Amount" "path": "{Amount}",
}, "type": "numeric",
{ "column_name": "Amount"
"path": "{Category}", },
"type": "text", {
"column_name": "Category" "path": "{Category}",
} "type": "text",
], "column_name": "Category"
"mapped": [ }
{ ]
"path": "{Trans. Date}", },
"type": "date", {
"column_name": "Trans. Date" "name": "mapped",
}, "columns": [
{ {
"path": "{Post Date}", "path": "{Trans. Date}",
"type": "date", "type": "date",
"column_name": "Post Date" "column_name": "Trans. Date"
}, },
{ {
"path": "{Description}", "path": "{Post Date}",
"type": "text", "type": "date",
"column_name": "Description" "column_name": "Post Date"
}, },
{ {
"path": "{Amount}", "path": "{Description}",
"type": "numeric", "type": "text",
"column_name": "Amount" "column_name": "Description"
}, },
{ {
"path": "{Category}", "path": "{Amount}",
"type": "text", "type": "numeric",
"column_name": "Category" "column_name": "Amount"
}, },
{ {
"path": "{party}", "path": "{Category}",
"type": "text", "type": "text",
"column_name": "Party" "column_name": "Category"
}, },
{ {
"path": "{reason}", "path": "{party}",
"type": "text", "type": "text",
"column_name": "Reason" "column_name": "Party"
} },
] {
} "path": "{reason}",
"type": "text",
"column_name": "Reason"
}
]
}
]
} }

View File

@ -0,0 +1,30 @@
WITH
mod AS (
SELECT
srce
,jsonb_pretty(defn) orig
,(defn - 'schemas')||
--rebuild the schemas key value from below
jsonb_build_object(
'schemas'
--aggregate all the new key values for a single soure
,jsonb_agg(
--combine a new key 'name' with the columns for that name
jsonb_build_object('name',k)||jsonb_build_object('columns',v)
)
) rebuild
FROM
tps.srce
LEFT JOIN LATERAL jsonb_each(defn->'schemas') WITH ORDINALITY je(k,v, rn) ON TRUE
GROUP BY
srce
,defn
)
UPDATE
tps.srce s
SET
defn = rebuild
FROM
mod
WHERE
mod.srce = s.srce