Fix data list

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
Sacha Al Himdani
2025-06-10 11:30:25 -07:00
parent 32ae8e0f67
commit 613eccf0f2
3 changed files with 40 additions and 41 deletions

View File

@@ -27,7 +27,7 @@ import (
)
type (
Data struct {
Datum struct {
ID gid.GID `db:"id"`
Name string `db:"name"`
OrganizationID gid.GID `db:"organization_id"`
@@ -37,10 +37,10 @@ type (
UpdatedAt time.Time `db:"updated_at"`
}
DataList []*Data
Data []*Datum
)
func (d *Data) CursorKey(field DatumOrderField) page.CursorKey {
func (d *Datum) CursorKey(field DatumOrderField) page.CursorKey {
switch field {
case DatumOrderFieldCreatedAt:
return page.NewCursorKey(d.ID, d.CreatedAt)
@@ -53,7 +53,7 @@ func (d *Data) CursorKey(field DatumOrderField) page.CursorKey {
panic(fmt.Sprintf("unsupported order by: %s", field))
}
func (d *Data) LoadByID(
func (d *Datum) LoadByID(
ctx context.Context,
conn pg.Conn,
scope Scoper,
@@ -86,17 +86,17 @@ LIMIT 1;
return fmt.Errorf("cannot query data: %w", err)
}
data, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[Data])
datum, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[Datum])
if err != nil {
return fmt.Errorf("cannot collect data: %w", err)
}
*d = data
*d = datum
return nil
}
func (d *Data) LoadByOwnerID(
func (d *Datum) LoadByOwnerID(
ctx context.Context,
conn pg.Conn,
scope Scoper,
@@ -128,7 +128,7 @@ LIMIT 1;
return fmt.Errorf("cannot query data: %w", err)
}
data, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[Data])
data, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[Datum])
if err != nil {
return fmt.Errorf("cannot collect data: %w", err)
}
@@ -138,7 +138,7 @@ LIMIT 1;
return nil
}
func (dl *DataList) CountByOrganizationID(
func (d *Data) CountByOrganizationID(
ctx context.Context,
conn pg.Conn,
scope Scoper,
@@ -170,7 +170,7 @@ WHERE
return count, nil
}
func (dl *DataList) LoadByOrganizationID(
func (d *Data) LoadByOrganizationID(
ctx context.Context,
conn pg.Conn,
scope Scoper,
@@ -205,17 +205,17 @@ WHERE
return fmt.Errorf("cannot query data: %w", err)
}
data, err := pgx.CollectRows(rows, pgx.RowToAddrOfStructByName[Data])
data, err := pgx.CollectRows(rows, pgx.RowToAddrOfStructByName[Datum])
if err != nil {
return fmt.Errorf("cannot collect data: %w", err)
}
*dl = data
*d = data
return nil
}
func (d *Data) Insert(
func (d *Datum) Insert(
ctx context.Context,
conn pg.Conn,
scope Scoper,
@@ -261,7 +261,7 @@ INSERT INTO data (
return nil
}
func (d *Data) Update(
func (d *Datum) Update(
ctx context.Context,
conn pg.Conn,
scope Scoper,
@@ -302,17 +302,17 @@ RETURNING
return fmt.Errorf("cannot update data: %w", err)
}
data, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[Data])
datum, err := pgx.CollectExactlyOneRow(rows, pgx.RowToStructByName[Datum])
if err != nil {
return fmt.Errorf("cannot collect updated data: %w", err)
}
*d = data
*d = datum
return nil
}
func (d *Data) Delete(
func (d *Datum) Delete(
ctx context.Context,
conn pg.Conn,
scope Scoper,
@@ -338,12 +338,12 @@ WHERE
}
type DataVendor struct {
DataID gid.GID `db:"data_id"`
DatumID gid.GID `db:"datum_id"`
VendorID gid.GID `db:"vendor_id"`
CreatedAt time.Time `db:"created_at"`
}
func (d *Data) CreateWithVendors(
func (d *Datum) CreateWithVendors(
ctx context.Context,
conn pg.Conn,
scope Scoper,
@@ -369,14 +369,14 @@ func (d *Data) CreateWithVendors(
return nil
}
func (d *Data) UpdateWithVendors(
func (d *Datum) UpdateWithVendors(
ctx context.Context,
conn pg.Conn,
scope Scoper,
vendorIDs []gid.GID,
now time.Time,
) error {
existing := &Data{}
existing := &Datum{}
if err := existing.LoadByID(ctx, conn, scope, d.ID); err != nil {
return fmt.Errorf("cannot load data: %w", err)
}
@@ -411,8 +411,7 @@ func (d *Data) UpdateWithVendors(
return nil
}
// UpdateWithVendorsTx updates a data entry and its vendor relationships in a single transaction
func (d *Data) UpdateWithVendorsTx(
func (d *Datum) UpdateWithVendorsTx(
ctx context.Context,
db *pg.Client,
scope Scoper,

View File

@@ -48,8 +48,8 @@ type UpdateDatumRequest struct {
func (s DatumService) Get(
ctx context.Context,
datumID gid.GID,
) (*coredata.Data, error) {
datum := &coredata.Data{}
) (*coredata.Datum, error) {
datum := &coredata.Datum{}
err := s.svc.pg.WithConn(
ctx,
@@ -68,8 +68,8 @@ func (s DatumService) Get(
func (s DatumService) GetByOwnerID(
ctx context.Context,
ownerID gid.GID,
) (*coredata.Data, error) {
datum := &coredata.Data{OwnerID: ownerID}
) (*coredata.Datum, error) {
datum := &coredata.Datum{OwnerID: ownerID}
err := s.svc.pg.WithConn(
ctx,
@@ -94,7 +94,7 @@ func (s DatumService) CountForOrganizationID(
err := s.svc.pg.WithConn(
ctx,
func(conn pg.Conn) (err error) {
data := coredata.DataList{}
data := coredata.Data{}
count, err = data.CountByOrganizationID(ctx, conn, s.svc.scope, organizationID)
if err != nil {
return fmt.Errorf("cannot count data: %w", err)
@@ -115,8 +115,8 @@ func (s DatumService) ListForOrganizationID(
ctx context.Context,
organizationID gid.GID,
cursor *page.Cursor[coredata.DatumOrderField],
) (*page.Page[*coredata.Data, coredata.DatumOrderField], error) {
var data coredata.DataList
) (*page.Page[*coredata.Datum, coredata.DatumOrderField], error) {
var data coredata.Data
err := s.svc.pg.WithConn(
ctx,
@@ -141,17 +141,17 @@ func (s DatumService) ListForOrganizationID(
func (s DatumService) Update(
ctx context.Context,
req UpdateDatumRequest,
) (*coredata.Data, error) {
) (*coredata.Datum, error) {
now := time.Now()
existing := &coredata.Data{}
existing := &coredata.Datum{}
if err := s.svc.pg.WithConn(ctx, func(conn pg.Conn) error {
return existing.LoadByID(ctx, conn, s.svc.scope, req.ID)
}); err != nil {
return nil, fmt.Errorf("cannot load data: %w", err)
}
datum := &coredata.Data{
datum := &coredata.Datum{
ID: req.ID,
OrganizationID: existing.OrganizationID,
Name: existing.Name,
@@ -182,11 +182,11 @@ func (s DatumService) Update(
func (s DatumService) Create(
ctx context.Context,
req CreateDatumRequest,
) (*coredata.Data, error) {
) (*coredata.Datum, error) {
now := time.Now()
datumID := gid.New(s.svc.scope.GetTenantID(), coredata.DatumEntityType)
datum := &coredata.Data{
datum := &coredata.Datum{
ID: datumID,
OrganizationID: req.OrganizationID,
Name: req.Name,
@@ -214,7 +214,7 @@ func (s DatumService) Delete(
ctx context.Context,
datumID gid.GID,
) error {
datum := &coredata.Data{ID: datumID}
datum := &coredata.Datum{ID: datumID}
return s.svc.pg.WithConn(
ctx,

View File

@@ -34,13 +34,13 @@ type (
)
func NewDataConnection(
p *page.Page[*coredata.Data, coredata.DatumOrderField],
p *page.Page[*coredata.Datum, coredata.DatumOrderField],
parentType any,
parentID gid.GID,
) *DatumConnection {
edges := make([]*DatumEdge, len(p.Data))
for i, data := range p.Data {
edges[i] = NewDatumEdge(data, p.Cursor.OrderBy.Field)
for i, datum := range p.Data {
edges[i] = NewDatumEdge(datum, p.Cursor.OrderBy.Field)
}
return &DatumConnection{
@@ -52,7 +52,7 @@ func NewDataConnection(
}
}
func NewDatum(d *coredata.Data) *Datum {
func NewDatum(d *coredata.Datum) *Datum {
return &Datum{
ID: d.ID,
Name: d.Name,
@@ -63,7 +63,7 @@ func NewDatum(d *coredata.Data) *Datum {
}
}
func NewDatumEdge(d *coredata.Data, orderField coredata.DatumOrderField) *DatumEdge {
func NewDatumEdge(d *coredata.Datum, orderField coredata.DatumOrderField) *DatumEdge {
return &DatumEdge{
Node: NewDatum(d),
Cursor: d.CursorKey(orderField),