2025-10-06 08:34:19 +00:00
|
|
|
|
CREATE TABLE IF NOT EXISTS YclientsTokens (
|
2025-10-06 08:49:57 +00:00
|
|
|
|
AccountID VARCHAR(30) PRIMARY KEY,
|
|
|
|
|
|
SalonID INT PRIMARY KEY, -- ID компании
|
2025-10-06 08:34:19 +00:00
|
|
|
|
AccessToken TEXT NOT NULL DEFAULT '',
|
|
|
|
|
|
Active BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
|
|
Expiration BOOLEAN NOT NULL DEFAULT FALSE, -- флаг истек ли токен
|
|
|
|
|
|
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
|
);
|
|
|
|
|
|
|
2025-10-06 08:49:57 +00:00
|
|
|
|
create UNIQUE INDEX idx_unique_tokens_yclients ON YclientsTokens (SalonID, AccountID) WHERE Active = true and Expiration = false;
|
2025-10-06 08:34:19 +00:00
|
|
|
|
|
2025-09-15 14:04:35 +00:00
|
|
|
|
CREATE TABLE IF NOT EXISTS YclientsAccounts (
|
|
|
|
|
|
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
|
|
|
|
|
AccountID VARCHAR(30) NOT NULL DEFAULT '', -- ID аккаунта у нас
|
2025-10-06 08:34:19 +00:00
|
|
|
|
SalonID INT NOT NULL, -- ID компании
|
2025-10-06 12:15:57 +00:00
|
|
|
|
Title text NOT NULL DEFAULT '',
|
|
|
|
|
|
ShortDecription text NOT NULL DEFAULT '',
|
2025-09-15 14:04:35 +00:00
|
|
|
|
Country VARCHAR(50) NOT NULL DEFAULT '',
|
|
|
|
|
|
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
2025-10-06 08:34:19 +00:00
|
|
|
|
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
2025-09-15 14:04:35 +00:00
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS YclientsAccountUsers (
|
|
|
|
|
|
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
2025-10-06 08:34:19 +00:00
|
|
|
|
SalonID INT NOT NULL, -- ID компании
|
2025-09-15 14:04:35 +00:00
|
|
|
|
YclientsUserID INT NOT NULL, -- ID пользователя в Yclients
|
|
|
|
|
|
Name VARCHAR(512) NOT NULL DEFAULT '',
|
|
|
|
|
|
Role INT NOT NULL DEFAULT 0, -- position
|
|
|
|
|
|
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
|
|
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
2025-09-16 08:02:38 +00:00
|
|
|
|
);
|
|
|
|
|
|
|
2025-10-06 12:15:57 +00:00
|
|
|
|
-- CREATE TABLE IF NOT EXISTS YclientsCompany (
|
|
|
|
|
|
-- ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
|
|
|
|
|
-- SalonID INT NOT NULL, -- ID компании
|
|
|
|
|
|
-- Title text NOT NULL,
|
|
|
|
|
|
-- ShortDecription text NOT NULL,
|
|
|
|
|
|
-- Active INT NOT NULL,
|
|
|
|
|
|
-- Country text NOT NULL,
|
|
|
|
|
|
-- GroupPriority INT NOT NULL,
|
|
|
|
|
|
-- Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
|
|
-- CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
|
|
|
-- );
|
2025-09-16 08:02:38 +00:00
|
|
|
|
|
2025-09-16 08:39:26 +00:00
|
|
|
|
CREATE TABLE IF NOT EXISTS YclientsServices (
|
|
|
|
|
|
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
2025-10-06 08:34:19 +00:00
|
|
|
|
SalonID INT NOT NULL, -- ID компании
|
2025-09-16 08:39:26 +00:00
|
|
|
|
ServiceID INT NOT NULL,
|
|
|
|
|
|
Title text NOT NULL,
|
|
|
|
|
|
CategoryID INT NOT NULL,
|
|
|
|
|
|
PriceMin text NOT NULL,
|
|
|
|
|
|
PriceMax text NOT NULL,
|
|
|
|
|
|
Discount text NOT NULL,
|
|
|
|
|
|
Comment text NOT NULL,
|
|
|
|
|
|
Active text NOT NULL,
|
|
|
|
|
|
ApiID text NOT NULL,
|
|
|
|
|
|
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
|
|
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
2025-09-16 09:21:26 +00:00
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS YclientsTimeSlots (
|
|
|
|
|
|
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
|
2025-10-06 08:34:19 +00:00
|
|
|
|
SalonID INT NOT NULL, -- ID компании
|
2025-09-16 09:21:26 +00:00
|
|
|
|
IsEnabled BOOLEAN NOT NULL DEFAULT false,
|
|
|
|
|
|
WeekdaysSettings JSONB NOT NULL DEFAULT '[]',
|
|
|
|
|
|
DatesSettings JSONB NOT NULL DEFAULT '{}',
|
|
|
|
|
|
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
|
|
|
|
|
|
CreatedAt TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
2025-09-16 10:25:11 +00:00
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
DO $$
|
|
|
|
|
|
BEGIN
|
|
|
|
|
|
IF NOT EXISTS (
|
|
|
|
|
|
SELECT 1 FROM pg_enum
|
|
|
|
|
|
WHERE enumlabel = 'yclients_staff_id' AND enumtypid = 'question_type'::regtype
|
|
|
|
|
|
) THEN
|
|
|
|
|
|
ALTER TYPE question_type ADD VALUE 'yclients_staff_id';
|
|
|
|
|
|
END IF;
|
|
|
|
|
|
END $$;
|
|
|
|
|
|
|
|
|
|
|
|
DO $$
|
|
|
|
|
|
BEGIN
|
|
|
|
|
|
IF NOT EXISTS (
|
|
|
|
|
|
SELECT 1 FROM pg_enum
|
|
|
|
|
|
WHERE enumlabel = 'yclients_services' AND enumtypid = 'question_type'::regtype
|
|
|
|
|
|
) THEN
|
|
|
|
|
|
ALTER TYPE question_type ADD VALUE 'yclients_services';
|
|
|
|
|
|
END IF;
|
|
|
|
|
|
END $$;
|
|
|
|
|
|
|
|
|
|
|
|
DO $$
|
|
|
|
|
|
BEGIN
|
|
|
|
|
|
IF NOT EXISTS (
|
|
|
|
|
|
SELECT 1 FROM pg_enum
|
|
|
|
|
|
WHERE enumlabel = 'yclients_comment' AND enumtypid = 'question_type'::regtype
|
|
|
|
|
|
) THEN
|
|
|
|
|
|
ALTER TYPE question_type ADD VALUE 'yclients_comment';
|
|
|
|
|
|
END IF;
|
|
|
|
|
|
END $$;
|