feat: add component_codes management functionality

This commit is contained in:
Tran Anh Tuan
2026-05-11 11:00:46 +07:00
parent bf20286f04
commit 9ea72b4eea
14 changed files with 1562 additions and 0 deletions

View File

@@ -0,0 +1,165 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.30.0
// source: component_code.sql
package db
import (
"context"
"time"
"github.com/jackc/pgx/v5/pgtype"
)
const createComponentCode = `-- name: CreateComponentCode :one
INSERT INTO component_codes (component_id,code, code_type, is_primary,metadata, created_at)
VALUES (
$1,
$2,
$3,
$4,
$5,
$6
)
RETURNING id, component_id, code, code_type, is_primary, metadata, created_at
`
type CreateComponentCodeParams struct {
ComponentID int64 `db:"component_id" json:"componentId"`
Code string `db:"code" json:"code"`
CodeType pgtype.Text `db:"code_type" json:"codeType"`
IsPrimary bool `db:"is_primary" json:"isPrimary"`
Metadata []byte `db:"metadata" json:"metadata"`
CreatedAt time.Time `db:"created_at" json:"createdAt"`
}
func (q *Queries) CreateComponentCode(ctx context.Context, arg CreateComponentCodeParams) (ComponentCode, error) {
row := q.db.QueryRow(ctx, createComponentCode,
arg.ComponentID,
arg.Code,
arg.CodeType,
arg.IsPrimary,
arg.Metadata,
arg.CreatedAt,
)
var i ComponentCode
err := row.Scan(
&i.ID,
&i.ComponentID,
&i.Code,
&i.CodeType,
&i.IsPrimary,
&i.Metadata,
&i.CreatedAt,
)
return i, err
}
const deleteComponentCode = `-- name: DeleteComponentCode :execrows
DELETE FROM component_codes
WHERE id = $1
`
func (q *Queries) DeleteComponentCode(ctx context.Context, id int64) (int64, error) {
result, err := q.db.Exec(ctx, deleteComponentCode, id)
if err != nil {
return 0, err
}
return result.RowsAffected(), nil
}
const getComponentCodeByID = `-- name: GetComponentCodeByID :one
SELECT id, component_id, code, code_type, is_primary, metadata, created_at FROM component_codes
WHERE id = $1
`
func (q *Queries) GetComponentCodeByID(ctx context.Context, id int64) (ComponentCode, error) {
row := q.db.QueryRow(ctx, getComponentCodeByID, id)
var i ComponentCode
err := row.Scan(
&i.ID,
&i.ComponentID,
&i.Code,
&i.CodeType,
&i.IsPrimary,
&i.Metadata,
&i.CreatedAt,
)
return i, err
}
const listComponentCodes = `-- name: ListComponentCodes :many
SELECT id, component_id, code, code_type, is_primary, metadata, created_at FROM component_codes
ORDER BY created_at DESC
`
func (q *Queries) ListComponentCodes(ctx context.Context) ([]ComponentCode, error) {
rows, err := q.db.Query(ctx, listComponentCodes)
if err != nil {
return nil, err
}
defer rows.Close()
var items []ComponentCode
for rows.Next() {
var i ComponentCode
if err := rows.Scan(
&i.ID,
&i.ComponentID,
&i.Code,
&i.CodeType,
&i.IsPrimary,
&i.Metadata,
&i.CreatedAt,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const updateComponentCode = `-- name: UpdateComponentCode :one
UPDATE component_codes
SET code = CASE WHEN $1 = '' THEN code ELSE $1 END,
component_id = coalesce($2, component_id),
code_type = coalesce($3, code_type),
is_primary = coalesce($4, is_primary),
metadata = coalesce($5, metadata)
WHERE id = $6
RETURNING id, component_id, code, code_type, is_primary, metadata, created_at
`
type UpdateComponentCodeParams struct {
Code interface{} `db:"code" json:"code"`
ComponentID int64 `db:"component_id" json:"componentId"`
CodeType pgtype.Text `db:"code_type" json:"codeType"`
IsPrimary bool `db:"is_primary" json:"isPrimary"`
Metadata []byte `db:"metadata" json:"metadata"`
ID int64 `db:"id" json:"id"`
}
func (q *Queries) UpdateComponentCode(ctx context.Context, arg UpdateComponentCodeParams) (ComponentCode, error) {
row := q.db.QueryRow(ctx, updateComponentCode,
arg.Code,
arg.ComponentID,
arg.CodeType,
arg.IsPrimary,
arg.Metadata,
arg.ID,
)
var i ComponentCode
err := row.Scan(
&i.ID,
&i.ComponentID,
&i.Code,
&i.CodeType,
&i.IsPrimary,
&i.Metadata,
&i.CreatedAt,
)
return i, err
}

View File

@@ -15,6 +15,7 @@ type Querier interface {
CountUsersByRoleID(ctx context.Context, roleID uuid.UUID) (int64, error)
CreateCabinet(ctx context.Context, arg CreateCabinetParams) (Cabinet, error)
CreateComponent(ctx context.Context, arg CreateComponentParams) (Component, error)
CreateComponentCode(ctx context.Context, arg CreateComponentCodeParams) (ComponentCode, error)
CreateComponentType(ctx context.Context, arg CreateComponentTypeParams) (ComponentType, error)
CreateContainer(ctx context.Context, arg CreateContainerParams) (Container, error)
CreateRole(ctx context.Context, arg CreateRoleParams) (Role, error)
@@ -24,6 +25,7 @@ type Querier interface {
CreateWarehouse(ctx context.Context, arg CreateWarehouseParams) (Warehouse, error)
DeleteCabinet(ctx context.Context, id int64) (int64, error)
DeleteComponent(ctx context.Context, id int64) (int64, error)
DeleteComponentCode(ctx context.Context, id int64) (int64, error)
DeleteComponentType(ctx context.Context, id int64) (int64, error)
DeleteContainer(ctx context.Context, id int64) (int64, error)
DeleteRole(ctx context.Context, id uuid.UUID) (int64, error)
@@ -32,6 +34,7 @@ type Querier interface {
DeleteWarehouse(ctx context.Context, id int64) (int64, error)
GetCabinetByID(ctx context.Context, id int64) (Cabinet, error)
GetComponentByID(ctx context.Context, id int64) (Component, error)
GetComponentCodeByID(ctx context.Context, id int64) (ComponentCode, error)
GetComponentTypeByID(ctx context.Context, id int64) (ComponentType, error)
GetContainerByID(ctx context.Context, id int64) (Container, error)
GetRoleByID(ctx context.Context, id uuid.UUID) (Role, error)
@@ -45,6 +48,7 @@ type Querier interface {
GetUserRolesByUserID(ctx context.Context, userID uuid.UUID) ([]GetUserRolesByUserIDRow, error)
GetWarehouseByID(ctx context.Context, id int64) (Warehouse, error)
ListCabinets(ctx context.Context) ([]Cabinet, error)
ListComponentCodes(ctx context.Context) ([]ComponentCode, error)
ListComponentTypes(ctx context.Context) ([]ComponentType, error)
ListComponents(ctx context.Context) ([]Component, error)
ListContainers(ctx context.Context) ([]Container, error)
@@ -56,6 +60,7 @@ type Querier interface {
RemoveRoleFromUser(ctx context.Context, arg RemoveRoleFromUserParams) error
UpdateCabinet(ctx context.Context, arg UpdateCabinetParams) (Cabinet, error)
UpdateComponent(ctx context.Context, arg UpdateComponentParams) (Component, error)
UpdateComponentCode(ctx context.Context, arg UpdateComponentCodeParams) (ComponentCode, error)
UpdateComponentType(ctx context.Context, arg UpdateComponentTypeParams) (ComponentType, error)
UpdateContainer(ctx context.Context, arg UpdateContainerParams) (Container, error)
UpdateRole(ctx context.Context, arg UpdateRoleParams) (Role, error)