feat(system api): list instances by domains (#6806)

Allow to list instances by their domains on the system API.

closes #6785
This commit is contained in:
Tim Möhlmann
2023-10-25 22:20:12 +03:00
committed by GitHub
parent b9061ffadc
commit ad26ca88d7
5 changed files with 136 additions and 2 deletions

View File

@@ -150,6 +150,15 @@ func NewInstanceIDsListSearchQuery(ids ...string) (SearchQuery, error) {
return NewListQuery(InstanceColumnID, list, ListIn)
}
func NewInstanceDomainsListSearchQuery(domains ...string) (SearchQuery, error) {
list := make([]interface{}, len(domains))
for i, value := range domains {
list[i] = value
}
return NewListQuery(InstanceDomainDomainCol, list, ListIn)
}
func (q *InstanceSearchQueries) toQuery(query sq.SelectBuilder) sq.SelectBuilder {
query = q.SearchRequest.toQuery(query)
for _, q := range q.Queries {
@@ -280,7 +289,8 @@ func prepareInstancesQuery(ctx context.Context, db prepareDatabase) (sq.SelectBu
return sq.Select(
InstanceColumnID.identifier(),
countColumn.identifier(),
).From(instanceTable.identifier()),
).From(instanceTable.identifier()).
LeftJoin(join(InstanceDomainInstanceIDCol, InstanceColumnID)),
func(builder sq.SelectBuilder) sq.SelectBuilder {
return sq.Select(
instanceFilterCountColumn,

View File

@@ -55,7 +55,8 @@ var (
` projections.instance_domains.creation_date,` +
` projections.instance_domains.change_date, ` +
` projections.instance_domains.sequence` +
` FROM (SELECT projections.instances.id, COUNT(*) OVER () FROM projections.instances) AS f` +
` FROM (SELECT projections.instances.id, COUNT(*) OVER () FROM projections.instances` +
` LEFT JOIN projections.instance_domains ON projections.instances.id = projections.instance_domains.instance_id) AS f` +
` LEFT JOIN projections.instances ON f.id = projections.instances.id` +
` LEFT JOIN projections.instance_domains ON f.id = projections.instance_domains.instance_id` +
` AS OF SYSTEM TIME '-1 ms'`