Files
query-orchestration/internal/database/repository/query_test.go
T

612 lines
19 KiB
Go
Raw Normal View History

package repository_test
import (
"context"
2025-01-14 17:28:26 +00:00
"os"
"path"
2025-03-05 12:05:46 +00:00
"testing"
"queryorchestration/internal/database"
"queryorchestration/internal/database/repository"
"queryorchestration/internal/serviceconfig"
"queryorchestration/internal/test"
2025-01-20 13:31:48 +00:00
"github.com/google/uuid"
"github.com/jackc/pgx/v5/pgtype"
"github.com/stretchr/testify/assert"
2025-03-19 11:54:14 +00:00
"github.com/stretchr/testify/require"
)
func TestQueries(t *testing.T) {
if testing.Short() {
t.Skip("Skipping long test in short mode")
}
ctx := context.Background()
cfg := &serviceconfig.BaseConfig{}
test.SetCfgProvider(t, cfg)
cfg.SetBasePath(path.Join(os.Getenv("PWD"), "../../.."))
_, cleanup := test.CreateDB(t, ctx, &test.CreateDatabaseConfig{
Cfg: cfg,
RunMigrations: true,
})
2025-01-10 11:12:03 +00:00
defer cleanup()
queries := cfg.GetDBQueries()
contextQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeContextFull))
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.True(t, contextQueryID.Valid)
contextQuery, err := queries.GetQuery(ctx, contextQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.EqualExportedValues(t, &repository.Fullactivequery{
ID: contextQueryID,
Type: repository.QuerytypeContextFull,
Activeversion: 0,
Latestversion: 0,
Config: nil,
Requiredids: []pgtype.UUID{},
}, contextQuery)
ctxVersion, err := queries.AddLatestQueryVersion(ctx, contextQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.Equal(t, int32(1), ctxVersion)
contextQuery, err = queries.GetQuery(ctx, contextQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.EqualExportedValues(t, &repository.Fullactivequery{
ID: contextQueryID,
Type: repository.QuerytypeContextFull,
Activeversion: 0,
Latestversion: 1,
Config: nil,
Requiredids: []pgtype.UUID{},
}, contextQuery)
jsonQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeJsonExtractor))
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.True(t, jsonQueryID.Valid)
2025-01-20 13:31:48 +00:00
jsonQuery, err := queries.GetQuery(ctx, jsonQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-21 18:24:14 +00:00
assert.EqualExportedValues(t, &repository.Fullactivequery{
2025-01-20 13:31:48 +00:00
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 0,
Latestversion: 0,
2025-01-20 13:31:48 +00:00
Config: nil,
Requiredids: []pgtype.UUID{},
2025-01-21 18:24:14 +00:00
}, jsonQuery)
2025-01-20 13:31:48 +00:00
jsonVersion, err := queries.AddLatestQueryVersion(ctx, jsonQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.Equal(t, int32(1), jsonVersion)
jsonQuery, err = queries.GetQuery(ctx, jsonQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.EqualExportedValues(t, &repository.Fullactivequery{
2025-01-20 13:31:48 +00:00
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 0,
Latestversion: 1,
Config: nil,
Requiredids: []pgtype.UUID{},
}, jsonQuery)
err = queries.AddActiveQueryVersion(ctx, &repository.AddActiveQueryVersionParams{
Versionid: 1,
Queryid: jsonQueryID,
2025-01-20 13:31:48 +00:00
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-20 13:31:48 +00:00
jsonQuery, err = queries.GetQuery(ctx, jsonQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.EqualExportedValues(t, &repository.Fullactivequery{
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 1,
Latestversion: 1,
Config: nil,
Requiredids: []pgtype.UUID{},
}, jsonQuery)
jsonConfig := []byte("{\"path\": \"example_path\"}")
2025-01-20 13:31:48 +00:00
err = queries.AddRequiredQuery(ctx, &repository.AddRequiredQueryParams{
Queryid: jsonQueryID,
Requiredqueryid: contextQueryID,
Addedversion: 1,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
jsonQuery, err = queries.GetQuery(ctx, jsonQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.EqualExportedValues(t, &repository.Fullactivequery{
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 1,
Latestversion: 1,
Config: nil,
Requiredids: []pgtype.UUID{contextQueryID},
}, jsonQuery)
jsonVersion, err = queries.AddLatestQueryVersion(ctx, jsonQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.Equal(t, int32(2), jsonVersion)
jsonQuery, err = queries.GetQuery(ctx, jsonQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.EqualExportedValues(t, &repository.Fullactivequery{
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 1,
Latestversion: 2,
Config: nil,
Requiredids: []pgtype.UUID{contextQueryID},
}, jsonQuery)
2025-01-20 13:31:48 +00:00
removeV := int32(2)
err = queries.RemoveRequiredQuery(ctx, &repository.RemoveRequiredQueryParams{
Queryid: jsonQueryID,
Requiredqueryid: contextQueryID,
Removedversion: &removeV,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-20 13:31:48 +00:00
err = queries.SetQueryConfig(ctx, &repository.SetQueryConfigParams{
Queryid: jsonQueryID,
Config: jsonConfig,
Addedversion: 1,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
jsonQueryConfig, err := queries.GetActiveQueryConfig(ctx, jsonQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.Equal(t, jsonConfig, jsonQueryConfig)
err = queries.SetQueryConfig(ctx, &repository.SetQueryConfigParams{
Queryid: jsonQueryID,
Config: []byte(`{"second":"key"}`),
Addedversion: 2,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
jsonQueryConfig, err = queries.GetActiveQueryConfig(ctx, jsonQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.Equal(t, jsonConfig, jsonQueryConfig)
2025-01-20 13:31:48 +00:00
err = queries.AddActiveQueryVersion(ctx, &repository.AddActiveQueryVersionParams{
Queryid: jsonQueryID,
Versionid: 2,
2025-01-20 13:31:48 +00:00
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
jsonQueryConfig, err = queries.GetActiveQueryConfig(ctx, jsonQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.Equal(t, []byte(`{"second": "key"}`), jsonQueryConfig)
2025-01-20 13:31:48 +00:00
jsonQuery, err = queries.GetQuery(ctx, jsonQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-21 18:24:14 +00:00
assert.EqualExportedValues(t, &repository.Fullactivequery{
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 2,
2025-01-20 13:31:48 +00:00
Latestversion: 2,
Config: jsonQueryConfig,
Requiredids: []pgtype.UUID{},
2025-01-21 18:24:14 +00:00
}, jsonQuery)
v := int32(1)
versionedQuery, err := queries.GetQueryWithVersion(ctx, &repository.GetQueryWithVersionParams{
ID: jsonQueryID,
Version: &v,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.EqualExportedValues(t, &repository.GetQueryWithVersionRow{
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 2,
Latestversion: 2,
Config: jsonConfig,
Requiredids: []pgtype.UUID{contextQueryID},
}, versionedQuery)
2025-01-20 13:31:48 +00:00
all_exist, err := queries.AllQueriesExist(ctx, []pgtype.UUID{})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-20 13:31:48 +00:00
assert.True(t, all_exist)
all_exist, err = queries.AllQueriesExist(ctx, []pgtype.UUID{database.MustToDBUUID(uuid.New())})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-20 13:31:48 +00:00
assert.False(t, all_exist)
all_exist, err = queries.AllQueriesExist(ctx, []pgtype.UUID{jsonQueryID})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-20 13:31:48 +00:00
assert.True(t, all_exist)
all_exist, err = queries.AllQueriesExist(ctx, []pgtype.UUID{jsonQueryID, contextQueryID})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-20 13:31:48 +00:00
assert.True(t, all_exist)
all_exist, err = queries.AllQueriesExist(ctx, []pgtype.UUID{jsonQueryID, database.MustToDBUUID(uuid.New())})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-20 13:31:48 +00:00
assert.False(t, all_exist)
}
2025-01-23 14:56:20 +00:00
func TestQueryDependencyTree(t *testing.T) {
if testing.Short() {
t.Skip("Skipping long test in short mode")
}
2025-01-23 14:56:20 +00:00
ctx := context.Background()
cfg := &serviceconfig.BaseConfig{}
test.SetCfgProvider(t, cfg)
cfg.SetBasePath(path.Join(os.Getenv("PWD"), "../../.."))
_, cleanup := test.CreateDB(t, ctx, &test.CreateDatabaseConfig{
Cfg: cfg,
RunMigrations: true,
})
2025-01-23 14:56:20 +00:00
defer cleanup()
queries := cfg.GetDBQueries()
2025-01-23 14:56:20 +00:00
clientID, err := queries.CreateClient(ctx, &repository.CreateClientParams{
Name: "example_client",
Externalid: "EXAMPLE",
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
version, err := queries.AddLatestCollectorVersion(ctx, clientID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
err = queries.SetActiveCollectorVersion(ctx, &repository.SetActiveCollectorVersionParams{
Clientid: clientID,
Versionid: version,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
docID, err := queries.CreateDocument(ctx, &repository.CreateDocumentParams{
Clientid: clientID,
Hash: "sample",
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-23 14:56:20 +00:00
contextQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeContextFull))
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
_, err = queries.AddLatestQueryVersion(ctx, contextQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
err = queries.AddActiveQueryVersion(ctx, &repository.AddActiveQueryVersionParams{
Queryid: contextQueryID,
Versionid: 1,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-23 14:56:20 +00:00
dependents, err := queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: contextQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{}, dependents)
2025-01-23 14:56:20 +00:00
jsonQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeJsonExtractor))
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
_, err = queries.AddLatestQueryVersion(ctx, jsonQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
err = queries.AddActiveQueryVersion(ctx, &repository.AddActiveQueryVersionParams{
Queryid: jsonQueryID,
Versionid: 1,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: jsonQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{}, dependents)
2025-01-23 14:56:20 +00:00
err = queries.AddRequiredQuery(ctx, &repository.AddRequiredQueryParams{
Queryid: jsonQueryID,
Requiredqueryid: contextQueryID,
Addedversion: 1,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-23 14:56:20 +00:00
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: jsonQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: contextQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{}, dependents)
err = queries.AddCollectorQuery(ctx, &repository.AddCollectorQueryParams{
Clientid: clientID,
Name: "example_name'",
Queryid: jsonQueryID,
Addedversion: 1,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: jsonQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: contextQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{jsonQueryID}, dependents)
2025-01-23 14:56:20 +00:00
secondJsonQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeJsonExtractor))
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
_, err = queries.AddLatestQueryVersion(ctx, secondJsonQueryID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
err = queries.AddActiveQueryVersion(ctx, &repository.AddActiveQueryVersionParams{
Queryid: secondJsonQueryID,
Versionid: 1,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: jsonQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: contextQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{jsonQueryID}, dependents)
2025-01-23 14:56:20 +00:00
err = queries.AddRequiredQuery(ctx, &repository.AddRequiredQueryParams{
Queryid: secondJsonQueryID,
Requiredqueryid: jsonQueryID,
Addedversion: 1,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-23 14:56:20 +00:00
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: secondJsonQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: jsonQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: contextQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{jsonQueryID}, dependents)
err = queries.AddCollectorQuery(ctx, &repository.AddCollectorQueryParams{
Clientid: clientID,
Name: "example_name'",
Queryid: secondJsonQueryID,
Addedversion: 1,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: secondJsonQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: jsonQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{secondJsonQueryID}, dependents)
dependents, err = queries.ListQueryDirectDependentsByDocumentID(ctx, &repository.ListQueryDirectDependentsByDocumentIDParams{
Documentid: docID,
Queryid: contextQueryID,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{jsonQueryID}, dependents)
2025-01-23 14:56:20 +00:00
isdependent, err := queries.IsQueryInDependencyTree(ctx, &repository.IsQueryInDependencyTreeParams{
Queryid: jsonQueryID,
Requiredqueryids: []pgtype.UUID{contextQueryID},
2025-01-23 14:56:20 +00:00
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-23 14:56:20 +00:00
assert.False(t, isdependent)
isdependent, err = queries.IsQueryInDependencyTree(ctx, &repository.IsQueryInDependencyTreeParams{
Queryid: jsonQueryID,
Requiredqueryids: []pgtype.UUID{secondJsonQueryID},
2025-01-23 14:56:20 +00:00
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-23 14:56:20 +00:00
assert.True(t, isdependent)
isdependent, err = queries.IsQueryInDependencyTree(ctx, &repository.IsQueryInDependencyTreeParams{
Queryid: jsonQueryID,
Requiredqueryids: []pgtype.UUID{jsonQueryID},
2025-01-23 14:56:20 +00:00
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-23 14:56:20 +00:00
assert.True(t, isdependent)
isdependent, err = queries.IsQueryInDependencyTree(ctx, &repository.IsQueryInDependencyTreeParams{
Queryid: secondJsonQueryID,
Requiredqueryids: []pgtype.UUID{jsonQueryID, contextQueryID},
2025-01-23 14:56:20 +00:00
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-23 14:56:20 +00:00
assert.False(t, isdependent)
isdependent, err = queries.IsQueryInDependencyTree(ctx, &repository.IsQueryInDependencyTreeParams{
Queryid: contextQueryID,
Requiredqueryids: []pgtype.UUID{jsonQueryID, secondJsonQueryID},
2025-01-23 14:56:20 +00:00
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-23 14:56:20 +00:00
assert.True(t, isdependent)
}
func TestQueriesList(t *testing.T) {
if testing.Short() {
t.Skip("Skipping long test in short mode")
}
ctx := context.Background()
cfg := &serviceconfig.BaseConfig{}
test.SetCfgProvider(t, cfg)
cfg.SetBasePath(path.Join(os.Getenv("PWD"), "../../.."))
_, cleanup := test.CreateDB(t, ctx, &test.CreateDatabaseConfig{
Cfg: cfg,
RunMigrations: true,
})
defer cleanup()
queries := cfg.GetDBQueries()
contextQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeContextFull))
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
jsonQueryID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeJsonExtractor))
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
qs, err := queries.ListQueries(ctx)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
2025-01-10 11:12:03 +00:00
assert.Len(t, qs, 2)
assert.ElementsMatch(t, []*repository.Fullactivequery{
{
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 0,
Latestversion: 0,
Config: nil,
Requiredids: []pgtype.UUID{},
},
{
ID: contextQueryID,
Type: repository.QuerytypeContextFull,
Activeversion: 0,
Latestversion: 0,
Config: nil,
Requiredids: []pgtype.UUID{},
},
}, qs)
qs, err = queries.ListQueriesById(ctx, []pgtype.UUID{jsonQueryID})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.Len(t, qs, 1)
assert.ElementsMatch(t, []*repository.Fullactivequery{
{
ID: jsonQueryID,
Type: repository.QuerytypeJsonExtractor,
Activeversion: 0,
Latestversion: 0,
Config: nil,
Requiredids: []pgtype.UUID{},
},
}, qs)
}
func TestListQueryClients(t *testing.T) {
if testing.Short() {
t.Skip("Skipping long test in short mode")
}
ctx := context.Background()
cfg := &serviceconfig.BaseConfig{}
test.SetCfgProvider(t, cfg)
cfg.SetBasePath(path.Join(os.Getenv("PWD"), "../../.."))
_, cleanup := test.CreateDB(t, ctx, &test.CreateDatabaseConfig{
Cfg: cfg,
RunMigrations: true,
})
defer cleanup()
queries := cfg.GetDBQueries()
contextID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeContextFull))
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
clients, err := queries.ListQueryClientIDs(ctx, contextID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{}, clients)
clientOneID, err := queries.CreateClient(ctx, &repository.CreateClientParams{
Name: "example_client",
Externalid: "EXAMPLE",
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
versionOne, err := queries.AddLatestCollectorVersion(ctx, clientOneID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
err = queries.SetActiveCollectorVersion(ctx, &repository.SetActiveCollectorVersionParams{
Clientid: clientOneID,
Versionid: versionOne,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
err = queries.AddCollectorQuery(ctx, &repository.AddCollectorQueryParams{
Clientid: clientOneID,
Queryid: contextID,
Addedversion: 1,
Name: "example_key",
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
clients, err = queries.ListQueryClientIDs(ctx, contextID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{clientOneID}, clients)
clientTwoID, err := queries.CreateClient(ctx, &repository.CreateClientParams{
Name: "example_client_dos",
Externalid: "EXAMPLE DOS",
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
versionTwo, err := queries.AddLatestCollectorVersion(ctx, clientTwoID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
err = queries.SetActiveCollectorVersion(ctx, &repository.SetActiveCollectorVersionParams{
Clientid: clientTwoID,
Versionid: versionTwo,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
err = queries.AddCollectorQuery(ctx, &repository.AddCollectorQueryParams{
Clientid: clientTwoID,
Queryid: contextID,
Addedversion: 1,
Name: "example_key",
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
clients, err = queries.ListQueryClientIDs(ctx, contextID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{clientOneID, clientTwoID}, clients)
jsonID, err := queries.CreateQuery(ctx, repository.Querytype(repository.QuerytypeJsonExtractor))
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
_, err = queries.AddLatestQueryVersion(ctx, jsonID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
err = queries.AddRequiredQuery(ctx, &repository.AddRequiredQueryParams{
Queryid: jsonID,
Requiredqueryid: contextID,
Addedversion: 1,
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
err = queries.AddCollectorQuery(ctx, &repository.AddCollectorQueryParams{
Clientid: clientOneID,
Queryid: jsonID,
Addedversion: 1,
Name: "example_key",
})
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
clients, err = queries.ListQueryClientIDs(ctx, jsonID)
2025-03-19 11:54:14 +00:00
require.NoError(t, err)
assert.ElementsMatch(t, []pgtype.UUID{clientOneID}, clients)
}