nidus-sync/platform/mailer.go
Eli Ribble 7237f5f666
Some checks failed
/ golint (push) Failing after 3m50s
Move internal references to new source hosting
2026-05-19 15:33:57 +00:00

60 lines
2.6 KiB
Go

package platform
import (
"context"
"github.com/Gleipnir-Technology/bob"
"github.com/Gleipnir-Technology/bob/dialect/psql"
"github.com/Gleipnir-Technology/bob/dialect/psql/dialect"
"github.com/Gleipnir-Technology/bob/dialect/psql/sm"
"source.gleipnir.technology/Gleipnir/nidus-sync/db"
"source.gleipnir.technology/Gleipnir/nidus-sync/db/models"
querypublic "source.gleipnir.technology/Gleipnir/nidus-sync/db/query/public"
"source.gleipnir.technology/Gleipnir/nidus-sync/platform/types"
)
func MailerByID(ctx context.Context, user User, id int32) (*types.Mailer, error) {
return querypublic.MailerFromID(ctx, db.PGInstance.PGXPool, int64(user.Organization.ID), int64(id))
}
func MailerList(ctx context.Context, user User, limit int) ([]types.Mailer, error) {
return querypublic.MailersFromOrganizationID(ctx, db.PGInstance.PGXPool, int64(user.Organization.ID), int64(limit))
}
func mailerQuery() bob.BaseQuery[*dialect.SelectQuery] {
return psql.Select(
sm.Columns(
models.Addresses.Columns.Country.As("address.country"),
models.Addresses.Columns.Locality.As("address.locality"),
//sm.From(psql.F("COALESCE", psql.Raw("address.location_latitude"), 0)).As("address.location.latitude"),
//sm.From(psql.F("COALESCE", psql.Raw("address.location_longitude"), 0)).As("address.location.longitude"),
"COALESCE(address.location_latitude, 0) AS \"address.location.latitude\"",
"COALESCE(address.location_longitude, 0) AS \"address.location.longitude\"",
models.Addresses.Columns.Number.As("address.number_"),
models.Addresses.Columns.PostalCode.As("address.postal_code"),
models.Addresses.Columns.Region.As("address.region"),
models.Addresses.Columns.Street.As("address.street"),
models.Addresses.Columns.Unit.As("address.unit"),
models.ComplianceReportRequests.Columns.Created.As("created"),
models.ComplianceReportRequests.Columns.PublicID.As("compliance_report_request_id"),
models.Sites.Columns.ID.As("site_id"),
models.Sites.Columns.OwnerName.As("recipient"),
"'created' AS \"status\"",
),
sm.From(models.ComplianceReportRequestMailers.Name()),
sm.InnerJoin(models.ComplianceReportRequests.Name()).OnEQ(
models.ComplianceReportRequestMailers.Columns.ComplianceReportRequestID,
models.ComplianceReportRequests.Columns.ID,
),
sm.InnerJoin(models.Leads.Name()).OnEQ(
models.ComplianceReportRequests.Columns.LeadID,
models.Leads.Columns.ID,
),
sm.InnerJoin(models.Sites.Name()).OnEQ(
models.Leads.Columns.SiteID,
models.Sites.Columns.ID,
),
sm.InnerJoin(models.Addresses.Name()).OnEQ(
models.Sites.Columns.AddressID,
models.Addresses.Columns.ID,
),
)
}