update yclients table,queries,repository methods,models

This commit is contained in:
pasha1coil 2025-10-06 11:34:19 +03:00
parent 0f50c86b1a
commit 86d8476caf
6 changed files with 396 additions and 227 deletions

@ -1495,45 +1495,59 @@ WHERE quiz_id = $1 AND privilege_id = $2;
UPDATE quiz_privilege_usage SET used_count = 0, updated_at = CURRENT_TIMESTAMP
WHERE quiz_id = $1 AND privilege_id = $2;
-- Yclients
-- name: GetCurrentYclientsCompany :one
SELECT * FROM YclientsAccounts WHERE AccountID = $1 AND Deleted = false;
-- name: GetUsersYclientsWithPagination :many
WITH user_data AS (
SELECT YclientsID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
SELECT SalonID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
)
SELECT u.*, COUNT(*) OVER() as total_count
FROM YclientsAccountUsers u
JOIN user_data a ON u.YclientsID = a.YclientsID
JOIN user_data a ON u.SalonID = a.SalonID
WHERE u.Deleted = false
ORDER BY u.ID OFFSET ($2 - 1) * $3 LIMIT $3;
-- name: GetCompanyYclientsWithPagination :many
WITH user_data AS (
SELECT YclientsID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
SELECT SalonID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
)
SELECT u.*, COUNT(*) OVER() as total_count
FROM YclientsCompany u
JOIN user_data a ON u.YclientsID = a.YclientsID
JOIN user_data a ON u.SalonID = a.SalonID
WHERE u.Deleted = false
ORDER BY u.ID OFFSET ($2 - 1) * $3 LIMIT $3;
-- name: GetServicesYclientsWithPagination :many
WITH user_data AS (
SELECT YclientsID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
SELECT SalonID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
)
SELECT u.*, COUNT(*) OVER() as total_count
FROM YclientsServices u
JOIN user_data a ON u.YclientsID = a.YclientsID
JOIN user_data a ON u.SalonID = a.SalonID
WHERE u.Deleted = false
ORDER BY u.ID OFFSET ($2 - 1) * $3 LIMIT $3;
-- name: GetTimeslotsYclientsWithPagination :many
WITH user_data AS (
SELECT YclientsID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
SELECT SalonID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
)
SELECT u.*, COUNT(*) OVER() as total_count
FROM YclientsTimeSlots u
JOIN user_data a ON u.YclientsID = a.YclientsID
JOIN user_data a ON u.SalonID = a.SalonID
WHERE u.Deleted = false
ORDER BY u.ID OFFSET ($2 - 1) * $3 LIMIT $3;
-- name: InsertYclientsTokens :one
insert into YclientsTokens (AccountID,SalonID) values($1,$2) RETURNING *;
-- name: UpdateYclientsTokensAccessToken :one
update YclientsTokens set AccessToken = $1, Active = true where AccountID = $2 and SalonID = $3 and Expiration = false RETURNING *;
-- name: UpdateYclientsTokensExpiration :one
update YclientsTokens set Expiration=$1, Active = $2 where AccountID = $3 RETURNING *;
-- name: GetYclientsUserToken :one
select * from YclientsTokens where AccountID = $1 and Expiration=false and Active = true;

@ -1,18 +1,27 @@
CREATE TABLE IF NOT EXISTS YclientsTokens (
AccountID VARCHAR(30) PRIMARY KEY, -- связь с users AccountID неявная посредством join
SalonID INT NOT NULL, -- ID компании
AccessToken TEXT NOT NULL DEFAULT '',
Active BOOLEAN NOT NULL DEFAULT FALSE,
Expiration BOOLEAN NOT NULL DEFAULT FALSE, -- флаг истек ли токен
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
create UNIQUE INDEX idx_unique_tokens_yclients ON YclientsTokens (SalonID, AccountID) WHERE Active = false and Expiration = false;
CREATE TABLE IF NOT EXISTS YclientsAccounts (
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
AccountID VARCHAR(30) NOT NULL DEFAULT '', -- ID аккаунта у нас
YclientsID INT NOT NULL, -- ID "аккаунта который ГЛАВНЫЙ"
SalonID INT NOT NULL, -- ID компании
Name VARCHAR(512) NOT NULL DEFAULT '',
Country VARCHAR(50) NOT NULL DEFAULT '',
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
Subdomain VARCHAR(50) NOT NULL DEFAULT '' -- поддомен - пример https://penadigitaltech.amocrm.ru
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS YclientsAccountUsers (
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
YclientsID INT NOT NULL, -- ID "аккаунта который ГЛАВНЫЙ"
YclientsCompanyID INT NOT NULL, -- ID компании
SalonID INT NOT NULL, -- ID компании
YclientsUserID INT NOT NULL, -- ID пользователя в Yclients
Name VARCHAR(512) NOT NULL DEFAULT '',
Role INT NOT NULL DEFAULT 0, -- position
@ -22,8 +31,7 @@ CREATE TABLE IF NOT EXISTS YclientsAccountUsers (
CREATE TABLE IF NOT EXISTS YclientsCompany (
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
YclientsID INT NOT NULL, -- ID "аккаунта который ГЛАВНЫЙ"
YclientsCompanyID INT NOT NULL,
SalonID INT NOT NULL, -- ID компании
Title text NOT NULL,
ShortDecription text NOT NULL,
Active INT NOT NULL,
@ -35,8 +43,7 @@ CREATE TABLE IF NOT EXISTS YclientsCompany (
CREATE TABLE IF NOT EXISTS YclientsServices (
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
YclientsID INT NOT NULL, -- ID "аккаунта который ГЛАВНЫЙ"
YclientsCompanyID INT NOT NULL, -- ID компании
SalonID INT NOT NULL, -- ID компании
ServiceID INT NOT NULL,
Title text NOT NULL,
CategoryID INT NOT NULL,
@ -52,8 +59,7 @@ CREATE TABLE IF NOT EXISTS YclientsServices (
CREATE TABLE IF NOT EXISTS YclientsTimeSlots (
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
YclientsID INT NOT NULL, -- ID "аккаунта который ГЛАВНЫЙ"
YclientsCompanyID INT NOT NULL, -- ID компании
SalonID INT NOT NULL, -- ID компании
IsEnabled BOOLEAN NOT NULL DEFAULT false,
WeekdaysSettings JSONB NOT NULL DEFAULT '[]',
DatesSettings JSONB NOT NULL DEFAULT '{}',

@ -402,18 +402,16 @@ type Usersamo struct {
type Yclientsaccount struct {
ID int64 `db:"id" json:"id"`
Accountid string `db:"accountid" json:"accountid"`
Yclientsid int32 `db:"yclientsid" json:"yclientsid"`
Salonid int32 `db:"salonid" json:"salonid"`
Name string `db:"name" json:"name"`
Country string `db:"country" json:"country"`
Deleted bool `db:"deleted" json:"deleted"`
Createdat time.Time `db:"createdat" json:"createdat"`
Subdomain string `db:"subdomain" json:"subdomain"`
}
type Yclientsaccountuser struct {
ID int64 `db:"id" json:"id"`
Yclientsid int32 `db:"yclientsid" json:"yclientsid"`
Yclientscompanyid int32 `db:"yclientscompanyid" json:"yclientscompanyid"`
Salonid int32 `db:"salonid" json:"salonid"`
Yclientsuserid int32 `db:"yclientsuserid" json:"yclientsuserid"`
Name string `db:"name" json:"name"`
Role int32 `db:"role" json:"role"`
@ -423,8 +421,7 @@ type Yclientsaccountuser struct {
type Yclientscompany struct {
ID int64 `db:"id" json:"id"`
Yclientsid int32 `db:"yclientsid" json:"yclientsid"`
Yclientscompanyid int32 `db:"yclientscompanyid" json:"yclientscompanyid"`
Salonid int32 `db:"salonid" json:"salonid"`
Title string `db:"title" json:"title"`
Shortdecription string `db:"shortdecription" json:"shortdecription"`
Active int32 `db:"active" json:"active"`
@ -436,8 +433,7 @@ type Yclientscompany struct {
type Yclientsservice struct {
ID int64 `db:"id" json:"id"`
Yclientsid int32 `db:"yclientsid" json:"yclientsid"`
Yclientscompanyid int32 `db:"yclientscompanyid" json:"yclientscompanyid"`
Salonid int32 `db:"salonid" json:"salonid"`
Serviceid int32 `db:"serviceid" json:"serviceid"`
Title string `db:"title" json:"title"`
Categoryid int32 `db:"categoryid" json:"categoryid"`
@ -453,11 +449,19 @@ type Yclientsservice struct {
type Yclientstimeslot struct {
ID int64 `db:"id" json:"id"`
Yclientsid int32 `db:"yclientsid" json:"yclientsid"`
Yclientscompanyid int32 `db:"yclientscompanyid" json:"yclientscompanyid"`
Salonid int32 `db:"salonid" json:"salonid"`
Isenabled bool `db:"isenabled" json:"isenabled"`
Weekdayssettings json.RawMessage `db:"weekdayssettings" json:"weekdayssettings"`
Datessettings json.RawMessage `db:"datessettings" json:"datessettings"`
Deleted bool `db:"deleted" json:"deleted"`
Createdat time.Time `db:"createdat" json:"createdat"`
}
type Yclientstoken struct {
Accountid string `db:"accountid" json:"accountid"`
Salonid int32 `db:"salonid" json:"salonid"`
Accesstoken string `db:"accesstoken" json:"accesstoken"`
Active bool `db:"active" json:"active"`
Expiration bool `db:"expiration" json:"expiration"`
Createdat time.Time `db:"createdat" json:"createdat"`
}

@ -2385,11 +2385,11 @@ func (q *Queries) GetBitrixTokenById(ctx context.Context, accountid string) (Bit
const getCompanyYclientsWithPagination = `-- name: GetCompanyYclientsWithPagination :many
WITH user_data AS (
SELECT YclientsID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
SELECT SalonID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
)
SELECT u.id, u.yclientsid, u.yclientscompanyid, u.title, u.shortdecription, u.active, u.country, u.grouppriority, u.deleted, u.createdat, COUNT(*) OVER() as total_count
SELECT u.id, u.salonid, u.title, u.shortdecription, u.active, u.country, u.grouppriority, u.deleted, u.createdat, COUNT(*) OVER() as total_count
FROM YclientsCompany u
JOIN user_data a ON u.YclientsID = a.YclientsID
JOIN user_data a ON u.SalonID = a.SalonID
WHERE u.Deleted = false
ORDER BY u.ID OFFSET ($2 - 1) * $3 LIMIT $3
`
@ -2402,8 +2402,7 @@ type GetCompanyYclientsWithPaginationParams struct {
type GetCompanyYclientsWithPaginationRow struct {
ID int64 `db:"id" json:"id"`
Yclientsid int32 `db:"yclientsid" json:"yclientsid"`
Yclientscompanyid int32 `db:"yclientscompanyid" json:"yclientscompanyid"`
Salonid int32 `db:"salonid" json:"salonid"`
Title string `db:"title" json:"title"`
Shortdecription string `db:"shortdecription" json:"shortdecription"`
Active int32 `db:"active" json:"active"`
@ -2425,8 +2424,7 @@ func (q *Queries) GetCompanyYclientsWithPagination(ctx context.Context, arg GetC
var i GetCompanyYclientsWithPaginationRow
if err := rows.Scan(
&i.ID,
&i.Yclientsid,
&i.Yclientscompanyid,
&i.Salonid,
&i.Title,
&i.Shortdecription,
&i.Active,
@ -2489,21 +2487,22 @@ func (q *Queries) GetCurrentCompany(ctx context.Context, accountid string) (Acco
}
const getCurrentYclientsCompany = `-- name: GetCurrentYclientsCompany :one
SELECT id, accountid, yclientsid, name, country, deleted, createdat, subdomain FROM YclientsAccounts WHERE AccountID = $1 AND Deleted = false
SELECT id, accountid, salonid, name, country, deleted, createdat FROM YclientsAccounts WHERE AccountID = $1 AND Deleted = false
`
// Yclients
func (q *Queries) GetCurrentYclientsCompany(ctx context.Context, accountid string) (Yclientsaccount, error) {
row := q.db.QueryRowContext(ctx, getCurrentYclientsCompany, accountid)
var i Yclientsaccount
err := row.Scan(
&i.ID,
&i.Accountid,
&i.Yclientsid,
&i.Salonid,
&i.Name,
&i.Country,
&i.Deleted,
&i.Createdat,
&i.Subdomain,
)
return i, err
}
@ -3654,11 +3653,11 @@ func (q *Queries) GetResultAnswers(ctx context.Context, id int64) ([]GetResultAn
const getServicesYclientsWithPagination = `-- name: GetServicesYclientsWithPagination :many
WITH user_data AS (
SELECT YclientsID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
SELECT SalonID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
)
SELECT u.id, u.yclientsid, u.yclientscompanyid, u.serviceid, u.title, u.categoryid, u.pricemin, u.pricemax, u.discount, u.comment, u.active, u.apiid, u.deleted, u.createdat, COUNT(*) OVER() as total_count
SELECT u.id, u.salonid, u.serviceid, u.title, u.categoryid, u.pricemin, u.pricemax, u.discount, u.comment, u.active, u.apiid, u.deleted, u.createdat, COUNT(*) OVER() as total_count
FROM YclientsServices u
JOIN user_data a ON u.YclientsID = a.YclientsID
JOIN user_data a ON u.SalonID = a.SalonID
WHERE u.Deleted = false
ORDER BY u.ID OFFSET ($2 - 1) * $3 LIMIT $3
`
@ -3671,8 +3670,7 @@ type GetServicesYclientsWithPaginationParams struct {
type GetServicesYclientsWithPaginationRow struct {
ID int64 `db:"id" json:"id"`
Yclientsid int32 `db:"yclientsid" json:"yclientsid"`
Yclientscompanyid int32 `db:"yclientscompanyid" json:"yclientscompanyid"`
Salonid int32 `db:"salonid" json:"salonid"`
Serviceid int32 `db:"serviceid" json:"serviceid"`
Title string `db:"title" json:"title"`
Categoryid int32 `db:"categoryid" json:"categoryid"`
@ -3698,8 +3696,7 @@ func (q *Queries) GetServicesYclientsWithPagination(ctx context.Context, arg Get
var i GetServicesYclientsWithPaginationRow
if err := rows.Scan(
&i.ID,
&i.Yclientsid,
&i.Yclientscompanyid,
&i.Salonid,
&i.Serviceid,
&i.Title,
&i.Categoryid,
@ -3863,11 +3860,11 @@ func (q *Queries) GetTagsWithPagination(ctx context.Context, arg GetTagsWithPagi
const getTimeslotsYclientsWithPagination = `-- name: GetTimeslotsYclientsWithPagination :many
WITH user_data AS (
SELECT YclientsID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
SELECT SalonID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
)
SELECT u.id, u.yclientsid, u.yclientscompanyid, u.isenabled, u.weekdayssettings, u.datessettings, u.deleted, u.createdat, COUNT(*) OVER() as total_count
SELECT u.id, u.salonid, u.isenabled, u.weekdayssettings, u.datessettings, u.deleted, u.createdat, COUNT(*) OVER() as total_count
FROM YclientsTimeSlots u
JOIN user_data a ON u.YclientsID = a.YclientsID
JOIN user_data a ON u.SalonID = a.SalonID
WHERE u.Deleted = false
ORDER BY u.ID OFFSET ($2 - 1) * $3 LIMIT $3
`
@ -3880,8 +3877,7 @@ type GetTimeslotsYclientsWithPaginationParams struct {
type GetTimeslotsYclientsWithPaginationRow struct {
ID int64 `db:"id" json:"id"`
Yclientsid int32 `db:"yclientsid" json:"yclientsid"`
Yclientscompanyid int32 `db:"yclientscompanyid" json:"yclientscompanyid"`
Salonid int32 `db:"salonid" json:"salonid"`
Isenabled bool `db:"isenabled" json:"isenabled"`
Weekdayssettings json.RawMessage `db:"weekdayssettings" json:"weekdayssettings"`
Datessettings json.RawMessage `db:"datessettings" json:"datessettings"`
@ -3901,8 +3897,7 @@ func (q *Queries) GetTimeslotsYclientsWithPagination(ctx context.Context, arg Ge
var i GetTimeslotsYclientsWithPaginationRow
if err := rows.Scan(
&i.ID,
&i.Yclientsid,
&i.Yclientscompanyid,
&i.Salonid,
&i.Isenabled,
&i.Weekdayssettings,
&i.Datessettings,
@ -4447,11 +4442,11 @@ func (q *Queries) GetUsersWithPagination(ctx context.Context, arg GetUsersWithPa
const getUsersYclientsWithPagination = `-- name: GetUsersYclientsWithPagination :many
WITH user_data AS (
SELECT YclientsID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
SELECT SalonID FROM YclientsAccounts WHERE YclientsAccounts.AccountID = $1 AND YclientsAccounts.Deleted = false
)
SELECT u.id, u.yclientsid, u.yclientscompanyid, u.yclientsuserid, u.name, u.role, u.deleted, u.createdat, COUNT(*) OVER() as total_count
SELECT u.id, u.salonid, u.yclientsuserid, u.name, u.role, u.deleted, u.createdat, COUNT(*) OVER() as total_count
FROM YclientsAccountUsers u
JOIN user_data a ON u.YclientsID = a.YclientsID
JOIN user_data a ON u.SalonID = a.SalonID
WHERE u.Deleted = false
ORDER BY u.ID OFFSET ($2 - 1) * $3 LIMIT $3
`
@ -4464,8 +4459,7 @@ type GetUsersYclientsWithPaginationParams struct {
type GetUsersYclientsWithPaginationRow struct {
ID int64 `db:"id" json:"id"`
Yclientsid int32 `db:"yclientsid" json:"yclientsid"`
Yclientscompanyid int32 `db:"yclientscompanyid" json:"yclientscompanyid"`
Salonid int32 `db:"salonid" json:"salonid"`
Yclientsuserid int32 `db:"yclientsuserid" json:"yclientsuserid"`
Name string `db:"name" json:"name"`
Role int32 `db:"role" json:"role"`
@ -4485,8 +4479,7 @@ func (q *Queries) GetUsersYclientsWithPagination(ctx context.Context, arg GetUse
var i GetUsersYclientsWithPaginationRow
if err := rows.Scan(
&i.ID,
&i.Yclientsid,
&i.Yclientscompanyid,
&i.Salonid,
&i.Yclientsuserid,
&i.Name,
&i.Role,
@ -4507,6 +4500,24 @@ func (q *Queries) GetUsersYclientsWithPagination(ctx context.Context, arg GetUse
return items, nil
}
const getYclientsUserToken = `-- name: GetYclientsUserToken :one
select accountid, salonid, accesstoken, active, expiration, createdat from YclientsTokens where AccountID = $1 and Expiration=false and Active = true
`
func (q *Queries) GetYclientsUserToken(ctx context.Context, accountid string) (Yclientstoken, error) {
row := q.db.QueryRowContext(ctx, getYclientsUserToken, accountid)
var i Yclientstoken
err := row.Scan(
&i.Accountid,
&i.Salonid,
&i.Accesstoken,
&i.Active,
&i.Expiration,
&i.Createdat,
)
return i, err
}
const gettingAmoUsersTrueResults = `-- name: GettingAmoUsersTrueResults :many
SELECT a.quiz_id,a.id,a.result,a.question_id,a.content,a.session,
COALESCE((SELECT a2.utm
@ -5002,6 +5013,29 @@ func (q *Queries) InsertQuizPrivilegeUsage(ctx context.Context, arg InsertQuizPr
return i, err
}
const insertYclientsTokens = `-- name: InsertYclientsTokens :one
insert into YclientsTokens (AccountID,SalonID) values($1,$2) RETURNING accountid, salonid, accesstoken, active, expiration, createdat
`
type InsertYclientsTokensParams struct {
Accountid string `db:"accountid" json:"accountid"`
Salonid int32 `db:"salonid" json:"salonid"`
}
func (q *Queries) InsertYclientsTokens(ctx context.Context, arg InsertYclientsTokensParams) (Yclientstoken, error) {
row := q.db.QueryRowContext(ctx, insertYclientsTokens, arg.Accountid, arg.Salonid)
var i Yclientstoken
err := row.Scan(
&i.Accountid,
&i.Salonid,
&i.Accesstoken,
&i.Active,
&i.Expiration,
&i.Createdat,
)
return i, err
}
const moveToHistory = `-- name: MoveToHistory :one
INSERT INTO question(
quiz_id, title, description, questiontype, required,
@ -5849,6 +5883,54 @@ func (q *Queries) UpdateTags(ctx context.Context, dollar_1 json.RawMessage) erro
return err
}
const updateYclientsTokensAccessToken = `-- name: UpdateYclientsTokensAccessToken :one
update YclientsTokens set AccessToken = $1, Active = true where AccountID = $2 and SalonID = $3 and Expiration = false RETURNING accountid, salonid, accesstoken, active, expiration, createdat
`
type UpdateYclientsTokensAccessTokenParams struct {
Accesstoken string `db:"accesstoken" json:"accesstoken"`
Accountid string `db:"accountid" json:"accountid"`
Salonid int32 `db:"salonid" json:"salonid"`
}
func (q *Queries) UpdateYclientsTokensAccessToken(ctx context.Context, arg UpdateYclientsTokensAccessTokenParams) (Yclientstoken, error) {
row := q.db.QueryRowContext(ctx, updateYclientsTokensAccessToken, arg.Accesstoken, arg.Accountid, arg.Salonid)
var i Yclientstoken
err := row.Scan(
&i.Accountid,
&i.Salonid,
&i.Accesstoken,
&i.Active,
&i.Expiration,
&i.Createdat,
)
return i, err
}
const updateYclientsTokensExpiration = `-- name: UpdateYclientsTokensExpiration :one
update YclientsTokens set Expiration=$1, Active = $2 where AccountID = $3 RETURNING accountid, salonid, accesstoken, active, expiration, createdat
`
type UpdateYclientsTokensExpirationParams struct {
Expiration bool `db:"expiration" json:"expiration"`
Active bool `db:"active" json:"active"`
Accountid string `db:"accountid" json:"accountid"`
}
func (q *Queries) UpdateYclientsTokensExpiration(ctx context.Context, arg UpdateYclientsTokensExpirationParams) (Yclientstoken, error) {
row := q.db.QueryRowContext(ctx, updateYclientsTokensExpiration, arg.Expiration, arg.Active, arg.Accountid)
var i Yclientstoken
err := row.Scan(
&i.Accountid,
&i.Salonid,
&i.Accesstoken,
&i.Active,
&i.Expiration,
&i.Createdat,
)
return i, err
}
const updatingDealAmoStatus = `-- name: UpdatingDealAmoStatus :exec
UPDATE amoCRMStatuses SET Status = $1
WHERE DealID = $2 AND AccountID = (SELECT u.AmoID FROM tokens AS t JOIN accountsAmo AS u ON t.AccountID = u.AccountID WHERE t.AccessToken = $3 AND u.Deleted = false)

@ -2,22 +2,29 @@ package model
import "time"
type YclientsToken struct {
AccountID string `json:"accountID"` // ID аккаунта нас
SalonID int32 `json:"salon_id"` // ID "аккаунта который ГЛАВНЫЙ"
AccessToken string `json:"access_token"`
Active bool `json:"active"`
Expiration bool `json:"expiration"`
CreatedAt time.Time `json:"createdAt"`
}
type YclientsAccount struct {
ID int64 `json:"id"`
AccountID string `json:"accountID"` // ID аккаунта нас
YclientsID int32 `json:"yclientsID"` // ID "аккаунта который ГЛАВНЫЙ"
SalonID int32 `json:"salon_id"` // ID "аккаунта который ГЛАВНЫЙ"
Name string `json:"name"`
Country string `json:"country"`
Deleted bool `json:"deleted"`
CreatedAt time.Time `json:"createdAt"`
Subdomain string `json:"subdomain"`
Stale bool `json:"stale"`
}
type YclientsAccountUser struct {
ID int64 `json:"id"`
YclientsID int32 `json:"yclientsID"` // ID "аккаунта который ГЛАВНЫЙ"
YclientsCompanyID int32 `json:"yclientsCompanyID"` // ID компании
SalonID int32 `json:"salon_id"` // ID "аккаунта который ГЛАВНЫЙ"
YclientsUserID int32 `json:"yclientsUserID"`
Name string `json:"name"`
Role int32 `json:"role"`
@ -32,8 +39,7 @@ type UserListYclientsResp struct {
type YclientsCompany struct {
ID int64 `json:"id"`
YclientsID int32 `json:"yclientsID"` // ID "аккаунта который ГЛАВНЫЙ"
YclientsCompanyID int32 `json:"yclientsCompanyID"`
SalonID int32 `json:"salon_id"` // ID "аккаунта который ГЛАВНЫЙ"
Title string `json:"title"`
ShortDecription string `json:"shortDecription"`
Active int32 `json:"active"`
@ -50,8 +56,7 @@ type CompanyListYclientsResp struct {
type YclientsServices struct {
ID int64 `json:"id"`
YclientsID int32 `json:"yclientsID"` // ID "аккаунта который ГЛАВНЫЙ"
YclientsCompanyID int32 `json:"yclientsCompanyID"` // ID компании
SalonID int32 `json:"salon_id"` // ID "аккаунта который ГЛАВНЫЙ"
ServiceID int32 `json:"serviceID"`
Title string `json:"title"`
CategoryID int32 `json:"categoryID"`
@ -72,8 +77,7 @@ type ServicesListYclientsResp struct {
type Timeslots struct {
ID int64 `json:"id"`
YclientsID int32 `json:"yclientsID"` // ID "аккаунта который ГЛАВНЫЙ"
YclientsCompanyID int32 `json:"yclientsCompanyID"` // ID компании
SalonID int32 `json:"salon_id"` // ID "аккаунта который ГЛАВНЫЙ"
// ниже то что используется в запросе
IsEnabled bool `json:"is_enabled"`
WeekdaysSettings []WeekdaySetting `json:"weekdays_settings"`

@ -25,6 +25,70 @@ func NewYclientsRepository(deps Deps) *YclientsRepository {
}
}
// tokens
func (r *YclientsRepository) InsertYclientsTokens(ctx context.Context, accountID string, salonID int32) error {
_, err := r.queries.InsertYclientsTokens(ctx, sqlcgen.InsertYclientsTokensParams{
Accountid: accountID,
Salonid: salonID,
})
if err != nil {
return err
}
return nil
}
func (r *YclientsRepository) UpdateYclientsTokensAccessToken(ctx context.Context, accountID string, salonID int32, yclientsAccessToken string) (*model.YclientsToken, error) {
row, err := r.queries.UpdateYclientsTokensAccessToken(ctx, sqlcgen.UpdateYclientsTokensAccessTokenParams{
Accountid: accountID,
Salonid: salonID,
Accesstoken: yclientsAccessToken,
})
if err != nil {
return nil, err
}
return &model.YclientsToken{
AccountID: row.Accountid,
SalonID: row.Salonid,
AccessToken: row.Accesstoken,
Active: row.Active,
Expiration: row.Expiration,
CreatedAt: row.Createdat,
}, nil
}
func (r *YclientsRepository) UpdateYclientsTokensExpiration(ctx context.Context, accountID string, active, expiration bool) error {
_, err := r.queries.UpdateYclientsTokensExpiration(ctx, sqlcgen.UpdateYclientsTokensExpirationParams{
Accountid: accountID,
Active: active,
Expiration: expiration,
})
if err != nil {
return err
}
return nil
}
func (r *YclientsRepository) GetYclientsUserToken(ctx context.Context, accountID string) (*model.YclientsToken, error) {
row, err := r.queries.GetYclientsUserToken(ctx, accountID)
if err != nil {
return nil, err
}
return &model.YclientsToken{
AccountID: row.Accountid,
SalonID: row.Salonid,
AccessToken: row.Accesstoken,
Active: row.Active,
Expiration: row.Expiration,
CreatedAt: row.Createdat,
}, err
}
// users
func (r *YclientsRepository) GetCurrentAccount(ctx context.Context, accountID string) (*model.YclientsAccount, error) {
row, err := r.queries.GetCurrentYclientsCompany(ctx, accountID)
if err != nil {
@ -34,12 +98,11 @@ func (r *YclientsRepository) GetCurrentAccount(ctx context.Context, accountID st
user := model.YclientsAccount{
ID: row.ID,
AccountID: row.Accountid,
YclientsID: row.Yclientsid,
SalonID: row.Salonid,
Name: row.Name,
Country: row.Country,
Deleted: row.Deleted,
CreatedAt: row.Createdat,
Subdomain: row.Subdomain,
}
//_, err = r.queries.CheckExpiredYclientsToken(ctx, accountID)
@ -78,8 +141,7 @@ func (r *YclientsRepository) GettingUserWithPagination(ctx context.Context, req
for _, row := range rows {
users = append(users, model.YclientsAccountUser{
ID: row.ID,
YclientsID: row.Yclientsid,
YclientsCompanyID: row.Yclientscompanyid,
SalonID: row.Salonid,
YclientsUserID: row.Yclientsuserid,
Name: row.Name,
Role: row.Role,
@ -113,8 +175,7 @@ func (r *YclientsRepository) GettingCompanyWithPagination(ctx context.Context, r
for _, row := range rows {
users = append(users, model.YclientsCompany{
ID: row.ID,
YclientsID: row.Yclientsid,
YclientsCompanyID: row.Yclientscompanyid,
SalonID: row.Salonid,
Title: row.Title,
ShortDecription: row.Shortdecription,
Active: row.Active,
@ -155,8 +216,7 @@ func (r *YclientsRepository) GettingServicesWithPagination(ctx context.Context,
for _, row := range rows {
users = append(users, model.YclientsServices{
ID: row.ID,
YclientsID: row.Yclientsid,
YclientsCompanyID: row.Yclientscompanyid,
SalonID: row.Salonid,
ServiceID: row.Serviceid,
Title: row.Title,
CategoryID: row.Categoryid,
@ -213,8 +273,7 @@ func (r *YclientsRepository) GettingTimeslotsWithPagination(ctx context.Context,
users = append(users, model.Timeslots{
ID: row.ID,
YclientsID: row.Yclientsid,
YclientsCompanyID: row.Yclientscompanyid,
SalonID: row.Salonid,
IsEnabled: row.Isenabled,
WeekdaysSettings: weekdaysSettings,
DatesSettings: datesSettings,