init rule methods in amo repo

This commit is contained in:
Pavel 2024-04-23 15:04:24 +03:00
parent b6b8f67cb6
commit 9cbe8b6b27
5 changed files with 91 additions and 21 deletions

@ -944,5 +944,5 @@ RETURNING *;
-- name: ChangeQuizSettings :one
UPDATE rules
SET PerformerID = $1,PipelineID = $2,StepID = $3,UTMS = $4,FieldsRule = $5
WHERE AccountID = (SELECT AmoID FROM users WHERE users.AccountID = $6) AND QuizID = $7
WHERE AccountID = (SELECT AmoID FROM users WHERE users.AccountID = $6) AND QuizID = $7 AND Deleted = false
RETURNING *;

@ -117,7 +117,7 @@ func (q *Queries) ArchiveQuiz(ctx context.Context, arg ArchiveQuizParams) error
const changeQuizSettings = `-- name: ChangeQuizSettings :one
UPDATE rules
SET PerformerID = $1,PipelineID = $2,StepID = $3,UTMS = $4,FieldsRule = $5
WHERE AccountID = (SELECT AmoID FROM users WHERE users.AccountID = $6) AND QuizID = $7
WHERE AccountID = (SELECT AmoID FROM users WHERE users.AccountID = $6) AND QuizID = $7 AND Deleted = false
RETURNING id, accountid, quizid, performerid, pipelineid, stepid, utms, fieldsrule, deleted, createdat
`

@ -129,19 +129,19 @@ const (
type Rule struct {
/* - айдишник в нашей системе*/
ID int `json:"ID"`
ID int64 `json:"ID"`
/* - связь с аккаунтом в интеграции амо id в амо*/
Accountid int `json:"AccountID"`
Accountid int32 `json:"AccountID"`
/* - айдишник опроса*/
Quizid int `json:"QuizID"`
Quizid int32 `json:"QuizID"`
/* - айдишник ответственного за сделку*/
Performerid int `json:"PerformerID"`
Performerid int32 `json:"PerformerID"`
/* - айдишник воронки*/
Pipelineid int `json:"PipelineID"`
Pipelineid int32 `json:"PipelineID"`
/* - айдишник этапа*/
Stepid int `json:"StepID"`
Stepid int32 `json:"StepID"`
/* - список UTM для этого опроса*/
Utms []int `json:"UTMs"`
Utms []int32 `json:"UTMs"`
/* - правила заполнения полей сущностей в амо*/
Fieldsrule Fieldsrule `json:"FieldsRule"`
/* - флаг мягкого удаления*/

@ -13,10 +13,10 @@ type PaginationReq struct {
}
type RulesReq struct {
PerformerID int // айдишник ответственного за сделку
PipelineID int // айдишник воронки
StepID int // айдишник этапа
Utms []int // список UTM для этого опроса
PerformerID int32 // айдишник ответственного за сделку
PipelineID int32 // айдишник воронки
StepID int32 // айдишник этапа
Utms []int32 // список UTM для этого опроса
Fieldsrule Fieldsrule // правила заполнения полей сущностей в амо
}

@ -584,24 +584,94 @@ func (r *AmoRepository) CheckFields(ctx context.Context, fields []model.Field, t
// методы rules
func (r *AmoRepository) ChangeQuizSettings(ctx context.Context, request *model.RulesReq, accountID string, quizID int) error {
//TODO:IMPLEMENT ME
func (r *AmoRepository) ChangeQuizSettings(ctx context.Context, request *model.RulesReq, accountID string, quizID int) (*model.Rule, error) {
jsonFieldRule, err := json.Marshal(request.Fieldsrule)
if err != nil {
return nil, err
}
row, err := r.queries.ChangeQuizSettings(ctx, sqlcgen.ChangeQuizSettingsParams{
Performerid: request.PerformerID,
Pipelineid: request.PipelineID,
Stepid: request.StepID,
Utms: request.Utms,
Fieldsrule: jsonFieldRule,
Accountid: accountID,
Quizid: int32(quizID),
})
return nil
var fieldsRule model.Fieldsrule
err = json.Unmarshal(row.Fieldsrule, &fieldsRule)
if err != nil {
return nil, err
}
return &model.Rule{
ID: row.ID,
Accountid: row.Accountid,
Quizid: row.Quizid,
Performerid: row.Performerid,
Pipelineid: row.Pipelineid,
Stepid: row.Stepid,
Utms: row.Utms,
Fieldsrule: fieldsRule,
}, nil
}
func (r *AmoRepository) SetQuizSettings(ctx context.Context, request *model.RulesReq, accountID string, quizID int) error {
func (r *AmoRepository) SetQuizSettings(ctx context.Context, request *model.RulesReq, accountID string, quizID int) (*model.Rule, error) {
jsonFieldRule, err := json.Marshal(request.Fieldsrule)
if err != nil {
return nil, err
}
row, err := r.queries.SetQuizSettings(ctx, sqlcgen.SetQuizSettingsParams{
Performerid: request.PerformerID,
Pipelineid: request.PipelineID,
Stepid: request.StepID,
Utms: request.Utms,
Fieldsrule: jsonFieldRule,
Accountid: accountID,
Quizid: int32(quizID),
})
return nil
var fieldsRule model.Fieldsrule
err = json.Unmarshal(row.Fieldsrule, &fieldsRule)
if err != nil {
return nil, err
}
return &model.Rule{
ID: row.ID,
Accountid: row.Accountid,
Quizid: row.Quizid,
Performerid: row.Performerid,
Pipelineid: row.Pipelineid,
Stepid: row.Stepid,
Utms: row.Utms,
Fieldsrule: fieldsRule,
}, nil
}
func (r *AmoRepository) GettingQuizRules(ctx context.Context) (*model.Rule, error) {
//TODO:IMPLEMENT ME
func (r *AmoRepository) GettingQuizRules(ctx context.Context, quizID int) (*model.Rule, error) {
row, err := r.queries.GetQuizRule(ctx, int32(quizID))
if err != nil {
return nil, err
}
return &model.Rule{}, nil
var fieldsRule model.Fieldsrule
err = json.Unmarshal(row.Fieldsrule, &fieldsRule)
if err != nil {
return nil, err
}
return &model.Rule{
ID: row.ID,
Accountid: row.Accountid,
Quizid: row.Quizid,
Performerid: row.Performerid,
Pipelineid: row.Pipelineid,
Stepid: row.Stepid,
Utms: row.Utms,
Fieldsrule: fieldsRule,
}, nil
}
// методы UTMs