// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.30.0 // source: geometries.sql package sqlc import ( "context" "encoding/json" "github.com/jackc/pgx/v5/pgtype" ) const bulkDeleteEntityGeometriesByEntityId = `-- name: BulkDeleteEntityGeometriesByEntityId :many DELETE FROM entity_geometries WHERE entity_id = $1 RETURNING geometry_id ` func (q *Queries) BulkDeleteEntityGeometriesByEntityId(ctx context.Context, entityID pgtype.UUID) ([]pgtype.UUID, error) { rows, err := q.db.Query(ctx, bulkDeleteEntityGeometriesByEntityId, entityID) if err != nil { return nil, err } defer rows.Close() items := []pgtype.UUID{} for rows.Next() { var geometry_id pgtype.UUID if err := rows.Scan(&geometry_id); err != nil { return nil, err } items = append(items, geometry_id) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const bulkDeleteEntityGeometriesByGeometryID = `-- name: BulkDeleteEntityGeometriesByGeometryID :exec DELETE FROM entity_geometries WHERE geometry_id = $1 ` func (q *Queries) BulkDeleteEntityGeometriesByGeometryID(ctx context.Context, geometryID pgtype.UUID) error { _, err := q.db.Exec(ctx, bulkDeleteEntityGeometriesByGeometryID, geometryID) return err } const createEntityGeometries = `-- name: CreateEntityGeometries :exec INSERT INTO entity_geometries ( entity_id, geometry_id, project_id ) SELECT $1, unnest($3::uuid[]), $2 ON CONFLICT DO NOTHING ` type CreateEntityGeometriesParams struct { EntityID pgtype.UUID `json:"entity_id"` ProjectID pgtype.UUID `json:"project_id"` GeometryIds []pgtype.UUID `json:"geometry_ids"` } func (q *Queries) CreateEntityGeometries(ctx context.Context, arg CreateEntityGeometriesParams) error { _, err := q.db.Exec(ctx, createEntityGeometries, arg.EntityID, arg.ProjectID, arg.GeometryIds) return err } const createGeometry = `-- name: CreateGeometry :one INSERT INTO geometries ( id, geo_type, draw_geometry, binding, time_start, time_end, bbox, project_id ) VALUES ( COALESCE($7::uuid, uuidv7()), $1, $2, $3, $4, $5, ST_MakeEnvelope($8::float8, $9::float8, $10::float8, $11::float8, 4326), $6 ) RETURNING id, geo_type, draw_geometry, binding, time_start, time_end, project_id, ST_XMin(bbox)::float8 as min_lng, ST_YMin(bbox)::float8 as min_lat, ST_XMax(bbox)::float8 as max_lng, ST_YMax(bbox)::float8 as max_lat, is_deleted, created_at, updated_at ` type CreateGeometryParams struct { GeoType int16 `json:"geo_type"` DrawGeometry json.RawMessage `json:"draw_geometry"` Binding []byte `json:"binding"` TimeStart pgtype.Int4 `json:"time_start"` TimeEnd pgtype.Int4 `json:"time_end"` ProjectID pgtype.UUID `json:"project_id"` ID pgtype.UUID `json:"id"` MinLng float64 `json:"min_lng"` MinLat float64 `json:"min_lat"` MaxLng float64 `json:"max_lng"` MaxLat float64 `json:"max_lat"` } type CreateGeometryRow struct { ID pgtype.UUID `json:"id"` GeoType int16 `json:"geo_type"` DrawGeometry json.RawMessage `json:"draw_geometry"` Binding []byte `json:"binding"` TimeStart pgtype.Int4 `json:"time_start"` TimeEnd pgtype.Int4 `json:"time_end"` ProjectID pgtype.UUID `json:"project_id"` MinLng float64 `json:"min_lng"` MinLat float64 `json:"min_lat"` MaxLng float64 `json:"max_lng"` MaxLat float64 `json:"max_lat"` IsDeleted bool `json:"is_deleted"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` } func (q *Queries) CreateGeometry(ctx context.Context, arg CreateGeometryParams) (CreateGeometryRow, error) { row := q.db.QueryRow(ctx, createGeometry, arg.GeoType, arg.DrawGeometry, arg.Binding, arg.TimeStart, arg.TimeEnd, arg.ProjectID, arg.ID, arg.MinLng, arg.MinLat, arg.MaxLng, arg.MaxLat, ) var i CreateGeometryRow err := row.Scan( &i.ID, &i.GeoType, &i.DrawGeometry, &i.Binding, &i.TimeStart, &i.TimeEnd, &i.ProjectID, &i.MinLng, &i.MinLat, &i.MaxLng, &i.MaxLat, &i.IsDeleted, &i.CreatedAt, &i.UpdatedAt, ) return i, err } const deleteEntityGeometriesByProjectID = `-- name: DeleteEntityGeometriesByProjectID :exec DELETE FROM entity_geometries WHERE project_id = $1 ` func (q *Queries) DeleteEntityGeometriesByProjectID(ctx context.Context, projectID pgtype.UUID) error { _, err := q.db.Exec(ctx, deleteEntityGeometriesByProjectID, projectID) return err } const deleteEntityGeometry = `-- name: DeleteEntityGeometry :exec DELETE FROM entity_geometries WHERE entity_id = $1 AND geometry_id = $2 ` type DeleteEntityGeometryParams struct { EntityID pgtype.UUID `json:"entity_id"` GeometryID pgtype.UUID `json:"geometry_id"` } func (q *Queries) DeleteEntityGeometry(ctx context.Context, arg DeleteEntityGeometryParams) error { _, err := q.db.Exec(ctx, deleteEntityGeometry, arg.EntityID, arg.GeometryID) return err } const deleteGeometriesByIDs = `-- name: DeleteGeometriesByIDs :exec UPDATE geometries SET is_deleted = true WHERE id = ANY($1::uuid[]) ` func (q *Queries) DeleteGeometriesByIDs(ctx context.Context, dollar_1 []pgtype.UUID) error { _, err := q.db.Exec(ctx, deleteGeometriesByIDs, dollar_1) return err } const deleteGeometry = `-- name: DeleteGeometry :exec UPDATE geometries SET is_deleted = true WHERE id = $1 ` func (q *Queries) DeleteGeometry(ctx context.Context, id pgtype.UUID) error { _, err := q.db.Exec(ctx, deleteGeometry, id) return err } const getGeometriesByIDs = `-- name: GetGeometriesByIDs :many SELECT id, geo_type, draw_geometry, binding, time_start, time_end, project_id, ST_XMin(bbox)::float8 as min_lng, ST_YMin(bbox)::float8 as min_lat, ST_XMax(bbox)::float8 as max_lng, ST_YMax(bbox)::float8 as max_lat, is_deleted, created_at, updated_at FROM geometries WHERE id = ANY($1::uuid[]) AND is_deleted = false ` type GetGeometriesByIDsRow struct { ID pgtype.UUID `json:"id"` GeoType int16 `json:"geo_type"` DrawGeometry json.RawMessage `json:"draw_geometry"` Binding []byte `json:"binding"` TimeStart pgtype.Int4 `json:"time_start"` TimeEnd pgtype.Int4 `json:"time_end"` ProjectID pgtype.UUID `json:"project_id"` MinLng float64 `json:"min_lng"` MinLat float64 `json:"min_lat"` MaxLng float64 `json:"max_lng"` MaxLat float64 `json:"max_lat"` IsDeleted bool `json:"is_deleted"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` } func (q *Queries) GetGeometriesByIDs(ctx context.Context, dollar_1 []pgtype.UUID) ([]GetGeometriesByIDsRow, error) { rows, err := q.db.Query(ctx, getGeometriesByIDs, dollar_1) if err != nil { return nil, err } defer rows.Close() items := []GetGeometriesByIDsRow{} for rows.Next() { var i GetGeometriesByIDsRow if err := rows.Scan( &i.ID, &i.GeoType, &i.DrawGeometry, &i.Binding, &i.TimeStart, &i.TimeEnd, &i.ProjectID, &i.MinLng, &i.MinLat, &i.MaxLng, &i.MaxLat, &i.IsDeleted, &i.CreatedAt, &i.UpdatedAt, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const getGeometriesByProjectId = `-- name: GetGeometriesByProjectId :many SELECT id, geo_type, draw_geometry, binding, time_start, time_end, project_id, ST_XMin(bbox)::float8 as min_lng, ST_YMin(bbox)::float8 as min_lat, ST_XMax(bbox)::float8 as max_lng, ST_YMax(bbox)::float8 as max_lat, is_deleted, created_at, updated_at FROM geometries WHERE project_id = $1 AND is_deleted = false ` type GetGeometriesByProjectIdRow struct { ID pgtype.UUID `json:"id"` GeoType int16 `json:"geo_type"` DrawGeometry json.RawMessage `json:"draw_geometry"` Binding []byte `json:"binding"` TimeStart pgtype.Int4 `json:"time_start"` TimeEnd pgtype.Int4 `json:"time_end"` ProjectID pgtype.UUID `json:"project_id"` MinLng float64 `json:"min_lng"` MinLat float64 `json:"min_lat"` MaxLng float64 `json:"max_lng"` MaxLat float64 `json:"max_lat"` IsDeleted bool `json:"is_deleted"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` } func (q *Queries) GetGeometriesByProjectId(ctx context.Context, projectID pgtype.UUID) ([]GetGeometriesByProjectIdRow, error) { rows, err := q.db.Query(ctx, getGeometriesByProjectId, projectID) if err != nil { return nil, err } defer rows.Close() items := []GetGeometriesByProjectIdRow{} for rows.Next() { var i GetGeometriesByProjectIdRow if err := rows.Scan( &i.ID, &i.GeoType, &i.DrawGeometry, &i.Binding, &i.TimeStart, &i.TimeEnd, &i.ProjectID, &i.MinLng, &i.MinLat, &i.MaxLng, &i.MaxLat, &i.IsDeleted, &i.CreatedAt, &i.UpdatedAt, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const getGeometryById = `-- name: GetGeometryById :one SELECT id, geo_type, draw_geometry, binding, time_start, time_end, project_id, ST_XMin(bbox)::float8 as min_lng, ST_YMin(bbox)::float8 as min_lat, ST_XMax(bbox)::float8 as max_lng, ST_YMax(bbox)::float8 as max_lat, is_deleted, created_at, updated_at FROM geometries WHERE id = $1 AND is_deleted = false ` type GetGeometryByIdRow struct { ID pgtype.UUID `json:"id"` GeoType int16 `json:"geo_type"` DrawGeometry json.RawMessage `json:"draw_geometry"` Binding []byte `json:"binding"` TimeStart pgtype.Int4 `json:"time_start"` TimeEnd pgtype.Int4 `json:"time_end"` ProjectID pgtype.UUID `json:"project_id"` MinLng float64 `json:"min_lng"` MinLat float64 `json:"min_lat"` MaxLng float64 `json:"max_lng"` MaxLat float64 `json:"max_lat"` IsDeleted bool `json:"is_deleted"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` } func (q *Queries) GetGeometryById(ctx context.Context, id pgtype.UUID) (GetGeometryByIdRow, error) { row := q.db.QueryRow(ctx, getGeometryById, id) var i GetGeometryByIdRow err := row.Scan( &i.ID, &i.GeoType, &i.DrawGeometry, &i.Binding, &i.TimeStart, &i.TimeEnd, &i.ProjectID, &i.MinLng, &i.MinLat, &i.MaxLng, &i.MaxLat, &i.IsDeleted, &i.CreatedAt, &i.UpdatedAt, ) return i, err } const searchGeometries = `-- name: SearchGeometries :many SELECT g.id, g.geo_type, g.draw_geometry, g.binding, g.time_start, g.time_end, g.project_id, ST_XMin(g.bbox)::float8 as min_lng, ST_YMin(g.bbox)::float8 as min_lat, ST_XMax(g.bbox)::float8 as max_lng, ST_YMax(g.bbox)::float8 as max_lat, g.is_deleted, g.created_at, g.updated_at FROM geometries g WHERE g.is_deleted = false AND ($1::uuid IS NULL OR g.project_id = $1::uuid) AND ( $2::float8 IS NULL OR $3::float8 IS NULL OR $4::float8 IS NULL OR $5::float8 IS NULL OR g.bbox && ST_MakeEnvelope( $2::float8, $3::float8, $4::float8, $5::float8, 4326 ) ) AND ( $6::int IS NULL OR int4range(g.time_start, g.time_end, '[]') @> $6::int ) AND ( $7::uuid IS NULL OR EXISTS ( SELECT 1 FROM entity_geometries eg WHERE eg.geometry_id = g.id AND eg.entity_id = $7::uuid ) ) ORDER BY g.id DESC ` type SearchGeometriesParams struct { ProjectID pgtype.UUID `json:"project_id"` SearchMinLng pgtype.Float8 `json:"search_min_lng"` SearchMinLat pgtype.Float8 `json:"search_min_lat"` SearchMaxLng pgtype.Float8 `json:"search_max_lng"` SearchMaxLat pgtype.Float8 `json:"search_max_lat"` TimePoint pgtype.Int4 `json:"time_point"` EntityID pgtype.UUID `json:"entity_id"` } type SearchGeometriesRow struct { ID pgtype.UUID `json:"id"` GeoType int16 `json:"geo_type"` DrawGeometry json.RawMessage `json:"draw_geometry"` Binding []byte `json:"binding"` TimeStart pgtype.Int4 `json:"time_start"` TimeEnd pgtype.Int4 `json:"time_end"` ProjectID pgtype.UUID `json:"project_id"` MinLng float64 `json:"min_lng"` MinLat float64 `json:"min_lat"` MaxLng float64 `json:"max_lng"` MaxLat float64 `json:"max_lat"` IsDeleted bool `json:"is_deleted"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` } func (q *Queries) SearchGeometries(ctx context.Context, arg SearchGeometriesParams) ([]SearchGeometriesRow, error) { rows, err := q.db.Query(ctx, searchGeometries, arg.ProjectID, arg.SearchMinLng, arg.SearchMinLat, arg.SearchMaxLng, arg.SearchMaxLat, arg.TimePoint, arg.EntityID, ) if err != nil { return nil, err } defer rows.Close() items := []SearchGeometriesRow{} for rows.Next() { var i SearchGeometriesRow if err := rows.Scan( &i.ID, &i.GeoType, &i.DrawGeometry, &i.Binding, &i.TimeStart, &i.TimeEnd, &i.ProjectID, &i.MinLng, &i.MinLat, &i.MaxLng, &i.MaxLat, &i.IsDeleted, &i.CreatedAt, &i.UpdatedAt, ); err != nil { return nil, err } items = append(items, i) } if err := rows.Err(); err != nil { return nil, err } return items, nil } const updateGeometry = `-- name: UpdateGeometry :one UPDATE geometries SET geo_type = COALESCE($1, geo_type), draw_geometry = COALESCE($2, draw_geometry), binding = COALESCE($3, binding), time_start = COALESCE($4, time_start), time_end = COALESCE($5, time_end), project_id = COALESCE($6, project_id), bbox = CASE WHEN $7::boolean = true THEN ST_MakeEnvelope($8::float8, $9::float8, $10::float8, $11::float8, 4326) ELSE bbox END, updated_at = now() WHERE id = $12 AND is_deleted = false RETURNING id, geo_type, draw_geometry, binding, time_start, time_end, project_id, ST_XMin(bbox)::float8 as min_lng, ST_YMin(bbox)::float8 as min_lat, ST_XMax(bbox)::float8 as max_lng, ST_YMax(bbox)::float8 as max_lat, is_deleted, created_at, updated_at ` type UpdateGeometryParams struct { GeoType pgtype.Int2 `json:"geo_type"` DrawGeometry []byte `json:"draw_geometry"` Binding []byte `json:"binding"` TimeStart pgtype.Int4 `json:"time_start"` TimeEnd pgtype.Int4 `json:"time_end"` ProjectID pgtype.UUID `json:"project_id"` UpdateBbox pgtype.Bool `json:"update_bbox"` MinLng pgtype.Float8 `json:"min_lng"` MinLat pgtype.Float8 `json:"min_lat"` MaxLng pgtype.Float8 `json:"max_lng"` MaxLat pgtype.Float8 `json:"max_lat"` ID pgtype.UUID `json:"id"` } type UpdateGeometryRow struct { ID pgtype.UUID `json:"id"` GeoType int16 `json:"geo_type"` DrawGeometry json.RawMessage `json:"draw_geometry"` Binding []byte `json:"binding"` TimeStart pgtype.Int4 `json:"time_start"` TimeEnd pgtype.Int4 `json:"time_end"` ProjectID pgtype.UUID `json:"project_id"` MinLng float64 `json:"min_lng"` MinLat float64 `json:"min_lat"` MaxLng float64 `json:"max_lng"` MaxLat float64 `json:"max_lat"` IsDeleted bool `json:"is_deleted"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` } func (q *Queries) UpdateGeometry(ctx context.Context, arg UpdateGeometryParams) (UpdateGeometryRow, error) { row := q.db.QueryRow(ctx, updateGeometry, arg.GeoType, arg.DrawGeometry, arg.Binding, arg.TimeStart, arg.TimeEnd, arg.ProjectID, arg.UpdateBbox, arg.MinLng, arg.MinLat, arg.MaxLng, arg.MaxLat, arg.ID, ) var i UpdateGeometryRow err := row.Scan( &i.ID, &i.GeoType, &i.DrawGeometry, &i.Binding, &i.TimeStart, &i.TimeEnd, &i.ProjectID, &i.MinLng, &i.MinLat, &i.MaxLng, &i.MaxLat, &i.IsDeleted, &i.CreatedAt, &i.UpdatedAt, ) return i, err }