amocrm/internal/repository/fields.go

98 lines
2.2 KiB
Go
Raw Normal View History

package repository
import (
"amocrm/internal/models"
2024-04-12 11:52:38 +00:00
"amocrm/internal/models/amo"
"context"
2024-04-12 11:52:38 +00:00
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"time"
)
func (r *Repository) GettingFieldsFromCash(ctx context.Context) (*models.UserListFieldsResp, error) {
//TODO:IMPLEMENT ME
return &models.UserListFieldsResp{}, nil
}
func (r *Repository) UpdateListCustom(ctx context.Context) error {
//TODO:IMPLEMENT ME
return nil
}
2024-04-12 11:52:38 +00:00
type CheckFieldsDeps struct {
AccountID string // id quiz
ID int // id amo
EntityType amo.EntityType
Fields []amo.CustomField
}
func (r *Repository) CheckFields(ctx context.Context, deps CheckFieldsDeps) error {
for _, f := range deps.Fields {
field := models.Field{
ID: deps.AccountID,
Accountid: deps.ID,
Amoid: f.ID,
Name: f.Name,
Type: f.Type,
Code: f.Code,
Entity: deps.EntityType,
}
existingField, err := r.GetFieldByID(ctx, deps.AccountID, f.ID)
if err != nil {
return err
}
if existingField != nil {
field.UpdateAt = time.Now().Unix()
err = r.UpdateField(ctx, &field)
if err != nil {
return err
}
} else {
field.Createdat = time.Now().Unix()
err = r.InsertField(ctx, &field)
if err != nil {
return err
}
}
}
return nil
}
func (r *Repository) GetFieldByID(ctx context.Context, accountID string, amoid int) (*models.Field, error) {
var field models.Field
filter := bson.M{"id": accountID, "amoid": amoid}
err := r.fields.FindOne(ctx, filter).Decode(&field)
if err == mongo.ErrNoDocuments {
return nil, nil
}
if err != nil {
return nil, err
}
return &field, nil
}
func (r *Repository) UpdateField(ctx context.Context, field *models.Field) error {
filter := bson.M{"id": field.ID, "amoid": field.Amoid}
update := bson.M{"$set": bson.M{
"accountid": field.Accountid,
"name": field.Name,
"updateAt": field.UpdateAt,
"type": field.Type,
"entity": field.Entity,
"code": field.Code,
}}
_, err := r.fields.UpdateOne(ctx, filter, update)
return err
}
func (r *Repository) InsertField(ctx context.Context, field *models.Field) error {
_, err := r.fields.InsertOne(ctx, field)
return err
}