Skip to content

Commit

Permalink
Merge pull request #79
Browse files Browse the repository at this point in the history
develop
  • Loading branch information
apaladiychuk authored Apr 30, 2024
2 parents de3f6ae + 4900e98 commit a28f165
Show file tree
Hide file tree
Showing 4 changed files with 73 additions and 61 deletions.
62 changes: 35 additions & 27 deletions backend/core/bll/connector.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"cognix.ch/api/v2/core/utils"
"context"
"github.com/go-pg/pg/v10"
"github.com/shopspring/decimal"
"time"
)

Expand All @@ -31,14 +32,8 @@ func NewConnectorBL(connectorRepo repository.ConnectorRepository, credentialRepo
}

func (c *connectorBL) Create(ctx context.Context, user *model.User, param *parameters.CreateConnectorParam) (*model.Connector, error) {
cred, err := c.credentialRepo.GetByID(ctx, param.CredentialID.IntPart(), user.TenantID, user.ID)
if err != nil {
return nil, err
}
if cred.Source != model.SourceType(param.Source) {
return nil, utils.InvalidInput.New("wrong credential source")
}
connector := model.Connector{

conn := model.Connector{
CredentialID: param.CredentialID,
Name: param.Name,
Source: model.SourceType(param.Source),
Expand All @@ -51,41 +46,54 @@ func (c *connectorBL) Create(ctx context.Context, user *model.User, param *param
Disabled: param.Disabled,
CreatedDate: time.Now().UTC(),
}
if err = c.connectorRepo.Create(ctx, &connector); err != nil {
if param.CredentialID.Valid {
cred, err := c.credentialRepo.GetByID(ctx, param.CredentialID.Decimal.IntPart(), user.TenantID, user.ID)
if err != nil {
return nil, err
}
if cred.Source != model.SourceType(param.Source) {
return nil, utils.InvalidInput.New("wrong credential source")
}
conn.CredentialID = decimal.NewNullDecimal(cred.ID)
}

if err := c.connectorRepo.Create(ctx, &conn); err != nil {
return nil, err
}
return &connector, nil
return &conn, nil
}

func (c *connectorBL) Update(ctx context.Context, id int64, user *model.User, param *parameters.UpdateConnectorParam) (*model.Connector, error) {
connector, err := c.connectorRepo.GetByID(ctx, user.TenantID, user.ID, id)
if err != nil {
return nil, err
}
cred, err := c.credentialRepo.GetByID(ctx, param.CredentialID.IntPart(), user.TenantID, user.ID)
conn, err := c.connectorRepo.GetByID(ctx, user.TenantID, user.ID, id)
if err != nil {
return nil, err
}
if cred.Source != connector.Source {
return nil, utils.InvalidInput.New("wrong credential source")
if param.CredentialID.Valid {
cred, err := c.credentialRepo.GetByID(ctx, param.CredentialID.Decimal.IntPart(), user.TenantID, user.ID)
if err != nil {
return nil, err
}
if cred.Source != conn.Source {
return nil, utils.InvalidInput.New("wrong credential source")
}
}
connector.ConnectorSpecificConfig = param.ConnectorSpecificConfig
connector.CredentialID = param.CredentialID
connector.Name = param.Name
connector.InputType = param.InputType
connector.RefreshFreq = param.RefreshFreq
connector.Shared = param.Shared
connector.Disabled = param.Disabled
connector.UpdatedDate = pg.NullTime{time.Now().UTC()}
conn.ConnectorSpecificConfig = param.ConnectorSpecificConfig
conn.CredentialID = param.CredentialID
conn.Name = param.Name
conn.InputType = param.InputType
conn.RefreshFreq = param.RefreshFreq
conn.Shared = param.Shared
conn.Disabled = param.Disabled
conn.UpdatedDate = pg.NullTime{time.Now().UTC()}

// sql.NullTime{
//Time: time.Now().UTC(),
//Valid: true,
// } // null.TimeFrom(time.Now().UTC())
if err = c.connectorRepo.Update(ctx, connector); err != nil {
if err = c.connectorRepo.Update(ctx, conn); err != nil {
return nil, err
}
return connector, nil
return conn, nil
}

func (c *connectorBL) GetAll(ctx context.Context, user *model.User) ([]*model.Connector, error) {
Expand Down
36 changes: 18 additions & 18 deletions backend/core/model/connector.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,22 @@ import (
)

type Connector struct {
tableName struct{} `pg:"connectors,omitempty"`
ID decimal.Decimal `json:"id,omitempty"`
CredentialID decimal.Decimal `json:"credential_id,omitempty"`
Name string `json:"name,omitempty"`
Source SourceType `json:"source,omitempty"`
InputType string `json:"input_type,omitempty"`
ConnectorSpecificConfig JSONMap `json:"connector_specific_config,omitempty"`
RefreshFreq int `json:"refresh_freq,omitempty"`
UserID uuid.UUID `json:"user_id,omitempty"`
TenantID uuid.UUID `json:"tenant_id,omitempty"`
Shared bool `json:"shared,omitempty" pg:",use_zero"`
Disabled bool `json:"disabled,omitempty" pg:",use_zero"`
LastSuccessfulIndexTime pg.NullTime `json:"last_successful_index_time,omitempty" pg:",use_zero"`
LastAttemptStatus string `json:"last_attempt_status,omitempty"`
TotalDocsIndexed int `json:"total_docs_indexed" pg:",use_zero"`
CreatedDate time.Time `json:"created_date,omitempty"`
UpdatedDate pg.NullTime `json:"updated_date,omitempty" pg:",use_zero"`
DeletedDate pg.NullTime `json:"deleted_date,omitempty" pg:",use_zero"`
tableName struct{} `pg:"connectors,omitempty"`
ID decimal.Decimal `json:"id,omitempty"`
CredentialID decimal.NullDecimal `json:"credential_id,omitempty"`
Name string `json:"name,omitempty"`
Source SourceType `json:"source,omitempty"`
InputType string `json:"input_type,omitempty"`
ConnectorSpecificConfig JSONMap `json:"connector_specific_config,omitempty"`
RefreshFreq int `json:"refresh_freq,omitempty"`
UserID uuid.UUID `json:"user_id,omitempty"`
TenantID uuid.UUID `json:"tenant_id,omitempty"`
Shared bool `json:"shared,omitempty" pg:",use_zero"`
Disabled bool `json:"disabled,omitempty" pg:",use_zero"`
LastSuccessfulIndexTime pg.NullTime `json:"last_successful_index_time,omitempty" pg:",use_zero"`
LastAttemptStatus string `json:"last_attempt_status,omitempty"`
TotalDocsIndexed int `json:"total_docs_indexed" pg:",use_zero"`
CreatedDate time.Time `json:"created_date,omitempty"`
UpdatedDate pg.NullTime `json:"updated_date,omitempty" pg:",use_zero"`
DeletedDate pg.NullTime `json:"deleted_date,omitempty" pg:",use_zero"`
}
30 changes: 15 additions & 15 deletions backend/core/parameters/model.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,14 +62,14 @@ type UpdateCredentialParam struct {
}

type CreateConnectorParam struct {
CredentialID decimal.Decimal `json:"credential_id,omitempty"`
Name string `json:"name,omitempty"`
Source string `json:"source,omitempty"`
InputType string `json:"input_type,omitempty"`
ConnectorSpecificConfig model.JSONMap `json:"connector_specific_config,omitempty"`
RefreshFreq int `json:"refresh_freq,omitempty"`
Shared bool `json:"shared,omitempty"`
Disabled bool `json:"disabled,omitempty"`
CredentialID decimal.NullDecimal `json:"credential_id,omitempty"`
Name string `json:"name,omitempty"`
Source string `json:"source,omitempty"`
InputType string `json:"input_type,omitempty"`
ConnectorSpecificConfig model.JSONMap `json:"connector_specific_config,omitempty"`
RefreshFreq int `json:"refresh_freq,omitempty"`
Shared bool `json:"shared,omitempty"`
Disabled bool `json:"disabled,omitempty"`
}

func (v CreateConnectorParam) Validate() error {
Expand All @@ -84,13 +84,13 @@ func (v CreateConnectorParam) Validate() error {
}

type UpdateConnectorParam struct {
CredentialID decimal.Decimal `json:"credential_id,omitempty"`
Name string `json:"name,omitempty"`
InputType string `json:"input_type,omitempty"`
ConnectorSpecificConfig model.JSONMap `json:"connector_specific_config,omitempty"`
RefreshFreq int `json:"refresh_freq,omitempty"`
Shared bool `json:"shared,omitempty"`
Disabled bool `json:"disabled,omitempty"`
CredentialID decimal.NullDecimal `json:"credential_id,omitempty"`
Name string `json:"name,omitempty"`
InputType string `json:"input_type,omitempty"`
ConnectorSpecificConfig model.JSONMap `json:"connector_specific_config,omitempty"`
RefreshFreq int `json:"refresh_freq,omitempty"`
Shared bool `json:"shared,omitempty"`
Disabled bool `json:"disabled,omitempty"`
}

type AddUserParam struct {
Expand Down
6 changes: 5 additions & 1 deletion backend/core/repository/connector.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,11 @@ func (r *connectorRepository) GetByID(ctx context.Context, tenantID, userID uuid
}

func (r *connectorRepository) Create(ctx context.Context, connector *model.Connector) error {
if _, err := r.db.WithContext(ctx).Model(connector).Insert(); err != nil {
stm := r.db.WithContext(ctx).Model(connector)
if !connector.CredentialID.Valid {
stm = stm.ExcludeColumn("credential_id")
}
if _, err := stm.Insert(); err != nil {
return utils.Internal.Wrap(err, "can not create connector")
}
return nil
Expand Down

0 comments on commit a28f165

Please sign in to comment.