@@ -27,7 +27,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type (
|
type (
|
||||||
Data struct {
|
Datum struct {
|
||||||
ID gid.GID `db:"id"`
|
ID gid.GID `db:"id"`
|
||||||
Name string `db:"name"`
|
Name string `db:"name"`
|
||||||
OrganizationID gid.GID `db:"organization_id"`
|
OrganizationID gid.GID `db:"organization_id"`
|
||||||
@@ -37,10 +37,10 @@ type (
|
|||||||
UpdatedAt time.Time `db:"updated_at"`
|
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 {
|
switch field {
|
||||||
case DatumOrderFieldCreatedAt:
|
case DatumOrderFieldCreatedAt:
|
||||||
return page.NewCursorKey(d.ID, d.CreatedAt)
|
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))
|
panic(fmt.Sprintf("unsupported order by: %s", field))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Data) LoadByID(
|
func (d *Datum) LoadByID(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
conn pg.Conn,
|
conn pg.Conn,
|
||||||
scope Scoper,
|
scope Scoper,
|
||||||
@@ -86,17 +86,17 @@ LIMIT 1;
|
|||||||
return fmt.Errorf("cannot query data: %w", err)
|
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 {
|
if err != nil {
|
||||||
return fmt.Errorf("cannot collect data: %w", err)
|
return fmt.Errorf("cannot collect data: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
*d = data
|
*d = datum
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Data) LoadByOwnerID(
|
func (d *Datum) LoadByOwnerID(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
conn pg.Conn,
|
conn pg.Conn,
|
||||||
scope Scoper,
|
scope Scoper,
|
||||||
@@ -128,7 +128,7 @@ LIMIT 1;
|
|||||||
return fmt.Errorf("cannot query data: %w", err)
|
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 {
|
if err != nil {
|
||||||
return fmt.Errorf("cannot collect data: %w", err)
|
return fmt.Errorf("cannot collect data: %w", err)
|
||||||
}
|
}
|
||||||
@@ -138,7 +138,7 @@ LIMIT 1;
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dl *DataList) CountByOrganizationID(
|
func (d *Data) CountByOrganizationID(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
conn pg.Conn,
|
conn pg.Conn,
|
||||||
scope Scoper,
|
scope Scoper,
|
||||||
@@ -170,7 +170,7 @@ WHERE
|
|||||||
return count, nil
|
return count, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (dl *DataList) LoadByOrganizationID(
|
func (d *Data) LoadByOrganizationID(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
conn pg.Conn,
|
conn pg.Conn,
|
||||||
scope Scoper,
|
scope Scoper,
|
||||||
@@ -205,17 +205,17 @@ WHERE
|
|||||||
return fmt.Errorf("cannot query data: %w", err)
|
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 {
|
if err != nil {
|
||||||
return fmt.Errorf("cannot collect data: %w", err)
|
return fmt.Errorf("cannot collect data: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
*dl = data
|
*d = data
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Data) Insert(
|
func (d *Datum) Insert(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
conn pg.Conn,
|
conn pg.Conn,
|
||||||
scope Scoper,
|
scope Scoper,
|
||||||
@@ -261,7 +261,7 @@ INSERT INTO data (
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Data) Update(
|
func (d *Datum) Update(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
conn pg.Conn,
|
conn pg.Conn,
|
||||||
scope Scoper,
|
scope Scoper,
|
||||||
@@ -302,17 +302,17 @@ RETURNING
|
|||||||
return fmt.Errorf("cannot update data: %w", err)
|
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 {
|
if err != nil {
|
||||||
return fmt.Errorf("cannot collect updated data: %w", err)
|
return fmt.Errorf("cannot collect updated data: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
*d = data
|
*d = datum
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Data) Delete(
|
func (d *Datum) Delete(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
conn pg.Conn,
|
conn pg.Conn,
|
||||||
scope Scoper,
|
scope Scoper,
|
||||||
@@ -338,12 +338,12 @@ WHERE
|
|||||||
}
|
}
|
||||||
|
|
||||||
type DataVendor struct {
|
type DataVendor struct {
|
||||||
DataID gid.GID `db:"data_id"`
|
DatumID gid.GID `db:"datum_id"`
|
||||||
VendorID gid.GID `db:"vendor_id"`
|
VendorID gid.GID `db:"vendor_id"`
|
||||||
CreatedAt time.Time `db:"created_at"`
|
CreatedAt time.Time `db:"created_at"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Data) CreateWithVendors(
|
func (d *Datum) CreateWithVendors(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
conn pg.Conn,
|
conn pg.Conn,
|
||||||
scope Scoper,
|
scope Scoper,
|
||||||
@@ -369,14 +369,14 @@ func (d *Data) CreateWithVendors(
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Data) UpdateWithVendors(
|
func (d *Datum) UpdateWithVendors(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
conn pg.Conn,
|
conn pg.Conn,
|
||||||
scope Scoper,
|
scope Scoper,
|
||||||
vendorIDs []gid.GID,
|
vendorIDs []gid.GID,
|
||||||
now time.Time,
|
now time.Time,
|
||||||
) error {
|
) error {
|
||||||
existing := &Data{}
|
existing := &Datum{}
|
||||||
if err := existing.LoadByID(ctx, conn, scope, d.ID); err != nil {
|
if err := existing.LoadByID(ctx, conn, scope, d.ID); err != nil {
|
||||||
return fmt.Errorf("cannot load data: %w", err)
|
return fmt.Errorf("cannot load data: %w", err)
|
||||||
}
|
}
|
||||||
@@ -411,8 +411,7 @@ func (d *Data) UpdateWithVendors(
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateWithVendorsTx updates a data entry and its vendor relationships in a single transaction
|
func (d *Datum) UpdateWithVendorsTx(
|
||||||
func (d *Data) UpdateWithVendorsTx(
|
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
db *pg.Client,
|
db *pg.Client,
|
||||||
scope Scoper,
|
scope Scoper,
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ type UpdateDatumRequest struct {
|
|||||||
func (s DatumService) Get(
|
func (s DatumService) Get(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
datumID gid.GID,
|
datumID gid.GID,
|
||||||
) (*coredata.Data, error) {
|
) (*coredata.Datum, error) {
|
||||||
datum := &coredata.Data{}
|
datum := &coredata.Datum{}
|
||||||
|
|
||||||
err := s.svc.pg.WithConn(
|
err := s.svc.pg.WithConn(
|
||||||
ctx,
|
ctx,
|
||||||
@@ -68,8 +68,8 @@ func (s DatumService) Get(
|
|||||||
func (s DatumService) GetByOwnerID(
|
func (s DatumService) GetByOwnerID(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
ownerID gid.GID,
|
ownerID gid.GID,
|
||||||
) (*coredata.Data, error) {
|
) (*coredata.Datum, error) {
|
||||||
datum := &coredata.Data{OwnerID: ownerID}
|
datum := &coredata.Datum{OwnerID: ownerID}
|
||||||
|
|
||||||
err := s.svc.pg.WithConn(
|
err := s.svc.pg.WithConn(
|
||||||
ctx,
|
ctx,
|
||||||
@@ -94,7 +94,7 @@ func (s DatumService) CountForOrganizationID(
|
|||||||
err := s.svc.pg.WithConn(
|
err := s.svc.pg.WithConn(
|
||||||
ctx,
|
ctx,
|
||||||
func(conn pg.Conn) (err error) {
|
func(conn pg.Conn) (err error) {
|
||||||
data := coredata.DataList{}
|
data := coredata.Data{}
|
||||||
count, err = data.CountByOrganizationID(ctx, conn, s.svc.scope, organizationID)
|
count, err = data.CountByOrganizationID(ctx, conn, s.svc.scope, organizationID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("cannot count data: %w", err)
|
return fmt.Errorf("cannot count data: %w", err)
|
||||||
@@ -115,8 +115,8 @@ func (s DatumService) ListForOrganizationID(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
organizationID gid.GID,
|
organizationID gid.GID,
|
||||||
cursor *page.Cursor[coredata.DatumOrderField],
|
cursor *page.Cursor[coredata.DatumOrderField],
|
||||||
) (*page.Page[*coredata.Data, coredata.DatumOrderField], error) {
|
) (*page.Page[*coredata.Datum, coredata.DatumOrderField], error) {
|
||||||
var data coredata.DataList
|
var data coredata.Data
|
||||||
|
|
||||||
err := s.svc.pg.WithConn(
|
err := s.svc.pg.WithConn(
|
||||||
ctx,
|
ctx,
|
||||||
@@ -141,17 +141,17 @@ func (s DatumService) ListForOrganizationID(
|
|||||||
func (s DatumService) Update(
|
func (s DatumService) Update(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
req UpdateDatumRequest,
|
req UpdateDatumRequest,
|
||||||
) (*coredata.Data, error) {
|
) (*coredata.Datum, error) {
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
|
|
||||||
existing := &coredata.Data{}
|
existing := &coredata.Datum{}
|
||||||
if err := s.svc.pg.WithConn(ctx, func(conn pg.Conn) error {
|
if err := s.svc.pg.WithConn(ctx, func(conn pg.Conn) error {
|
||||||
return existing.LoadByID(ctx, conn, s.svc.scope, req.ID)
|
return existing.LoadByID(ctx, conn, s.svc.scope, req.ID)
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
return nil, fmt.Errorf("cannot load data: %w", err)
|
return nil, fmt.Errorf("cannot load data: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
datum := &coredata.Data{
|
datum := &coredata.Datum{
|
||||||
ID: req.ID,
|
ID: req.ID,
|
||||||
OrganizationID: existing.OrganizationID,
|
OrganizationID: existing.OrganizationID,
|
||||||
Name: existing.Name,
|
Name: existing.Name,
|
||||||
@@ -182,11 +182,11 @@ func (s DatumService) Update(
|
|||||||
func (s DatumService) Create(
|
func (s DatumService) Create(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
req CreateDatumRequest,
|
req CreateDatumRequest,
|
||||||
) (*coredata.Data, error) {
|
) (*coredata.Datum, error) {
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
datumID := gid.New(s.svc.scope.GetTenantID(), coredata.DatumEntityType)
|
datumID := gid.New(s.svc.scope.GetTenantID(), coredata.DatumEntityType)
|
||||||
|
|
||||||
datum := &coredata.Data{
|
datum := &coredata.Datum{
|
||||||
ID: datumID,
|
ID: datumID,
|
||||||
OrganizationID: req.OrganizationID,
|
OrganizationID: req.OrganizationID,
|
||||||
Name: req.Name,
|
Name: req.Name,
|
||||||
@@ -214,7 +214,7 @@ func (s DatumService) Delete(
|
|||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
datumID gid.GID,
|
datumID gid.GID,
|
||||||
) error {
|
) error {
|
||||||
datum := &coredata.Data{ID: datumID}
|
datum := &coredata.Datum{ID: datumID}
|
||||||
|
|
||||||
return s.svc.pg.WithConn(
|
return s.svc.pg.WithConn(
|
||||||
ctx,
|
ctx,
|
||||||
|
|||||||
@@ -34,13 +34,13 @@ type (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func NewDataConnection(
|
func NewDataConnection(
|
||||||
p *page.Page[*coredata.Data, coredata.DatumOrderField],
|
p *page.Page[*coredata.Datum, coredata.DatumOrderField],
|
||||||
parentType any,
|
parentType any,
|
||||||
parentID gid.GID,
|
parentID gid.GID,
|
||||||
) *DatumConnection {
|
) *DatumConnection {
|
||||||
edges := make([]*DatumEdge, len(p.Data))
|
edges := make([]*DatumEdge, len(p.Data))
|
||||||
for i, data := range p.Data {
|
for i, datum := range p.Data {
|
||||||
edges[i] = NewDatumEdge(data, p.Cursor.OrderBy.Field)
|
edges[i] = NewDatumEdge(datum, p.Cursor.OrderBy.Field)
|
||||||
}
|
}
|
||||||
|
|
||||||
return &DatumConnection{
|
return &DatumConnection{
|
||||||
@@ -52,7 +52,7 @@ func NewDataConnection(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDatum(d *coredata.Data) *Datum {
|
func NewDatum(d *coredata.Datum) *Datum {
|
||||||
return &Datum{
|
return &Datum{
|
||||||
ID: d.ID,
|
ID: d.ID,
|
||||||
Name: d.Name,
|
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{
|
return &DatumEdge{
|
||||||
Node: NewDatum(d),
|
Node: NewDatum(d),
|
||||||
Cursor: d.CursorKey(orderField),
|
Cursor: d.CursorKey(orderField),
|
||||||
|
|||||||
Reference in New Issue
Block a user