diff --git a/dal/sqlcgen/queries.sql.go b/dal/sqlcgen/queries.sql.go index 1477735..6068530 100644 --- a/dal/sqlcgen/queries.sql.go +++ b/dal/sqlcgen/queries.sql.go @@ -559,31 +559,77 @@ func (q *Queries) CheckTags(ctx context.Context, arg CheckTagsParams) ([]CheckTa return items, nil } -const checkUsers = `-- name: CheckUsers :exec -INSERT INTO users (AmoID, Name, Email, Role, "Group", AmoUserID) -VALUES ($1, $2, $3, $4, $5, $6) -ON CONFLICT (AmoID) DO NOTHING +const checkUsers = `-- name: CheckUsers :many +WITH new_users AS ( + SELECT (u->>'AmocrmID')::INT AS AmoID, + (u->>'Name')::VARCHAR(512) AS Name, + (u->>'Group')::INT AS "Group", + (u->>'Role')::INT AS Role, + (u->>'Email')::VARCHAR(50) AS Email, + (u->>'AmoUserID')::INT AS AmoUserID, + CURRENT_TIMESTAMP AS createdAt + FROM json_array_elements($1::json) AS u +), inserted_users AS ( + INSERT INTO users (AmoID, Name, "Group", Role, Email, AmoUserID,createdAt) + SELECT nu.AmoID, + nu.Name, + nu."Group", + nu.Role, + nu.Email, + nu.AmoUserID, + nu.createdAt + FROM new_users nu + ON CONFLICT (amoID) DO NOTHING + RETURNING id, accountid, amoid, name, email, role, "Group", deleted, createdat, subdomain, amouserid, country +) +SELECT nu.amoid, nu.name, nu."Group", nu.role, nu.email, nu.amouserid, nu.createdat +FROM new_users nu +WHERE NOT EXISTS ( + SELECT id, accountid, amoid, name, email, role, "Group", deleted, createdat, subdomain, amouserid, country + FROM inserted_users ins + WHERE ins.amoID = nu.amoID +) ` -type CheckUsersParams struct { - Amoid int32 `db:"amoid" json:"amoid"` - Name string `db:"name" json:"name"` - Email string `db:"email" json:"email"` - Role int32 `db:"role" json:"role"` - Group int32 `db:"Group" json:"Group"` - Amouserid int32 `db:"amouserid" json:"amouserid"` +type CheckUsersRow struct { + Amoid int32 `db:"amoid" json:"amoid"` + Name string `db:"name" json:"name"` + Group int32 `db:"Group" json:"Group"` + Role int32 `db:"role" json:"role"` + Email string `db:"email" json:"email"` + Amouserid int32 `db:"amouserid" json:"amouserid"` + Createdat interface{} `db:"createdat" json:"createdat"` } -func (q *Queries) CheckUsers(ctx context.Context, arg CheckUsersParams) error { - _, err := q.db.ExecContext(ctx, checkUsers, - arg.Amoid, - arg.Name, - arg.Email, - arg.Role, - arg.Group, - arg.Amouserid, - ) - return err +func (q *Queries) CheckUsers(ctx context.Context, dollar_1 json.RawMessage) ([]CheckUsersRow, error) { + rows, err := q.db.QueryContext(ctx, checkUsers, dollar_1) + if err != nil { + return nil, err + } + defer rows.Close() + var items []CheckUsersRow + for rows.Next() { + var i CheckUsersRow + if err := rows.Scan( + &i.Amoid, + &i.Name, + &i.Group, + &i.Role, + &i.Email, + &i.Amouserid, + &i.Createdat, + ); err != nil { + return nil, err + } + items = append(items, i) + } + if err := rows.Close(); err != nil { + return nil, err + } + if err := rows.Err(); err != nil { + return nil, err + } + return items, nil } const copyQuestion = `-- name: CopyQuestion :one @@ -3071,8 +3117,7 @@ const updateFields = `-- name: UpdateFields :exec UPDATE fields AS f SET name = (update_data ->> 'Name')::varchar(512), code = (update_data ->> 'Code')::varchar(255), - type = (update_data ->> 'Type')::fieldtype, - createdAt = CURRENT_TIMESTAMP + type = (update_data ->> 'Type')::fieldtype FROM json_array_elements($1::json) AS update_data WHERE f.amoID = (update_data ->> 'AmoID')::INT AND f.accountID = (update_data ->> 'AccountID')::INT @@ -3087,8 +3132,7 @@ func (q *Queries) UpdateFields(ctx context.Context, dollar_1 json.RawMessage) er const updatePipelines = `-- name: UpdatePipelines :exec UPDATE pipelines AS p SET name = (update_data ->> 'Name')::varchar(512), - isArchive = CASE WHEN (update_data ->> 'IsArchive') = 'true' THEN TRUE ELSE FALSE END, - createdAt = CURRENT_TIMESTAMP + isArchive = CASE WHEN (update_data ->> 'IsArchive') = 'true' THEN TRUE ELSE FALSE END FROM json_array_elements($1::json) AS update_data WHERE p.amoID = (update_data ->> 'AmoID')::INT AND p.accountID = (update_data ->> 'AccountID')::INT @@ -3137,8 +3181,7 @@ func (q *Queries) UpdatePrivilegeAmount(ctx context.Context, arg UpdatePrivilege const updateSteps = `-- name: UpdateSteps :exec UPDATE steps AS s SET name = (update_data ->> 'Name')::varchar(512), - color = (update_data ->> 'Color')::varchar(50), - createdAt = CURRENT_TIMESTAMP + color = (update_data ->> 'Color')::varchar(50) FROM json_array_elements($1::json) AS update_data WHERE s.amoID = (update_data ->> 'AmoID')::INT AND s.accountID = (update_data ->> 'AccountID')::INT @@ -3153,8 +3196,7 @@ func (q *Queries) UpdateSteps(ctx context.Context, dollar_1 json.RawMessage) err const updateTags = `-- name: UpdateTags :exec UPDATE tags AS t SET name = (update_data ->> 'Name')::varchar(512), - color = (update_data ->> 'Color')::varchar(50), - createdAt = CURRENT_TIMESTAMP + color = (update_data ->> 'Color')::varchar(50) FROM json_array_elements($1::json) AS update_data WHERE t.amoID = (update_data ->> 'AmoID')::INT AND t.accountID = (update_data ->> 'AccountID')::INT @@ -3167,27 +3209,18 @@ func (q *Queries) UpdateTags(ctx context.Context, dollar_1 json.RawMessage) erro } const updateUsers = `-- name: UpdateUsers :exec -UPDATE users SET Name = $2, Email = $3, Role = $4, "Group" = $5, AmoUserID = $6 WHERE AmoID = $1 +UPDATE users AS u +SET Name = (update_data ->> 'Name')::varchar(512), + Email = (update_data ->> 'Email')::varchar(50), + Role = (update_data ->> 'Role')::INT, + "Group" = (update_data ->> 'Group')::INT, + AmoUserID= (update_data ->> 'AmoUserID')::INT +FROM json_array_elements($1::json) AS update_data +WHERE u.AmoID = (update_data ->> 'AmocrmID')::INT ` -type UpdateUsersParams struct { - Amoid int32 `db:"amoid" json:"amoid"` - Name string `db:"name" json:"name"` - Email string `db:"email" json:"email"` - Role int32 `db:"role" json:"role"` - Group int32 `db:"Group" json:"Group"` - Amouserid int32 `db:"amouserid" json:"amouserid"` -} - -func (q *Queries) UpdateUsers(ctx context.Context, arg UpdateUsersParams) error { - _, err := q.db.ExecContext(ctx, updateUsers, - arg.Amoid, - arg.Name, - arg.Email, - arg.Role, - arg.Group, - arg.Amouserid, - ) +func (q *Queries) UpdateUsers(ctx context.Context, dollar_1 json.RawMessage) error { + _, err := q.db.ExecContext(ctx, updateUsers, dollar_1) return err }