starmelon/examples/sqlite-integration/src/ShowDatabaseSchema.elm
nobody ac97ac37db
chore: upgrade deno_* crates to Mar 2024
The way extensions are injected into the Isolate changed dramatically
between Sept 2021 and Jan 2024. Now ops are available in the virtual
module ext:core/ops.
2025-11-23 19:34:17 -08:00

48 lines
1.6 KiB
Elm

module ShowDatabaseSchema exposing (main)
import Astrid.Query exposing (fetch, execute, errorToString)
import Json.Decode
import Html exposing (Html, ul, li, text, code, node, div)
import Array.Extra
main : Html msg
main =
let
query =
fetch
"select type, name, sql from sqlite_master WHERE type = 'table'"
[]
(Json.Decode.map3
(\kind name sql->
(kind, name, sql)
)
(Json.Decode.field "type" Json.Decode.string)
(Json.Decode.field "name" Json.Decode.string)
(Json.Decode.field "sql" Json.Decode.string)
)
in
case execute query of
Ok results ->
div []
[ node "style" []
[ text "code { background-color: #f6f7f9; display: block; padding: 1em; border-radius: 4px; border 1px solid #eee; } "
]
, ul []
(Array.Extra.mapToList
(\(kind, name, sql) ->
li []
[ text "type = "
, text kind
, text ", name ="
, text name
, code []
[ text sql]
]
)
results
)
]
Err error ->
Html.text (errorToString error)