Merged in feature/mockserver (pull request #135)

Single Mock Server

* mockserver

* mockserver

* reqs

* mockserver

* slowrunner

* someoptimisedqueries

* passedfullsuite

* passedfullsuite
This commit is contained in:
Michael McGuinness
2025-05-06 01:59:52 +00:00
parent 39b5517d7f
commit ee776d2681
56 changed files with 656 additions and 822 deletions
@@ -1,12 +1,17 @@
CREATE VIEW collectorCurrentActiveVersions as
SELECT DISTINCT
j.clientId,
coalesce(
(FIRST_VALUE(v.versionId) OVER (PARTITION BY j.clientId ORDER BY v.id DESC)),
0
)::int as activeVersion
FROM clients as j
LEFT JOIN collectorActiveVersions as v on v.clientId = j.clientId;
CREATE VIEW collectorCurrentActiveVersions AS
SELECT
c.clientId,
COALESCE(v.versionId, 0)::int AS activeVersion
FROM
clients c
LEFT JOIN (
SELECT DISTINCT ON (clientId)
clientId,
versionId
FROM
collectorActiveVersions
ORDER BY clientId, id DESC
) v ON c.clientId = v.clientId;
CREATE VIEW collectorLatestVersions as
SELECT
@@ -75,3 +80,44 @@ CREATE VIEW collectorQueryDependencyTree AS
FROM collectorQueryDependencyTree as ct
JOIN queryCurrentActiveVersions as av on ct.queryId = av.queryId
JOIN queries as q on q.queryId = ct.queryId;
CREATE OR REPLACE FUNCTION collectorQueryDependencyTreeByClient(
_clientId varchar(255)
)
RETURNS TABLE (
clientId varchar(255),
queryId uuid,
queryType queryType,
queryVersion int,
requiredIds uuid[]
) AS $$
BEGIN
RETURN QUERY
WITH clientQueries as (
SELECT q.clientId, q.queryId
FROM currentCollectorQueries as q
WHERE q.clientId = _clientId
),
dependencyTree as (
WITH RECURSIVE collectorQueryDependencyTree AS (
SELECT cq.clientId, cq.queryId, ri.requiredIds
FROM clientQueries as cq
JOIN queryCurrentRequiredIdsAGG as ri on cq.queryId = ri.queryId
UNION ALL
SELECT acq.clientId, q.queryId, q.requiredIds
FROM queryCurrentRequiredIdsAGG as q
JOIN collectorQueryDependencyTree as acq on q.queryId = ANY(acq.requiredIds)
)
SELECT DISTINCT ct.clientId, ct.queryId, q.queryType, av.activeVersion as queryVersion, ct.requiredIds
FROM collectorQueryDependencyTree as ct
JOIN queryCurrentActiveVersions as av on ct.queryId = av.queryId
JOIN queries as q on q.queryId = ct.queryId
)
SELECT t.clientId, t.queryId, t.queryType, t.queryVersion, t.requiredIds
FROM dependencyTree as t
WHERE t.clientID is not null;
END;
$$ LANGUAGE plpgsql;
@@ -116,8 +116,8 @@ BEGIN
),
tree as (
select q.queryId, q.requiredIds, q.clientId, q.queryVersion
from collectorQueryDependencyTree as q
join docs as d on q.clientId = d.clientId
from docs,
LATERAL collectorQueryDependencyTreeByClient(docs.clientId) AS q
),
query_dependency_tree AS (
WITH RECURSIVE query_deps AS (
@@ -135,7 +135,6 @@ BEGIN
FROM query_deps qd
JOIN tree q ON qd.requiredId = q.queryId
WHERE array_length(q.requiredIds, 1) > 0
)
SELECT
query_deps.queryId,
+6 -7
View File
@@ -33,7 +33,8 @@ doc_text_entries AS (
d.document_id,
cte.id AS text_entry_id,
d.clean_entry_id,
d.clean_fail
d.clean_fail,
d.client_id
FROM
doc_clean_entries d
LEFT JOIN currentTextEntries cte ON cte.cleanId = d.clean_entry_id
@@ -41,16 +42,14 @@ doc_text_entries AS (
required_results AS (
-- All required document-query-version combinations
SELECT
d.document_id,
dte.document_id,
cqdt.queryId,
cqdt.queryVersion,
dte.text_entry_id
FROM
doc_clean_entries d
JOIN collectorQueryDependencyTree cqdt ON cqdt.clientId = d.client_id
JOIN doc_text_entries dte ON dte.document_id = d.document_id
and dte.text_entry_id IS NOT NULL
where d.clean_fail is null
doc_text_entries dte
JOIN collectorQueryDependencyTreeByClient($1) cqdt ON cqdt.clientId = dte.client_id
where dte.clean_fail is null and dte.text_entry_id IS NOT NULL
),
existing_results AS (
-- Valid results that exist
+2 -1
View File
@@ -1,5 +1,6 @@
-- name: ListCollectorQueries :many
SELECT * FROM collectorQueryDependencyTree WHERE clientId = @clientId;
SELECT clientId, queryId, queryType, queryVersion, requiredIds
FROM collectorQueryDependencyTreeByClient(@clientId);
-- name: GetCollectorByClientID :one
SELECT * FROM fullActiveCollectors WHERE clientId = @clientId LIMIT 1;
+4 -5
View File
@@ -75,13 +75,12 @@ SELECT EXISTS (
-- name: ListQueryDirectDependentsByDocumentID :many
WITH doc AS (
SELECT id, clientId FROM documents where id = @documentId
SELECT clientId FROM documents WHERE id = @documentId
)
SELECT dt.queryId
FROM doc as d
JOIN collectorQueryDependencyTree as dt
on d.clientId = dt.clientId
and @queryId = any(dt.requiredIds);
FROM doc,
LATERAL collectorQueryDependencyTreeByClient(doc.clientId) AS dt
WHERE @queryId = ANY(dt.requiredIds);
-- name: ListQueryClientIDs :many
SELECT clientId FROM collectorQueryDependencyTree WHERE queryId = $1;
+10 -2
View File
@@ -67,11 +67,19 @@ SELECT r.id, r.value
WITH docs as (
SELECT id, clientId from documents where id = $1
),
dependency_tree as (
select q.queryId, q.requiredIds, q.clientId, q.queryVersion
from docs,
LATERAL collectorQueryDependencyTreeByClient(docs.clientId) AS q
),
text_entries as (
select id, documentId from currentTextEntries where documentId = $1
),
unsyncedQueries AS (
SELECT DISTINCT dt.queryId, dt.requiredIds
from docs as d
JOIN collectorQueryDependencyTree as dt on d.clientId = dt.clientId
JOIN currentTextEntries as cte on cte.documentId = d.id
JOIN dependency_tree as dt on d.clientId = dt.clientId
JOIN text_entries as cte on cte.documentId = d.id
LEFT JOIN results as r
on r.queryId = dt.queryId
and r.queryVersion = dt.queryVersion
+12 -14
View File
@@ -80,7 +80,8 @@ doc_text_entries AS (
d.document_id,
cte.id AS text_entry_id,
d.clean_entry_id,
d.clean_fail
d.clean_fail,
d.client_id
FROM
doc_clean_entries d
LEFT JOIN currentTextEntries cte ON cte.cleanId = d.clean_entry_id
@@ -88,16 +89,14 @@ doc_text_entries AS (
required_results AS (
-- All required document-query-version combinations
SELECT
d.document_id,
dte.document_id,
cqdt.queryId,
cqdt.queryVersion,
dte.text_entry_id
FROM
doc_clean_entries d
JOIN collectorQueryDependencyTree cqdt ON cqdt.clientId = d.client_id
JOIN doc_text_entries dte ON dte.document_id = d.document_id
and dte.text_entry_id IS NOT NULL
where d.clean_fail is null
doc_text_entries dte
JOIN collectorQueryDependencyTreeByClient($1) cqdt ON cqdt.clientId = dte.client_id
where dte.clean_fail is null and dte.text_entry_id IS NOT NULL
),
existing_results AS (
-- Valid results that exist
@@ -178,7 +177,8 @@ SELECT (
// d.document_id,
// cte.id AS text_entry_id,
// d.clean_entry_id,
// d.clean_fail
// d.clean_fail,
// d.client_id
// FROM
// doc_clean_entries d
// LEFT JOIN currentTextEntries cte ON cte.cleanId = d.clean_entry_id
@@ -186,16 +186,14 @@ SELECT (
// required_results AS (
// -- All required document-query-version combinations
// SELECT
// d.document_id,
// dte.document_id,
// cqdt.queryId,
// cqdt.queryVersion,
// dte.text_entry_id
// FROM
// doc_clean_entries d
// JOIN collectorQueryDependencyTree cqdt ON cqdt.clientId = d.client_id
// JOIN doc_text_entries dte ON dte.document_id = d.document_id
// and dte.text_entry_id IS NOT NULL
// where d.clean_fail is null
// doc_text_entries dte
// JOIN collectorQueryDependencyTreeByClient($1) cqdt ON cqdt.clientId = dte.client_id
// where dte.clean_fail is null and dte.text_entry_id IS NOT NULL
// ),
// existing_results AS (
// -- Valid results that exist
+15 -5
View File
@@ -71,21 +71,31 @@ func (q *Queries) GetCollectorByClientID(ctx context.Context, clientid string) (
}
const listCollectorQueries = `-- name: ListCollectorQueries :many
SELECT clientid, queryid, querytype, queryversion, requiredids FROM collectorQueryDependencyTree WHERE clientId = $1
SELECT clientId, queryId, queryType, queryVersion, requiredIds
FROM collectorQueryDependencyTreeByClient($1)
`
type ListCollectorQueriesRow struct {
Clientid *string `db:"clientid"`
Queryid *uuid.UUID `db:"queryid"`
Querytype NullQuerytype `db:"querytype"`
Queryversion *int32 `db:"queryversion"`
Requiredids []uuid.UUID `db:"requiredids"`
}
// ListCollectorQueries
//
// SELECT clientid, queryid, querytype, queryversion, requiredids FROM collectorQueryDependencyTree WHERE clientId = $1
func (q *Queries) ListCollectorQueries(ctx context.Context, clientid string) ([]*Collectorquerydependencytree, error) {
// SELECT clientId, queryId, queryType, queryVersion, requiredIds
// FROM collectorQueryDependencyTreeByClient($1)
func (q *Queries) ListCollectorQueries(ctx context.Context, clientid string) ([]*ListCollectorQueriesRow, error) {
rows, err := q.db.Query(ctx, listCollectorQueries, clientid)
if err != nil {
return nil, err
}
defer rows.Close()
items := []*Collectorquerydependencytree{}
items := []*ListCollectorQueriesRow{}
for rows.Next() {
var i Collectorquerydependencytree
var i ListCollectorQueriesRow
if err := rows.Scan(
&i.Clientid,
&i.Queryid,
+62 -9
View File
@@ -142,20 +142,28 @@ func TestCollector(t *testing.T) {
qs, err := queries.ListCollectorQueries(ctx, clientId)
require.NoError(t, err)
assert.Len(t, qs, 2)
assert.ElementsMatch(t, []*repository.Collectorquerydependencytree{
jsonV := int32(1)
contextV := int32(0)
assert.ElementsMatch(t, []*repository.ListCollectorQueriesRow{
{
Clientid: clientId,
Clientid: &clientId,
Queryid: &jsonId,
Queryversion: 1,
Querytype: repository.QuerytypeJsonExtractor,
Requiredids: []uuid.UUID{contextId},
Queryversion: &jsonV,
Querytype: repository.NullQuerytype{
Querytype: repository.QuerytypeJsonExtractor,
Valid: true,
},
Requiredids: []uuid.UUID{contextId},
},
{
Clientid: clientId,
Clientid: &clientId,
Queryid: &contextId,
Queryversion: 0,
Querytype: repository.QuerytypeContextFull,
Requiredids: []uuid.UUID{},
Queryversion: &contextV,
Querytype: repository.NullQuerytype{
Querytype: repository.QuerytypeContextFull,
Valid: true,
},
Requiredids: []uuid.UUID{},
},
}, qs)
@@ -212,3 +220,48 @@ func TestCollector(t *testing.T) {
Fields: nil,
}, coll)
}
func BenchmarkListCollectorQueries(b *testing.B) {
ctx := context.Background()
cfg := &serviceconfig.BaseConfig{}
net := test.GetNetwork(b)
test.CreateDB(b, cfg, net, &test.CreateDatabaseConfig{})
queries := cfg.GetDBQueries()
clientId := "EXAMPLE"
err := queries.CreateClient(ctx, &repository.CreateClientParams{
Name: "example_client",
Clientid: clientId,
})
require.NoError(b, err)
b.ResetTimer()
for b.Loop() {
_, _ = queries.ListCollectorQueries(ctx, clientId)
}
}
func BenchmarkGetCollectorByClientID(b *testing.B) {
ctx := context.Background()
cfg := &serviceconfig.BaseConfig{}
net := test.GetNetwork(b)
test.CreateDB(b, cfg, net, &test.CreateDatabaseConfig{})
queries := cfg.GetDBQueries()
clientId := "EXAMPLE"
err := queries.CreateClient(ctx, &repository.CreateClientParams{
Name: "example_client",
Clientid: clientId,
})
require.NoError(b, err)
b.ResetTimer()
for b.Loop() {
_, _ = queries.GetCollectorByClientID(ctx, clientId)
}
}
+10 -12
View File
@@ -346,30 +346,28 @@ func (q *Queries) ListQueryClientIDs(ctx context.Context, queryid *uuid.UUID) ([
const listQueryDirectDependentsByDocumentID = `-- name: ListQueryDirectDependentsByDocumentID :many
WITH doc AS (
SELECT id, clientId FROM documents where id = $2
SELECT clientId FROM documents WHERE id = $2
)
SELECT dt.queryId
FROM doc as d
JOIN collectorQueryDependencyTree as dt
on d.clientId = dt.clientId
and $1 = any(dt.requiredIds)
FROM doc,
LATERAL collectorQueryDependencyTreeByClient(doc.clientId) AS dt
WHERE $1 = ANY(dt.requiredIds)
`
type ListQueryDirectDependentsByDocumentIDParams struct {
Queryid uuid.UUID `db:"queryid"`
Documentid uuid.UUID `db:"documentid"`
Queryid *uuid.UUID `db:"queryid"`
Documentid *uuid.UUID `db:"documentid"`
}
// ListQueryDirectDependentsByDocumentID
//
// WITH doc AS (
// SELECT id, clientId FROM documents where id = $2
// SELECT clientId FROM documents WHERE id = $2
// )
// SELECT dt.queryId
// FROM doc as d
// JOIN collectorQueryDependencyTree as dt
// on d.clientId = dt.clientId
// and $1 = any(dt.requiredIds)
// FROM doc,
// LATERAL collectorQueryDependencyTreeByClient(doc.clientId) AS dt
// WHERE $1 = ANY(dt.requiredIds)
func (q *Queries) ListQueryDirectDependentsByDocumentID(ctx context.Context, arg *ListQueryDirectDependentsByDocumentIDParams) ([]*uuid.UUID, error) {
rows, err := q.db.Query(ctx, listQueryDirectDependentsByDocumentID, arg.Queryid, arg.Documentid)
if err != nil {
+62 -28
View File
@@ -266,8 +266,8 @@ func TestQueryDependencyTree(t *testing.T) {
require.NoError(t, err)
dependents, err := queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: contextQueryID,
Documentid: &docID,
Queryid: &contextQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []uuid.UUID{}, dependents)
@@ -283,8 +283,8 @@ func TestQueryDependencyTree(t *testing.T) {
require.NoError(t, err)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: jsonQueryID,
Documentid: &docID,
Queryid: &jsonQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []uuid.UUID{}, dependents)
@@ -297,14 +297,14 @@ func TestQueryDependencyTree(t *testing.T) {
require.NoError(t, err)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: jsonQueryID,
Documentid: &docID,
Queryid: &jsonQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []uuid.UUID{}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: contextQueryID,
Documentid: &docID,
Queryid: &contextQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []uuid.UUID{}, dependents)
@@ -318,14 +318,14 @@ func TestQueryDependencyTree(t *testing.T) {
require.NoError(t, err)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: jsonQueryID,
Documentid: &docID,
Queryid: &jsonQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []*uuid.UUID{}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: contextQueryID,
Documentid: &docID,
Queryid: &contextQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []*uuid.UUID{&jsonQueryID}, dependents)
@@ -341,14 +341,14 @@ func TestQueryDependencyTree(t *testing.T) {
require.NoError(t, err)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: jsonQueryID,
Documentid: &docID,
Queryid: &jsonQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []*uuid.UUID{}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: contextQueryID,
Documentid: &docID,
Queryid: &contextQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []*uuid.UUID{&jsonQueryID}, dependents)
@@ -361,20 +361,20 @@ func TestQueryDependencyTree(t *testing.T) {
require.NoError(t, err)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: secondJsonQueryID,
Documentid: &docID,
Queryid: &secondJsonQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []*uuid.UUID{}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: jsonQueryID,
Documentid: &docID,
Queryid: &jsonQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []*uuid.UUID{}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: contextQueryID,
Documentid: &docID,
Queryid: &contextQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []*uuid.UUID{&jsonQueryID}, dependents)
@@ -388,20 +388,20 @@ func TestQueryDependencyTree(t *testing.T) {
require.NoError(t, err)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: secondJsonQueryID,
Documentid: &docID,
Queryid: &secondJsonQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []*uuid.UUID{}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: jsonQueryID,
Documentid: &docID,
Queryid: &jsonQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []*uuid.UUID{&secondJsonQueryID}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: contextQueryID,
Documentid: &docID,
Queryid: &contextQueryID,
})
require.NoError(t, err)
assert.ElementsMatch(t, []*uuid.UUID{&jsonQueryID}, dependents)
@@ -590,3 +590,37 @@ func TestListQueryClients(t *testing.T) {
require.NoError(t, err)
assert.ElementsMatch(t, []string{clientOneID}, clients)
}
func BenchmarkListQueryDirectDependentsByDocId(b *testing.B) {
ctx := context.Background()
cfg := &serviceconfig.BaseConfig{}
net := test.GetNetwork(b)
test.CreateDB(b, cfg, net, &test.CreateDatabaseConfig{})
queries := cfg.GetDBQueries()
clientID := "EXAMPLE"
err := queries.CreateClient(ctx, &repository.CreateClientParams{
Name: "example_client",
Clientid: clientID,
})
require.NoError(b, err)
docID, err := queries.CreateDocument(ctx, &repository.CreateDocumentParams{
Clientid: clientID,
Hash: "sample",
})
require.NoError(b, err)
contextQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeContextFull))
require.NoError(b, err)
b.ResetTimer()
for b.Loop() {
_, _ = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: &docID,
Queryid: &contextQueryID,
})
}
}
+20 -4
View File
@@ -234,11 +234,19 @@ const listUnsyncedNoDepsQueriesByDocId = `-- name: ListUnsyncedNoDepsQueriesByDo
WITH docs as (
SELECT id, clientId from documents where id = $1
),
dependency_tree as (
select q.queryId, q.requiredIds, q.clientId, q.queryVersion
from docs,
LATERAL collectorQueryDependencyTreeByClient(docs.clientId) AS q
),
text_entries as (
select id, documentId from currentTextEntries where documentId = $1
),
unsyncedQueries AS (
SELECT DISTINCT dt.queryId, dt.requiredIds
from docs as d
JOIN collectorQueryDependencyTree as dt on d.clientId = dt.clientId
JOIN currentTextEntries as cte on cte.documentId = d.id
JOIN dependency_tree as dt on d.clientId = dt.clientId
JOIN text_entries as cte on cte.documentId = d.id
LEFT JOIN results as r
on r.queryId = dt.queryId
and r.queryVersion = dt.queryVersion
@@ -256,11 +264,19 @@ SELECT DISTINCT queryId FROM unsyncedQueries as baseuq
// WITH docs as (
// SELECT id, clientId from documents where id = $1
// ),
// dependency_tree as (
// select q.queryId, q.requiredIds, q.clientId, q.queryVersion
// from docs,
// LATERAL collectorQueryDependencyTreeByClient(docs.clientId) AS q
// ),
// text_entries as (
// select id, documentId from currentTextEntries where documentId = $1
// ),
// unsyncedQueries AS (
// SELECT DISTINCT dt.queryId, dt.requiredIds
// from docs as d
// JOIN collectorQueryDependencyTree as dt on d.clientId = dt.clientId
// JOIN currentTextEntries as cte on cte.documentId = d.id
// JOIN dependency_tree as dt on d.clientId = dt.clientId
// JOIN text_entries as cte on cte.documentId = d.id
// LEFT JOIN results as r
// on r.queryId = dt.queryId
// and r.queryVersion = dt.queryVersion
+12 -24
View File
@@ -2,7 +2,6 @@ package repository_test
import (
"context"
"sync"
"testing"
"time"
@@ -128,30 +127,19 @@ type docSyncStateParams struct {
}
func getDocumentSyncState(t testing.TB, ctx context.Context, queries *repository.Queries, params docSyncStateParams) {
var wg sync.WaitGroup
t.Helper()
isSynced, err := queries.IsClientSynced(ctx, &params.clientId)
require.NoError(t, err)
assert.Equal(t, params.isSynced, isSynced)
wg.Add(1)
go func() {
isSynced, err := queries.IsClientSynced(ctx, &params.clientId)
require.NoError(t, err)
assert.Equal(t, params.isSynced, isSynced)
wg.Done()
}()
wg.Add(1)
go func() {
doc, err := queries.GetDocumentExternal(ctx, params.documentId)
require.NoError(t, err)
assert.EqualExportedValues(t, &repository.GetDocumentExternalRow{
ID: params.documentId,
Clientid: params.clientId,
Hash: params.hash,
Fields: []byte(params.fields),
}, doc)
wg.Done()
}()
wg.Wait()
doc, err := queries.GetDocumentExternal(ctx, params.documentId)
require.NoError(t, err)
assert.EqualExportedValues(t, &repository.GetDocumentExternalRow{
ID: params.documentId,
Clientid: params.clientId,
Hash: params.hash,
Fields: []byte(params.fields),
}, doc)
}
func createQuery(t testing.TB, queries *repository.Queries, queryType repository.Querytype) uuid.UUID {