From 80a31b3041c8dd4dcbb17c6ca9b6992c0a12f3de Mon Sep 17 00:00:00 2001 From: Jamie Curnow Date: Wed, 30 Jun 2021 10:50:55 +1000 Subject: [PATCH] Rejig embedded assets to a central folder --- .gitignore | 2 +- backend/{doc => embed/api_docs}/api.swagger.json | 0 .../components/CertificateAuthorityList.json | 0 .../components/CertificateAuthorityObject.json | 0 .../api_docs}/components/CertificateList.json | 0 .../api_docs}/components/CertificateObject.json | 0 .../api_docs}/components/ConfigObject.json | 0 .../api_docs}/components/DNSProviderList.json | 0 .../api_docs}/components/DNSProviderObject.json | 0 .../api_docs}/components/DeletedItemResponse.json | 0 .../api_docs}/components/ErrorObject.json | 0 .../api_docs}/components/FilterObject.json | 0 .../api_docs}/components/HealthObject.json | 0 .../api_docs}/components/HostList.json | 0 .../api_docs}/components/HostObject.json | 0 .../api_docs}/components/SettingList.json | 0 .../api_docs}/components/SettingObject.json | 0 .../api_docs}/components/SortObject.json | 0 .../api_docs}/components/StreamList.json | 0 .../api_docs}/components/StreamObject.json | 0 .../api_docs}/components/TokenObject.json | 0 .../api_docs}/components/UserList.json | 0 .../api_docs}/components/UserObject.json | 0 backend/{doc => embed/api_docs}/main.go | 0 .../certificates-authorities/caID/delete.json | 0 .../paths/certificates-authorities/caID/get.json | 0 .../paths/certificates-authorities/caID/put.json | 0 .../paths/certificates-authorities/get.json | 0 .../paths/certificates-authorities/post.json | 0 .../paths/certificates/certificateID/delete.json | 0 .../paths/certificates/certificateID/get.json | 0 .../paths/certificates/certificateID/put.json | 0 .../api_docs}/paths/certificates/get.json | 0 .../api_docs}/paths/certificates/post.json | 0 .../{doc => embed/api_docs}/paths/config/get.json | 0 .../api_docs}/paths/dns-providers/get.json | 0 .../api_docs}/paths/dns-providers/post.json | 0 .../paths/dns-providers/providerID/delete.json | 0 .../paths/dns-providers/providerID/get.json | 0 .../paths/dns-providers/providerID/put.json | 0 backend/{doc => embed/api_docs}/paths/get.json | 0 .../{doc => embed/api_docs}/paths/hosts/get.json | 0 .../api_docs}/paths/hosts/hostID/delete.json | 0 .../api_docs}/paths/hosts/hostID/get.json | 0 .../api_docs}/paths/hosts/hostID/put.json | 0 .../{doc => embed/api_docs}/paths/hosts/post.json | 0 .../{doc => embed/api_docs}/paths/schema/get.json | 0 .../api_docs}/paths/settings/get.json | 0 .../api_docs}/paths/settings/name/get.json | 0 .../api_docs}/paths/settings/name/put.json | 0 .../api_docs}/paths/settings/post.json | 0 .../api_docs}/paths/streams/get.json | 0 .../api_docs}/paths/streams/post.json | 0 .../api_docs}/paths/streams/streamID/delete.json | 0 .../api_docs}/paths/streams/streamID/get.json | 0 .../api_docs}/paths/streams/streamID/put.json | 0 .../{doc => embed/api_docs}/paths/tokens/get.json | 0 .../api_docs}/paths/tokens/post.json | 0 .../{doc => embed/api_docs}/paths/users/get.json | 0 .../{doc => embed/api_docs}/paths/users/post.json | 0 .../api_docs}/paths/users/userID/auth/post.json | 0 .../api_docs}/paths/users/userID/delete.json | 0 .../api_docs}/paths/users/userID/get.json | 0 .../api_docs}/paths/users/userID/put.json | 0 backend/embed/main.go | 15 +++++++++++++++ .../migrations/20201013035318_initial_schema.sql | 0 .../migrations/20201013035839_initial_data.sql | 0 backend/internal/api/handler/not_found.go | 13 ++++++------- backend/internal/api/handler/schema.go | 14 ++++++++++---- backend/internal/database/migrator.go | 11 ++++------- scripts/ci/build-frontend | 3 ++- 71 files changed, 38 insertions(+), 20 deletions(-) rename backend/{doc => embed/api_docs}/api.swagger.json (100%) rename backend/{doc => embed/api_docs}/components/CertificateAuthorityList.json (100%) rename backend/{doc => embed/api_docs}/components/CertificateAuthorityObject.json (100%) rename backend/{doc => embed/api_docs}/components/CertificateList.json (100%) rename backend/{doc => embed/api_docs}/components/CertificateObject.json (100%) rename backend/{doc => embed/api_docs}/components/ConfigObject.json (100%) rename backend/{doc => embed/api_docs}/components/DNSProviderList.json (100%) rename backend/{doc => embed/api_docs}/components/DNSProviderObject.json (100%) rename backend/{doc => embed/api_docs}/components/DeletedItemResponse.json (100%) rename backend/{doc => embed/api_docs}/components/ErrorObject.json (100%) rename backend/{doc => embed/api_docs}/components/FilterObject.json (100%) rename backend/{doc => embed/api_docs}/components/HealthObject.json (100%) rename backend/{doc => embed/api_docs}/components/HostList.json (100%) rename backend/{doc => embed/api_docs}/components/HostObject.json (100%) rename backend/{doc => embed/api_docs}/components/SettingList.json (100%) rename backend/{doc => embed/api_docs}/components/SettingObject.json (100%) rename backend/{doc => embed/api_docs}/components/SortObject.json (100%) rename backend/{doc => embed/api_docs}/components/StreamList.json (100%) rename backend/{doc => embed/api_docs}/components/StreamObject.json (100%) rename backend/{doc => embed/api_docs}/components/TokenObject.json (100%) rename backend/{doc => embed/api_docs}/components/UserList.json (100%) rename backend/{doc => embed/api_docs}/components/UserObject.json (100%) rename backend/{doc => embed/api_docs}/main.go (100%) rename backend/{doc => embed/api_docs}/paths/certificates-authorities/caID/delete.json (100%) rename backend/{doc => embed/api_docs}/paths/certificates-authorities/caID/get.json (100%) rename backend/{doc => embed/api_docs}/paths/certificates-authorities/caID/put.json (100%) rename backend/{doc => embed/api_docs}/paths/certificates-authorities/get.json (100%) rename backend/{doc => embed/api_docs}/paths/certificates-authorities/post.json (100%) rename backend/{doc => embed/api_docs}/paths/certificates/certificateID/delete.json (100%) rename backend/{doc => embed/api_docs}/paths/certificates/certificateID/get.json (100%) rename backend/{doc => embed/api_docs}/paths/certificates/certificateID/put.json (100%) rename backend/{doc => embed/api_docs}/paths/certificates/get.json (100%) rename backend/{doc => embed/api_docs}/paths/certificates/post.json (100%) rename backend/{doc => embed/api_docs}/paths/config/get.json (100%) rename backend/{doc => embed/api_docs}/paths/dns-providers/get.json (100%) rename backend/{doc => embed/api_docs}/paths/dns-providers/post.json (100%) rename backend/{doc => embed/api_docs}/paths/dns-providers/providerID/delete.json (100%) rename backend/{doc => embed/api_docs}/paths/dns-providers/providerID/get.json (100%) rename backend/{doc => embed/api_docs}/paths/dns-providers/providerID/put.json (100%) rename backend/{doc => embed/api_docs}/paths/get.json (100%) rename backend/{doc => embed/api_docs}/paths/hosts/get.json (100%) rename backend/{doc => embed/api_docs}/paths/hosts/hostID/delete.json (100%) rename backend/{doc => embed/api_docs}/paths/hosts/hostID/get.json (100%) rename backend/{doc => embed/api_docs}/paths/hosts/hostID/put.json (100%) rename backend/{doc => embed/api_docs}/paths/hosts/post.json (100%) rename backend/{doc => embed/api_docs}/paths/schema/get.json (100%) rename backend/{doc => embed/api_docs}/paths/settings/get.json (100%) rename backend/{doc => embed/api_docs}/paths/settings/name/get.json (100%) rename backend/{doc => embed/api_docs}/paths/settings/name/put.json (100%) rename backend/{doc => embed/api_docs}/paths/settings/post.json (100%) rename backend/{doc => embed/api_docs}/paths/streams/get.json (100%) rename backend/{doc => embed/api_docs}/paths/streams/post.json (100%) rename backend/{doc => embed/api_docs}/paths/streams/streamID/delete.json (100%) rename backend/{doc => embed/api_docs}/paths/streams/streamID/get.json (100%) rename backend/{doc => embed/api_docs}/paths/streams/streamID/put.json (100%) rename backend/{doc => embed/api_docs}/paths/tokens/get.json (100%) rename backend/{doc => embed/api_docs}/paths/tokens/post.json (100%) rename backend/{doc => embed/api_docs}/paths/users/get.json (100%) rename backend/{doc => embed/api_docs}/paths/users/post.json (100%) rename backend/{doc => embed/api_docs}/paths/users/userID/auth/post.json (100%) rename backend/{doc => embed/api_docs}/paths/users/userID/delete.json (100%) rename backend/{doc => embed/api_docs}/paths/users/userID/get.json (100%) rename backend/{doc => embed/api_docs}/paths/users/userID/put.json (100%) create mode 100644 backend/embed/main.go rename backend/{internal/database => embed}/migrations/20201013035318_initial_schema.sql (100%) rename backend/{internal/database => embed}/migrations/20201013035839_initial_data.sql (100%) diff --git a/.gitignore b/.gitignore index 70ed16d1..cbb31f7d 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ vendor bin/* backend/config.json -backend/internal/api/handler/assets +backend/embed/assets test/node_modules */node_modules docs/.vuepress/dist diff --git a/backend/doc/api.swagger.json b/backend/embed/api_docs/api.swagger.json similarity index 100% rename from backend/doc/api.swagger.json rename to backend/embed/api_docs/api.swagger.json diff --git a/backend/doc/components/CertificateAuthorityList.json b/backend/embed/api_docs/components/CertificateAuthorityList.json similarity index 100% rename from backend/doc/components/CertificateAuthorityList.json rename to backend/embed/api_docs/components/CertificateAuthorityList.json diff --git a/backend/doc/components/CertificateAuthorityObject.json b/backend/embed/api_docs/components/CertificateAuthorityObject.json similarity index 100% rename from backend/doc/components/CertificateAuthorityObject.json rename to backend/embed/api_docs/components/CertificateAuthorityObject.json diff --git a/backend/doc/components/CertificateList.json b/backend/embed/api_docs/components/CertificateList.json similarity index 100% rename from backend/doc/components/CertificateList.json rename to backend/embed/api_docs/components/CertificateList.json diff --git a/backend/doc/components/CertificateObject.json b/backend/embed/api_docs/components/CertificateObject.json similarity index 100% rename from backend/doc/components/CertificateObject.json rename to backend/embed/api_docs/components/CertificateObject.json diff --git a/backend/doc/components/ConfigObject.json b/backend/embed/api_docs/components/ConfigObject.json similarity index 100% rename from backend/doc/components/ConfigObject.json rename to backend/embed/api_docs/components/ConfigObject.json diff --git a/backend/doc/components/DNSProviderList.json b/backend/embed/api_docs/components/DNSProviderList.json similarity index 100% rename from backend/doc/components/DNSProviderList.json rename to backend/embed/api_docs/components/DNSProviderList.json diff --git a/backend/doc/components/DNSProviderObject.json b/backend/embed/api_docs/components/DNSProviderObject.json similarity index 100% rename from backend/doc/components/DNSProviderObject.json rename to backend/embed/api_docs/components/DNSProviderObject.json diff --git a/backend/doc/components/DeletedItemResponse.json b/backend/embed/api_docs/components/DeletedItemResponse.json similarity index 100% rename from backend/doc/components/DeletedItemResponse.json rename to backend/embed/api_docs/components/DeletedItemResponse.json diff --git a/backend/doc/components/ErrorObject.json b/backend/embed/api_docs/components/ErrorObject.json similarity index 100% rename from backend/doc/components/ErrorObject.json rename to backend/embed/api_docs/components/ErrorObject.json diff --git a/backend/doc/components/FilterObject.json b/backend/embed/api_docs/components/FilterObject.json similarity index 100% rename from backend/doc/components/FilterObject.json rename to backend/embed/api_docs/components/FilterObject.json diff --git a/backend/doc/components/HealthObject.json b/backend/embed/api_docs/components/HealthObject.json similarity index 100% rename from backend/doc/components/HealthObject.json rename to backend/embed/api_docs/components/HealthObject.json diff --git a/backend/doc/components/HostList.json b/backend/embed/api_docs/components/HostList.json similarity index 100% rename from backend/doc/components/HostList.json rename to backend/embed/api_docs/components/HostList.json diff --git a/backend/doc/components/HostObject.json b/backend/embed/api_docs/components/HostObject.json similarity index 100% rename from backend/doc/components/HostObject.json rename to backend/embed/api_docs/components/HostObject.json diff --git a/backend/doc/components/SettingList.json b/backend/embed/api_docs/components/SettingList.json similarity index 100% rename from backend/doc/components/SettingList.json rename to backend/embed/api_docs/components/SettingList.json diff --git a/backend/doc/components/SettingObject.json b/backend/embed/api_docs/components/SettingObject.json similarity index 100% rename from backend/doc/components/SettingObject.json rename to backend/embed/api_docs/components/SettingObject.json diff --git a/backend/doc/components/SortObject.json b/backend/embed/api_docs/components/SortObject.json similarity index 100% rename from backend/doc/components/SortObject.json rename to backend/embed/api_docs/components/SortObject.json diff --git a/backend/doc/components/StreamList.json b/backend/embed/api_docs/components/StreamList.json similarity index 100% rename from backend/doc/components/StreamList.json rename to backend/embed/api_docs/components/StreamList.json diff --git a/backend/doc/components/StreamObject.json b/backend/embed/api_docs/components/StreamObject.json similarity index 100% rename from backend/doc/components/StreamObject.json rename to backend/embed/api_docs/components/StreamObject.json diff --git a/backend/doc/components/TokenObject.json b/backend/embed/api_docs/components/TokenObject.json similarity index 100% rename from backend/doc/components/TokenObject.json rename to backend/embed/api_docs/components/TokenObject.json diff --git a/backend/doc/components/UserList.json b/backend/embed/api_docs/components/UserList.json similarity index 100% rename from backend/doc/components/UserList.json rename to backend/embed/api_docs/components/UserList.json diff --git a/backend/doc/components/UserObject.json b/backend/embed/api_docs/components/UserObject.json similarity index 100% rename from backend/doc/components/UserObject.json rename to backend/embed/api_docs/components/UserObject.json diff --git a/backend/doc/main.go b/backend/embed/api_docs/main.go similarity index 100% rename from backend/doc/main.go rename to backend/embed/api_docs/main.go diff --git a/backend/doc/paths/certificates-authorities/caID/delete.json b/backend/embed/api_docs/paths/certificates-authorities/caID/delete.json similarity index 100% rename from backend/doc/paths/certificates-authorities/caID/delete.json rename to backend/embed/api_docs/paths/certificates-authorities/caID/delete.json diff --git a/backend/doc/paths/certificates-authorities/caID/get.json b/backend/embed/api_docs/paths/certificates-authorities/caID/get.json similarity index 100% rename from backend/doc/paths/certificates-authorities/caID/get.json rename to backend/embed/api_docs/paths/certificates-authorities/caID/get.json diff --git a/backend/doc/paths/certificates-authorities/caID/put.json b/backend/embed/api_docs/paths/certificates-authorities/caID/put.json similarity index 100% rename from backend/doc/paths/certificates-authorities/caID/put.json rename to backend/embed/api_docs/paths/certificates-authorities/caID/put.json diff --git a/backend/doc/paths/certificates-authorities/get.json b/backend/embed/api_docs/paths/certificates-authorities/get.json similarity index 100% rename from backend/doc/paths/certificates-authorities/get.json rename to backend/embed/api_docs/paths/certificates-authorities/get.json diff --git a/backend/doc/paths/certificates-authorities/post.json b/backend/embed/api_docs/paths/certificates-authorities/post.json similarity index 100% rename from backend/doc/paths/certificates-authorities/post.json rename to backend/embed/api_docs/paths/certificates-authorities/post.json diff --git a/backend/doc/paths/certificates/certificateID/delete.json b/backend/embed/api_docs/paths/certificates/certificateID/delete.json similarity index 100% rename from backend/doc/paths/certificates/certificateID/delete.json rename to backend/embed/api_docs/paths/certificates/certificateID/delete.json diff --git a/backend/doc/paths/certificates/certificateID/get.json b/backend/embed/api_docs/paths/certificates/certificateID/get.json similarity index 100% rename from backend/doc/paths/certificates/certificateID/get.json rename to backend/embed/api_docs/paths/certificates/certificateID/get.json diff --git a/backend/doc/paths/certificates/certificateID/put.json b/backend/embed/api_docs/paths/certificates/certificateID/put.json similarity index 100% rename from backend/doc/paths/certificates/certificateID/put.json rename to backend/embed/api_docs/paths/certificates/certificateID/put.json diff --git a/backend/doc/paths/certificates/get.json b/backend/embed/api_docs/paths/certificates/get.json similarity index 100% rename from backend/doc/paths/certificates/get.json rename to backend/embed/api_docs/paths/certificates/get.json diff --git a/backend/doc/paths/certificates/post.json b/backend/embed/api_docs/paths/certificates/post.json similarity index 100% rename from backend/doc/paths/certificates/post.json rename to backend/embed/api_docs/paths/certificates/post.json diff --git a/backend/doc/paths/config/get.json b/backend/embed/api_docs/paths/config/get.json similarity index 100% rename from backend/doc/paths/config/get.json rename to backend/embed/api_docs/paths/config/get.json diff --git a/backend/doc/paths/dns-providers/get.json b/backend/embed/api_docs/paths/dns-providers/get.json similarity index 100% rename from backend/doc/paths/dns-providers/get.json rename to backend/embed/api_docs/paths/dns-providers/get.json diff --git a/backend/doc/paths/dns-providers/post.json b/backend/embed/api_docs/paths/dns-providers/post.json similarity index 100% rename from backend/doc/paths/dns-providers/post.json rename to backend/embed/api_docs/paths/dns-providers/post.json diff --git a/backend/doc/paths/dns-providers/providerID/delete.json b/backend/embed/api_docs/paths/dns-providers/providerID/delete.json similarity index 100% rename from backend/doc/paths/dns-providers/providerID/delete.json rename to backend/embed/api_docs/paths/dns-providers/providerID/delete.json diff --git a/backend/doc/paths/dns-providers/providerID/get.json b/backend/embed/api_docs/paths/dns-providers/providerID/get.json similarity index 100% rename from backend/doc/paths/dns-providers/providerID/get.json rename to backend/embed/api_docs/paths/dns-providers/providerID/get.json diff --git a/backend/doc/paths/dns-providers/providerID/put.json b/backend/embed/api_docs/paths/dns-providers/providerID/put.json similarity index 100% rename from backend/doc/paths/dns-providers/providerID/put.json rename to backend/embed/api_docs/paths/dns-providers/providerID/put.json diff --git a/backend/doc/paths/get.json b/backend/embed/api_docs/paths/get.json similarity index 100% rename from backend/doc/paths/get.json rename to backend/embed/api_docs/paths/get.json diff --git a/backend/doc/paths/hosts/get.json b/backend/embed/api_docs/paths/hosts/get.json similarity index 100% rename from backend/doc/paths/hosts/get.json rename to backend/embed/api_docs/paths/hosts/get.json diff --git a/backend/doc/paths/hosts/hostID/delete.json b/backend/embed/api_docs/paths/hosts/hostID/delete.json similarity index 100% rename from backend/doc/paths/hosts/hostID/delete.json rename to backend/embed/api_docs/paths/hosts/hostID/delete.json diff --git a/backend/doc/paths/hosts/hostID/get.json b/backend/embed/api_docs/paths/hosts/hostID/get.json similarity index 100% rename from backend/doc/paths/hosts/hostID/get.json rename to backend/embed/api_docs/paths/hosts/hostID/get.json diff --git a/backend/doc/paths/hosts/hostID/put.json b/backend/embed/api_docs/paths/hosts/hostID/put.json similarity index 100% rename from backend/doc/paths/hosts/hostID/put.json rename to backend/embed/api_docs/paths/hosts/hostID/put.json diff --git a/backend/doc/paths/hosts/post.json b/backend/embed/api_docs/paths/hosts/post.json similarity index 100% rename from backend/doc/paths/hosts/post.json rename to backend/embed/api_docs/paths/hosts/post.json diff --git a/backend/doc/paths/schema/get.json b/backend/embed/api_docs/paths/schema/get.json similarity index 100% rename from backend/doc/paths/schema/get.json rename to backend/embed/api_docs/paths/schema/get.json diff --git a/backend/doc/paths/settings/get.json b/backend/embed/api_docs/paths/settings/get.json similarity index 100% rename from backend/doc/paths/settings/get.json rename to backend/embed/api_docs/paths/settings/get.json diff --git a/backend/doc/paths/settings/name/get.json b/backend/embed/api_docs/paths/settings/name/get.json similarity index 100% rename from backend/doc/paths/settings/name/get.json rename to backend/embed/api_docs/paths/settings/name/get.json diff --git a/backend/doc/paths/settings/name/put.json b/backend/embed/api_docs/paths/settings/name/put.json similarity index 100% rename from backend/doc/paths/settings/name/put.json rename to backend/embed/api_docs/paths/settings/name/put.json diff --git a/backend/doc/paths/settings/post.json b/backend/embed/api_docs/paths/settings/post.json similarity index 100% rename from backend/doc/paths/settings/post.json rename to backend/embed/api_docs/paths/settings/post.json diff --git a/backend/doc/paths/streams/get.json b/backend/embed/api_docs/paths/streams/get.json similarity index 100% rename from backend/doc/paths/streams/get.json rename to backend/embed/api_docs/paths/streams/get.json diff --git a/backend/doc/paths/streams/post.json b/backend/embed/api_docs/paths/streams/post.json similarity index 100% rename from backend/doc/paths/streams/post.json rename to backend/embed/api_docs/paths/streams/post.json diff --git a/backend/doc/paths/streams/streamID/delete.json b/backend/embed/api_docs/paths/streams/streamID/delete.json similarity index 100% rename from backend/doc/paths/streams/streamID/delete.json rename to backend/embed/api_docs/paths/streams/streamID/delete.json diff --git a/backend/doc/paths/streams/streamID/get.json b/backend/embed/api_docs/paths/streams/streamID/get.json similarity index 100% rename from backend/doc/paths/streams/streamID/get.json rename to backend/embed/api_docs/paths/streams/streamID/get.json diff --git a/backend/doc/paths/streams/streamID/put.json b/backend/embed/api_docs/paths/streams/streamID/put.json similarity index 100% rename from backend/doc/paths/streams/streamID/put.json rename to backend/embed/api_docs/paths/streams/streamID/put.json diff --git a/backend/doc/paths/tokens/get.json b/backend/embed/api_docs/paths/tokens/get.json similarity index 100% rename from backend/doc/paths/tokens/get.json rename to backend/embed/api_docs/paths/tokens/get.json diff --git a/backend/doc/paths/tokens/post.json b/backend/embed/api_docs/paths/tokens/post.json similarity index 100% rename from backend/doc/paths/tokens/post.json rename to backend/embed/api_docs/paths/tokens/post.json diff --git a/backend/doc/paths/users/get.json b/backend/embed/api_docs/paths/users/get.json similarity index 100% rename from backend/doc/paths/users/get.json rename to backend/embed/api_docs/paths/users/get.json diff --git a/backend/doc/paths/users/post.json b/backend/embed/api_docs/paths/users/post.json similarity index 100% rename from backend/doc/paths/users/post.json rename to backend/embed/api_docs/paths/users/post.json diff --git a/backend/doc/paths/users/userID/auth/post.json b/backend/embed/api_docs/paths/users/userID/auth/post.json similarity index 100% rename from backend/doc/paths/users/userID/auth/post.json rename to backend/embed/api_docs/paths/users/userID/auth/post.json diff --git a/backend/doc/paths/users/userID/delete.json b/backend/embed/api_docs/paths/users/userID/delete.json similarity index 100% rename from backend/doc/paths/users/userID/delete.json rename to backend/embed/api_docs/paths/users/userID/delete.json diff --git a/backend/doc/paths/users/userID/get.json b/backend/embed/api_docs/paths/users/userID/get.json similarity index 100% rename from backend/doc/paths/users/userID/get.json rename to backend/embed/api_docs/paths/users/userID/get.json diff --git a/backend/doc/paths/users/userID/put.json b/backend/embed/api_docs/paths/users/userID/put.json similarity index 100% rename from backend/doc/paths/users/userID/put.json rename to backend/embed/api_docs/paths/users/userID/put.json diff --git a/backend/embed/main.go b/backend/embed/main.go new file mode 100644 index 00000000..8ea9ba1b --- /dev/null +++ b/backend/embed/main.go @@ -0,0 +1,15 @@ +package embed + +import "embed" + +// APIDocFiles contain all the files used for swagger schema generation +//go:embed api_docs +var APIDocFiles embed.FS + +// Assets are frontend assets served from within this app +//go:embed assets +var Assets embed.FS + +// MigrationFiles are database migrations +//go:embed migrations/*.sql +var MigrationFiles embed.FS diff --git a/backend/internal/database/migrations/20201013035318_initial_schema.sql b/backend/embed/migrations/20201013035318_initial_schema.sql similarity index 100% rename from backend/internal/database/migrations/20201013035318_initial_schema.sql rename to backend/embed/migrations/20201013035318_initial_schema.sql diff --git a/backend/internal/database/migrations/20201013035839_initial_data.sql b/backend/embed/migrations/20201013035839_initial_data.sql similarity index 100% rename from backend/internal/database/migrations/20201013035839_initial_data.sql rename to backend/embed/migrations/20201013035839_initial_data.sql diff --git a/backend/internal/api/handler/not_found.go b/backend/internal/api/handler/not_found.go index 04893e9b..07f40c71 100644 --- a/backend/internal/api/handler/not_found.go +++ b/backend/internal/api/handler/not_found.go @@ -1,7 +1,6 @@ package handler import ( - "embed" "errors" "io" "io/fs" @@ -10,19 +9,19 @@ import ( "path/filepath" "strings" + "npm/embed" h "npm/internal/api/http" ) -//go:embed assets -var assets embed.FS -var assetsSub fs.FS - -var errIsDir = errors.New("path is dir") +var ( + assetsSub fs.FS + errIsDir = errors.New("path is dir") +) // NotFound is a json error handler for 404's and method not allowed. // It also serves the react frontend as embedded files in the golang binary. func NotFound() func(http.ResponseWriter, *http.Request) { - assetsSub, _ = fs.Sub(assets, "assets") + assetsSub, _ = fs.Sub(embed.Assets, "assets") return func(w http.ResponseWriter, r *http.Request) { path := strings.TrimLeft(r.URL.Path, "/") diff --git a/backend/internal/api/handler/schema.go b/backend/internal/api/handler/schema.go index 38440f4c..bdbf3fdc 100644 --- a/backend/internal/api/handler/schema.go +++ b/backend/internal/api/handler/schema.go @@ -3,10 +3,11 @@ package handler import ( "encoding/json" "fmt" + "io/fs" "net/http" "strings" - "npm/doc" + "npm/embed" "npm/internal/api/schema" "npm/internal/config" "npm/internal/logger" @@ -15,7 +16,10 @@ import ( "github.com/jc21/jsref/provider" ) -var swaggerSchema []byte +var ( + swaggerSchema []byte + apiDocsSub fs.FS +) // Schema simply reads the swagger schema from disk and returns is raw // Route: GET /schema @@ -29,8 +33,10 @@ func Schema() func(http.ResponseWriter, *http.Request) { func getSchema() []byte { if swaggerSchema == nil { + apiDocsSub, _ = fs.Sub(embed.APIDocFiles, "api_docs") + // nolint:gosec - swaggerSchema, _ = doc.SwaggerFiles.ReadFile("api.swagger.json") + swaggerSchema, _ = fs.ReadFile(apiDocsSub, "api.swagger.json") // Replace {{VERSION}} with Config Version swaggerSchema = []byte(strings.ReplaceAll(string(swaggerSchema), "{{VERSION}}", config.Version)) @@ -42,7 +48,7 @@ func getSchema() []byte { return nil } - provider := provider.NewIoFS(doc.SwaggerFiles, "") + provider := provider.NewIoFS(apiDocsSub, "") resolver := jsref.New() err := resolver.AddProvider(provider) if err != nil { diff --git a/backend/internal/database/migrator.go b/backend/internal/database/migrator.go index 2f0e8582..8b81c408 100644 --- a/backend/internal/database/migrator.go +++ b/backend/internal/database/migrator.go @@ -2,7 +2,6 @@ package database import ( "database/sql" - "embed" "fmt" "io/fs" "path" @@ -11,15 +10,13 @@ import ( "sync" "time" + "npm/embed" "npm/internal/logger" "npm/internal/util" "github.com/jmoiron/sqlx" ) -//go:embed migrations/*.sql -var migrationFiles embed.FS - // MigrationConfiguration options for the migrator. type MigrationConfiguration struct { Table string `json:"table"` @@ -100,7 +97,7 @@ func createMigrationTable(db *sqlx.DB) error { // tableExists will check the database for the existence of the specified table. func tableExists(db *sqlx.DB, tableName string) bool { - query := `SELECT name FROM sqlite_master WHERE type='table' AND name = $1` + query := `SELECT CASE name WHEN $1 THEN true ELSE false END AS found FROM sqlite_master WHERE type='table' AND name = $1` row := db.QueryRowx(query, tableName) if row == nil { @@ -131,7 +128,7 @@ func performFileMigrations(db *sqlx.DB) (int, error) { } // List up the ".sql" files on disk - err := fs.WalkDir(migrationFiles, ".", func(file string, d fs.DirEntry, err error) error { + err := fs.WalkDir(embed.MigrationFiles, ".", func(file string, d fs.DirEntry, err error) error { if !d.IsDir() { shortFile := filepath.Base(file) @@ -143,7 +140,7 @@ func performFileMigrations(db *sqlx.DB) (int, error) { logger.Info("Migration: Importing %v", shortFile) - sqlContents, ioErr := migrationFiles.ReadFile(path.Clean(file)) + sqlContents, ioErr := embed.MigrationFiles.ReadFile(path.Clean(file)) if ioErr != nil { return ioErr } diff --git a/scripts/ci/build-frontend b/scripts/ci/build-frontend index 7b23bbd5..157410ae 100755 --- a/scripts/ci/build-frontend +++ b/scripts/ci/build-frontend @@ -1,7 +1,7 @@ #!/bin/bash set -e -BACKEND_ASSETS=backend/internal/api/handler/assets +BACKEND_ASSETS=backend/embed/assets DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" . "$DIR/../.common.sh" @@ -26,6 +26,7 @@ docker_cmd chown -R "$(id -u):$(id -g)" /app/frontend echo -e "${BLUE}❯ ${GREEN}Building Frontend Complete${RESET}" # to avoid CRA ejection, just copy these build files over to embed in the backend +rm -rf ${BACKEND_ASSETS} cp -pr frontend/build "${BACKEND_ASSETS}" echo -e "${BLUE}❯ ${GREEN}Copied build to ${BACKEND_ASSETS}${RESET}"