Merged in feature/import (pull request #157)

Feature/import

* importstart

* pp

* tests

* importtests

* 100GB

* lint

* passtests

* utc

* awsprofile

* doublequotes

* host
This commit is contained in:
Michael McGuinness
2025-05-27 15:28:46 +00:00
parent 46882da5f5
commit cc2278086f
74 changed files with 992 additions and 4753 deletions
+111 -74
View File
@@ -351,6 +351,15 @@ type TooManyRequests = ErrorMessage
// Unauthorized Description of error
type Unauthorized = ErrorMessage
// UploadDocumentMultipartBody defines parameters for UploadDocument.
type UploadDocumentMultipartBody struct {
// File The file to upload
File openapi_types.File `json:"file"`
// Filename Optional custom filename
Filename *string `json:"filename,omitempty"`
}
// LoginCallbackParams defines parameters for LoginCallback.
type LoginCallbackParams struct {
// Code Authorization code from Cognito
@@ -369,6 +378,9 @@ type UpdateClientJSONRequestBody = ClientUpdate
// SetCollectorByClientIdJSONRequestBody defines body for SetCollectorByClientId for application/json ContentType.
type SetCollectorByClientIdJSONRequestBody = CollectorSet
// UploadDocumentMultipartRequestBody defines body for UploadDocument for multipart/form-data ContentType.
type UploadDocumentMultipartRequestBody UploadDocumentMultipartBody
// TriggerExportJSONRequestBody defines body for TriggerExport for application/json ContentType.
type TriggerExportJSONRequestBody = ExportTrigger
@@ -399,8 +411,11 @@ type ServerInterface interface {
// (PATCH /client/{id}/collector)
SetCollectorByClientId(ctx echo.Context, id ClientID) error
// List the documents for a client
// (GET /client/{id}/documents)
// (GET /client/{id}/document)
ListDocumentsByClientId(ctx echo.Context, id ClientID) error
// Upload a file
// (POST /client/{id}/document)
UploadDocument(ctx echo.Context, id ClientID) error
// Trigger an export
// (POST /client/{id}/export)
TriggerExport(ctx echo.Context, id ClientID) error
@@ -548,6 +563,24 @@ func (w *ServerInterfaceWrapper) ListDocumentsByClientId(ctx echo.Context) error
return err
}
// UploadDocument converts echo context to params.
func (w *ServerInterfaceWrapper) UploadDocument(ctx echo.Context) error {
var err error
// ------------- Path parameter "id" -------------
var id ClientID
err = runtime.BindStyledParameterWithOptions("simple", "id", ctx.Param("id"), &id, runtime.BindStyledParameterOptions{ParamLocation: runtime.ParamLocationPath, Explode: false, Required: true})
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err))
}
ctx.Set(JwtAuthScopes, []string{})
// Invoke the callback with all the unmarshaled arguments
err = w.Handler.UploadDocument(ctx, id)
return err
}
// TriggerExport converts echo context to params.
func (w *ServerInterfaceWrapper) TriggerExport(ctx echo.Context) error {
var err error
@@ -787,7 +820,8 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
router.PATCH(baseURL+"/client/:id", wrapper.UpdateClient)
router.GET(baseURL+"/client/:id/collector", wrapper.GetCollectorByClientId)
router.PATCH(baseURL+"/client/:id/collector", wrapper.SetCollectorByClientId)
router.GET(baseURL+"/client/:id/documents", wrapper.ListDocumentsByClientId)
router.GET(baseURL+"/client/:id/document", wrapper.ListDocumentsByClientId)
router.POST(baseURL+"/client/:id/document", wrapper.UploadDocument)
router.POST(baseURL+"/client/:id/export", wrapper.TriggerExport)
router.GET(baseURL+"/client/:id/status", wrapper.GetStatusByClientId)
router.GET(baseURL+"/document/:id", wrapper.GetDocument)
@@ -807,78 +841,81 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"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",
"8jpSZwAA",
"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",
}
// GetSwagger returns the content of the embedded swagger specification file
+10 -13
View File
@@ -1,16 +1,14 @@
package queryapi_test
import (
"bytes"
"encoding/json"
"net/http"
"net/http/httptest"
"strings"
"testing"
queryapi "queryorchestration/api/queryAPI"
"queryorchestration/internal/database/repository"
"queryorchestration/internal/serviceconfig"
"queryorchestration/internal/serviceconfig/queue/clientsync"
"queryorchestration/internal/test"
"github.com/labstack/echo/v4"
@@ -18,11 +16,6 @@ import (
"github.com/stretchr/testify/require"
)
type ClientConfig struct {
serviceconfig.BaseConfig
clientsync.ClientSyncConfig
}
func TestCreateClient(t *testing.T) {
t.Parallel()
cfg := &ControllerConfig{}
@@ -36,7 +29,7 @@ func TestCreateClient(t *testing.T) {
Id: "external_id",
}
ctx, rec := createContextWithBody(t, body)
ctx, rec := createContextWithJSONBody(t, body)
err := cons.CreateClient(ctx)
require.NoError(t, err)
@@ -105,7 +98,7 @@ func TestUpdateClient(t *testing.T) {
Name: &newClientName,
}
ctx, rec := createContextWithBody(t, body)
ctx, rec := createContextWithJSONBody(t, body)
err = cons.UpdateClient(ctx, id)
require.NoError(t, err)
@@ -118,15 +111,19 @@ func TestUpdateClient(t *testing.T) {
}
func createContext(t testing.TB) (echo.Context, *httptest.ResponseRecorder) {
return createContextWithBody(t, struct{}{})
return createContextWithJSONBody(t, struct{}{})
}
func createContextWithBody(t testing.TB, body interface{}) (echo.Context, *httptest.ResponseRecorder) {
func createContextWithJSONBody(t testing.TB, body interface{}) (echo.Context, *httptest.ResponseRecorder) {
bodyBytes, err := json.Marshal(body)
require.NoError(t, err)
return createContextWithBody(t, bodyBytes)
}
func createContextWithBody(t testing.TB, body []byte) (echo.Context, *httptest.ResponseRecorder) {
e := echo.New()
req := httptest.NewRequest(http.MethodPost, "/", strings.NewReader(string(bodyBytes)))
req := httptest.NewRequest(http.MethodPost, "/", bytes.NewReader(body))
req.Header.Set(echo.HeaderContentType, echo.MIMEApplicationJSON)
rec := httptest.NewRecorder()
return e.NewContext(req, rec), rec
+1 -1
View File
@@ -48,7 +48,7 @@ func TestSetCollector(t *testing.T) {
},
},
}
ctx, rec := createContextWithBody(t, body)
ctx, rec := createContextWithJSONBody(t, body)
err = cons.SetCollectorByClientId(ctx, id)
require.NoError(t, err)
+11 -9
View File
@@ -6,6 +6,7 @@ import (
"queryorchestration/internal/collector"
collectorset "queryorchestration/internal/collector/set"
"queryorchestration/internal/document"
documentupload "queryorchestration/internal/document/upload"
"queryorchestration/internal/export"
"queryorchestration/internal/query"
querytest "queryorchestration/internal/query/test"
@@ -15,15 +16,16 @@ import (
const Name = "queryAPI"
type Services struct {
Export *export.Service
Collector *collector.Service
CollectorSet *collectorset.Service
Query *query.Service
QueryUpdate *queryupdate.Service
QueryTest *querytest.Service
Client *client.Service
ClientUpdate *clientupdate.Service
Document *document.Service
Export *export.Service
Collector *collector.Service
CollectorSet *collectorset.Service
Query *query.Service
QueryUpdate *queryupdate.Service
QueryTest *querytest.Service
Client *client.Service
ClientUpdate *clientupdate.Service
Document *document.Service
DocumentUpload *documentupload.Service
}
type Controllers struct {
+36
View File
@@ -2,11 +2,47 @@ package queryapi
import (
"fmt"
"log/slog"
"net/http"
documentupload "queryorchestration/internal/document/upload"
"github.com/labstack/echo/v4"
)
func (s *Controllers) UploadDocument(ctx echo.Context, clientId ClientID) error {
form, err := ctx.MultipartForm()
if err != nil {
slog.Error("unable to get form data", "error", err)
return echo.NewHTTPError(http.StatusBadRequest, "unable to get form data")
}
files := form.File["file"]
if len(files) == 0 {
return echo.NewHTTPError(http.StatusBadRequest, "missing file")
} else if len(files) > 1 {
return echo.NewHTTPError(http.StatusBadRequest, "too many files")
}
file := files[0]
src, err := file.Open()
if err != nil {
return echo.NewHTTPError(http.StatusBadRequest, "unable to read file")
}
defer src.Close()
err = s.svc.DocumentUpload.Upload(ctx.Request().Context(), documentupload.File{
ClientID: clientId,
Content: src,
})
if err != nil {
slog.Error("unable to get form data", "error", err)
return echo.NewHTTPError(http.StatusBadRequest, "unable to upload file")
}
return ctx.NoContent(http.StatusOK)
}
func (s *Controllers) ListDocumentsByClientId(ctx echo.Context, clientId ClientID) error {
documents, err := s.svc.Document.ListByClient(ctx.Request().Context(), clientId)
if err != nil {
+44 -1
View File
@@ -1,17 +1,60 @@
package queryapi_test
import (
"bytes"
"mime/multipart"
"net/http"
"path/filepath"
"testing"
queryapi "queryorchestration/api/queryAPI"
"queryorchestration/internal/database/repository"
"queryorchestration/internal/test"
queryapi "queryorchestration/api/queryAPI"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestUploadDocument(t *testing.T) {
t.Parallel()
cfg := &ControllerConfig{}
test.CreateDB(t, cfg)
acfg := test.CreateAWSContainer(t, cfg)
test.SetStoreClient(t, t.Context(), cfg, acfg.ExternalEndpoint)
test.CreateBucket(t, cfg)
svc := createControllerServices(cfg)
cons := queryapi.NewControllers(svc)
err := cfg.GetDBQueries().CreateClient(t.Context(), &repository.CreateClientParams{
Clientid: "client_id",
Name: "client_name",
})
require.NoError(t, err)
var buf bytes.Buffer
writer := multipart.NewWriter(&buf)
fileWriter, err := writer.CreateFormFile("file", filepath.Base("../../assets/original/helloWorld.pdf"))
require.NoError(t, err)
_, err = fileWriter.Write([]byte("hi"))
require.NoError(t, err)
err = writer.Close()
require.NoError(t, err)
ctx, rec := createContextWithBody(t, buf.Bytes())
ctx.Request().Header.Set("Content-Type", writer.FormDataContentType())
err = cons.UploadDocument(ctx, "client_id")
require.NoError(t, err)
assert.Equal(t, http.StatusOK, rec.Code)
}
func TestListDocumentsByClientId(t *testing.T) {
t.Parallel()
cfg := &ControllerConfig{}
+7 -2
View File
@@ -13,8 +13,10 @@ import (
func TestTriggerExport(t *testing.T) {
ctx, rec := createContext(t)
cfg := &ControllerConfig{}
cons := queryapi.NewControllers(&queryapi.Services{})
svc := createControllerServices(cfg)
cons := queryapi.NewControllers(svc)
err := cons.TriggerExport(ctx, "clientid")
require.NoError(t, err)
@@ -25,7 +27,10 @@ func TestTriggerExport(t *testing.T) {
func TestExportState(t *testing.T) {
ctx, rec := createContext(t)
cons := queryapi.NewControllers(&queryapi.Services{})
cfg := &ControllerConfig{}
svc := createControllerServices(cfg)
cons := queryapi.NewControllers(svc)
id := uuid.New()
+21 -15
View File
@@ -7,19 +7,13 @@ import (
"testing"
"time"
queryapi "queryorchestration/api/queryAPI"
"queryorchestration/internal/client"
clientupdate "queryorchestration/internal/client/update"
"queryorchestration/internal/collector"
collectorset "queryorchestration/internal/collector/set"
"queryorchestration/internal/database/repository"
"queryorchestration/internal/document"
"queryorchestration/internal/export"
"queryorchestration/internal/query"
"queryorchestration/internal/query/result"
resultprocessor "queryorchestration/internal/query/result/processor"
querytest "queryorchestration/internal/query/test"
queryupdate "queryorchestration/internal/query/update"
"queryorchestration/internal/serviceconfig"
"queryorchestration/internal/serviceconfig/objectstore"
"queryorchestration/internal/serviceconfig/queue"
@@ -27,6 +21,18 @@ import (
"queryorchestration/internal/serviceconfig/queue/queryversionsync"
"queryorchestration/internal/test"
queryapi "queryorchestration/api/queryAPI"
clientupdate "queryorchestration/internal/client/update"
collectorset "queryorchestration/internal/collector/set"
documentupload "queryorchestration/internal/document/upload"
resultprocessor "queryorchestration/internal/query/result/processor"
querytest "queryorchestration/internal/query/test"
queryupdate "queryorchestration/internal/query/update"
"github.com/jackc/pgx/v5/pgtype"
"github.com/stretchr/testify/require"
@@ -36,17 +42,16 @@ import (
func TestCreateQuery(t *testing.T) {
t.Parallel()
cfg := &serviceconfig.BaseConfig{}
cfg := &ControllerConfig{}
test.CreateDB(t, cfg)
cons := queryapi.NewControllers(&queryapi.Services{
Query: query.New(cfg),
})
svc := createControllerServices(cfg)
cons := queryapi.NewControllers(svc)
body := queryapi.QueryCreate{
Type: queryapi.CONTEXTFULL,
}
ctx, rec := createContextWithBody(t, body)
ctx, rec := createContextWithJSONBody(t, body)
err := cons.CreateQuery(ctx)
require.NoError(t, err)
@@ -128,7 +133,7 @@ func TestUpdateQuery(t *testing.T) {
ActiveVersion: &av,
Config: &c,
}
ctx, rec := createContextWithBody(t, body)
ctx, rec := createContextWithJSONBody(t, body)
err = cons.UpdateQuery(ctx, id)
require.NoError(t, err)
@@ -172,7 +177,8 @@ func createControllerServices(cfg *ControllerConfig) *queryapi.Services {
ClientUpdate: clientupdate.New(cfg, &clientupdate.Services{
Client: cli,
}),
Document: docsvc,
Document: docsvc,
DocumentUpload: documentupload.New(cfg),
}
}
@@ -269,7 +275,7 @@ func TestTestQuery(t *testing.T) {
DocumentId: docId,
QueryVersion: 1,
}
ctx, rec := createContextWithBody(t, body)
ctx, rec := createContextWithJSONBody(t, body)
err = cons.TestQuery(ctx, queryId)
require.NoError(t, err)
@@ -282,7 +288,7 @@ func TestTestQuery(t *testing.T) {
DocumentId: docId,
QueryVersion: 2,
}
ctx, rec = createContextWithBody(t, body)
ctx, rec = createContextWithJSONBody(t, body)
err = cons.TestQuery(ctx, queryId)
require.NoError(t, err)
+6 -12
View File
@@ -5,9 +5,7 @@ import (
"testing"
queryapi "queryorchestration/api/queryAPI"
"queryorchestration/internal/client"
"queryorchestration/internal/database/repository"
"queryorchestration/internal/export"
"queryorchestration/internal/test"
"github.com/stretchr/testify/assert"
@@ -16,13 +14,11 @@ import (
func TestGetClientStatus(t *testing.T) {
t.Parallel()
cfg := &ClientConfig{}
cfg := &ControllerConfig{}
test.CreateDB(t, cfg)
cons := queryapi.NewControllers(&queryapi.Services{
Client: client.New(cfg),
Export: export.New(),
})
svc := createControllerServices(cfg)
cons := queryapi.NewControllers(svc)
ctx, rec := createContext(t)
@@ -48,13 +44,11 @@ func TestGetClientStatus(t *testing.T) {
}
func BenchmarkGetClientStatus(b *testing.B) {
cfg := &ClientConfig{}
cfg := &ControllerConfig{}
test.CreateDB(b, cfg)
cons := queryapi.NewControllers(&queryapi.Services{
Client: client.New(cfg),
Export: export.New(),
})
svc := createControllerServices(cfg)
cons := queryapi.NewControllers(svc)
ctx, _ := createContext(b)