chore: initial import for test contour
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
apiVersion: v2
|
||||
name: db-init
|
||||
description: Schema then seed for test databases
|
||||
type: application
|
||||
version: 0.1.0
|
||||
Symlink
+1
@@ -0,0 +1 @@
|
||||
../test/sql
|
||||
@@ -0,0 +1,133 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: postgres-schema-sql
|
||||
namespace: {{ .Values.namespace }}
|
||||
data:
|
||||
{{- range $path, $_ := .Files.Glob "sql/postgres/schema/*.sql" }}
|
||||
{{ base $path }}: |
|
||||
{{ $.Files.Get $path | indent 4 }}
|
||||
{{- end }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: postgres-seed-sql
|
||||
namespace: {{ .Values.namespace }}
|
||||
data:
|
||||
{{- range $path, $_ := .Files.Glob "sql/postgres/seed/*.sql" }}
|
||||
{{ base $path }}: |
|
||||
{{ $.Files.Get $path | indent 4 }}
|
||||
{{- end }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: mysql-schema-sql
|
||||
namespace: {{ .Values.namespace }}
|
||||
data:
|
||||
{{- range $path, $_ := .Files.Glob "sql/mysql-bitrix/schema/*.sql" }}
|
||||
{{ base $path }}: |
|
||||
{{ $.Files.Get $path | indent 4 }}
|
||||
{{- end }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: mysql-seed-sql
|
||||
namespace: {{ .Values.namespace }}
|
||||
data:
|
||||
{{- range $path, $_ := .Files.Glob "sql/mysql-bitrix/seed/*.sql" }}
|
||||
{{ base $path }}: |
|
||||
{{ $.Files.Get $path | indent 4 }}
|
||||
{{- end }}
|
||||
---
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: db-init
|
||||
namespace: {{ .Values.namespace }}
|
||||
spec:
|
||||
backoffLimit: 2
|
||||
ttlSecondsAfterFinished: 3600
|
||||
template:
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
initContainers:
|
||||
- name: wait-pg
|
||||
image: postgres:16-alpine
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
until pg_isready -h {{ .Values.postgres.host }} -p 5432 -U {{ .Values.postgres.user }}; do sleep 3; done
|
||||
- name: wait-mysql
|
||||
image: mysql:8.0
|
||||
env:
|
||||
- name: MYSQL_PWD
|
||||
value: {{ .Values.mysql.password | quote }}
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
until mysqladmin ping -h {{ .Values.mysql.host }} -u{{ .Values.mysql.user }} --silent; do sleep 3; done
|
||||
containers:
|
||||
- name: init
|
||||
image: postgres:16-alpine
|
||||
env:
|
||||
- name: PGPASSWORD
|
||||
value: {{ .Values.postgres.password | quote }}
|
||||
- name: MYSQL_PWD
|
||||
value: {{ .Values.mysql.password | quote }}
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
set -e
|
||||
echo "=== Phase 1: schema ==="
|
||||
for f in $(ls /schema/postgres/*.sql 2>/dev/null | sort); do
|
||||
[ -s "$f" ] || continue
|
||||
echo "PG schema: $(basename $f)"
|
||||
psql -h {{ .Values.postgres.host }} -U {{ .Values.postgres.user }} -d postgres -v ON_ERROR_STOP=1 -f "$f"
|
||||
done
|
||||
apk add --no-cache mariadb-client >/dev/null
|
||||
for f in $(ls /schema/mysql/*.sql 2>/dev/null | sort); do
|
||||
[ -s "$f" ] || continue
|
||||
echo "MySQL schema: $(basename $f)"
|
||||
mariadb --skip-ssl -h {{ .Values.mysql.host }} -u{{ .Values.mysql.user }} {{ .Values.mysql.database }} < "$f"
|
||||
done
|
||||
echo "=== Phase 2: seed ==="
|
||||
for f in $(ls /seed/postgres/*.sql 2>/dev/null | sort); do
|
||||
[ -s "$f" ] || continue
|
||||
echo "PG seed: $(basename $f)"
|
||||
psql -h {{ .Values.postgres.host }} -U {{ .Values.postgres.user }} -d postgres -v ON_ERROR_STOP=1 -f "$f"
|
||||
done
|
||||
for f in $(ls /seed/mysql/*.sql 2>/dev/null | sort); do
|
||||
[ -s "$f" ] || continue
|
||||
echo "MySQL seed: $(basename $f)"
|
||||
mariadb --skip-ssl -h {{ .Values.mysql.host }} -u{{ .Values.mysql.user }} {{ .Values.mysql.database }} < "$f"
|
||||
done
|
||||
echo "DB init complete"
|
||||
volumeMounts:
|
||||
- name: pg-schema
|
||||
mountPath: /schema/postgres
|
||||
- name: mysql-schema
|
||||
mountPath: /schema/mysql
|
||||
- name: pg-seed
|
||||
mountPath: /seed/postgres
|
||||
- name: mysql-seed
|
||||
mountPath: /seed/mysql
|
||||
volumes:
|
||||
- name: pg-schema
|
||||
configMap:
|
||||
name: postgres-schema-sql
|
||||
- name: mysql-schema
|
||||
configMap:
|
||||
name: mysql-schema-sql
|
||||
- name: pg-seed
|
||||
configMap:
|
||||
name: postgres-seed-sql
|
||||
- name: mysql-seed
|
||||
configMap:
|
||||
name: mysql-seed-sql
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace: sova-data-test
|
||||
|
||||
postgres:
|
||||
host: postgresql-test.sova-data-test.svc.cluster.local
|
||||
user: sova_test
|
||||
password: sova_test_pass
|
||||
|
||||
mysql:
|
||||
host: mysql-bitrix-test.sova-data-test.svc.cluster.local
|
||||
user: bitrix_test
|
||||
password: bitrix_test_pass
|
||||
database: sova_bitrix_test
|
||||
@@ -0,0 +1,67 @@
|
||||
DROP TABLE IF EXISTS b_iblock_element_property;
|
||||
DROP TABLE IF EXISTS b_iblock_property;
|
||||
DROP TABLE IF EXISTS b_iblock_element;
|
||||
DROP TABLE IF EXISTS b_file;
|
||||
|
||||
CREATE TABLE b_file (
|
||||
ID INT PRIMARY KEY,
|
||||
SUBDIR VARCHAR(255),
|
||||
FILE_NAME VARCHAR(255)
|
||||
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE b_iblock_element (
|
||||
ID INT PRIMARY KEY,
|
||||
IBLOCK_ID INT,
|
||||
IBLOCK_SECTION_ID INT NULL,
|
||||
WF_PARENT_ELEMENT_ID INT NULL,
|
||||
XML_ID VARCHAR(255) NULL,
|
||||
NAME VARCHAR(255),
|
||||
ACTIVE CHAR(1) DEFAULT 'Y',
|
||||
CODE VARCHAR(255),
|
||||
PREVIEW_PICTURE INT NULL,
|
||||
PREVIEW_TEXT TEXT,
|
||||
DETAIL_TEXT TEXT,
|
||||
DATE_CREATE DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
TIMESTAMP_X DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE b_iblock_property (
|
||||
ID INT PRIMARY KEY,
|
||||
IBLOCK_ID INT,
|
||||
NAME VARCHAR(255),
|
||||
CODE VARCHAR(255),
|
||||
ACTIVE CHAR(1) DEFAULT 'Y'
|
||||
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE b_iblock_element_property (
|
||||
ID INT PRIMARY KEY AUTO_INCREMENT,
|
||||
IBLOCK_PROPERTY_ID INT,
|
||||
IBLOCK_ELEMENT_ID INT,
|
||||
VALUE TEXT,
|
||||
INDEX idx_element (IBLOCK_ELEMENT_ID),
|
||||
INDEX idx_property (IBLOCK_PROPERTY_ID)
|
||||
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
INSERT INTO b_file (ID, SUBDIR, FILE_NAME)
|
||||
VALUES (1, 'local', 'doctor.png');
|
||||
|
||||
INSERT INTO b_iblock_element (ID, IBLOCK_ID, XML_ID, NAME, ACTIVE, CODE, PREVIEW_PICTURE, PREVIEW_TEXT, DETAIL_TEXT)
|
||||
VALUES
|
||||
(1001, 91, '101', 'Иванов Иван Иванович', 'Y', 'ivanov-ivan', 1, 'Тестовый врач Bitrix', 'Локальное описание врача из Bitrix'),
|
||||
(2001, 91, 'review-1', 'Local review', 'Y', 'local-review', NULL, 'Отзыв', 'Отзыв из локального Bitrix');
|
||||
|
||||
INSERT INTO b_iblock_property (ID, IBLOCK_ID, NAME, CODE, ACTIVE)
|
||||
VALUES
|
||||
(1, 91, 'Связанный врач', 'MEDIC', 'Y'),
|
||||
(2, 91, 'Текст отзыва', 'MESSAGE', 'Y'),
|
||||
(3, 91, 'Код услуги', 'KOD', 'Y'),
|
||||
(4, 91, 'Отзывы', 'LINK_REVIEWS', 'Y'),
|
||||
(5, 91, 'Прайс', 'LINK_PRICE_1', 'Y');
|
||||
|
||||
INSERT INTO b_iblock_element_property (IBLOCK_PROPERTY_ID, IBLOCK_ELEMENT_ID, VALUE)
|
||||
VALUES
|
||||
(1, 2001, '1001'),
|
||||
(2, 2001, 'Локальный отзыв из Bitrix'),
|
||||
(3, 1001, '1001'),
|
||||
(4, 1001, '2001'),
|
||||
(5, 1001, '1001');
|
||||
@@ -0,0 +1,48 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: mysql-bitrix-test
|
||||
namespace: sova-data-test
|
||||
spec:
|
||||
ports:
|
||||
- port: 3306
|
||||
targetPort: 3306
|
||||
selector:
|
||||
app: mysql-bitrix-test
|
||||
---
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: mysql-bitrix-test
|
||||
namespace: sova-data-test
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: mysql-bitrix-test
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: mysql-bitrix-test
|
||||
spec:
|
||||
containers:
|
||||
- name: mysql
|
||||
image: mysql:8.0
|
||||
args:
|
||||
- --default-authentication-plugin=mysql_native_password
|
||||
env:
|
||||
- name: MYSQL_ROOT_PASSWORD
|
||||
value: bitrix_root_test
|
||||
- name: MYSQL_DATABASE
|
||||
value: sova_bitrix_test
|
||||
- name: MYSQL_USER
|
||||
value: bitrix_test
|
||||
- name: MYSQL_PASSWORD
|
||||
value: bitrix_test_pass
|
||||
ports:
|
||||
- containerPort: 3306
|
||||
resources:
|
||||
requests:
|
||||
memory: 256Mi
|
||||
limits:
|
||||
memory: 512Mi
|
||||
@@ -0,0 +1 @@
|
||||
CREATE DATABASE sova_cabinet_local OWNER sova_local;
|
||||
@@ -0,0 +1,509 @@
|
||||
\connect sova_backend_local
|
||||
|
||||
DROP SCHEMA public CASCADE;
|
||||
CREATE SCHEMA public;
|
||||
GRANT ALL ON SCHEMA public TO sova_local;
|
||||
|
||||
CREATE TABLE users (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
uid INTEGER NOT NULL UNIQUE,
|
||||
email VARCHAR(180),
|
||||
roles JSONB NOT NULL DEFAULT '[]',
|
||||
region_id INTEGER NOT NULL DEFAULT 91,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
birth_date DATE,
|
||||
logged_in TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE departments (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
did BIGINT NOT NULL UNIQUE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
online_mode BOOLEAN NOT NULL DEFAULT true,
|
||||
alias VARCHAR(255) NOT NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
group_name VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE filial (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
fid INTEGER NOT NULL UNIQUE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
address VARCHAR(255),
|
||||
region_id INTEGER,
|
||||
site_id INTEGER,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
company VARCHAR(255),
|
||||
short_name VARCHAR(255),
|
||||
phone VARCHAR(255),
|
||||
policy TEXT,
|
||||
picture VARCHAR(255),
|
||||
email VARCHAR(255),
|
||||
origin VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE specialist (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
preview_picture VARCHAR(255),
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
display_schedule BOOLEAN NOT NULL DEFAULT true,
|
||||
dcodes VARCHAR(255),
|
||||
region_id INTEGER,
|
||||
alias VARCHAR(255) NOT NULL,
|
||||
post VARCHAR(255),
|
||||
experience VARCHAR(255),
|
||||
s_type INTEGER,
|
||||
update_at TIMESTAMP NOT NULL DEFAULT now(),
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
tags JSONB,
|
||||
highlighted_tags JSONB,
|
||||
video VARCHAR(255),
|
||||
video_vertical VARCHAR(255),
|
||||
schedule_text VARCHAR(255),
|
||||
category VARCHAR(255),
|
||||
patient_age INTEGER,
|
||||
kodoper JSONB,
|
||||
only_online_mode BOOLEAN,
|
||||
prodoctor BOOLEAN,
|
||||
prodoctor_text VARCHAR(255),
|
||||
prodoctor_link VARCHAR(255),
|
||||
degree VARCHAR(255),
|
||||
kiosk BOOLEAN NOT NULL DEFAULT false,
|
||||
filials JSONB,
|
||||
accepts_dms BOOLEAN,
|
||||
specialities JSONB
|
||||
);
|
||||
|
||||
CREATE TABLE location (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
dcode BIGINT,
|
||||
department BIGINT NOT NULL,
|
||||
filial INTEGER NOT NULL,
|
||||
online_mode BOOLEAN NOT NULL DEFAULT true,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
nearest_date DATE,
|
||||
specialist_id INTEGER REFERENCES specialist(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE review (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
specialist_id INTEGER REFERENCES specialist(id) ON DELETE CASCADE,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
date_create DATE NOT NULL DEFAULT CURRENT_DATE,
|
||||
message TEXT NOT NULL,
|
||||
author VARCHAR(255) NOT NULL,
|
||||
rating DOUBLE PRECISION NOT NULL DEFAULT 5,
|
||||
source VARCHAR(255),
|
||||
external_id INTEGER
|
||||
);
|
||||
|
||||
CREATE TABLE specialist_docs (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
specialist_id INTEGER REFERENCES specialist(id) ON DELETE CASCADE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
description VARCHAR(255),
|
||||
picture VARCHAR(255),
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
type VARCHAR(255) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE specialist_dcode_description (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
dcode BIGINT NOT NULL,
|
||||
department BIGINT,
|
||||
specialist_id INTEGER NOT NULL REFERENCES specialist(id) ON DELETE CASCADE,
|
||||
content TEXT NOT NULL,
|
||||
create_at TIMESTAMP NOT NULL DEFAULT now(),
|
||||
update_at TIMESTAMP NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE stock (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
picture VARCHAR(255),
|
||||
anons TEXT,
|
||||
start_date TIMESTAMP NOT NULL DEFAULT now(),
|
||||
end_date TIMESTAMP NOT NULL DEFAULT now() + interval '30 days'
|
||||
);
|
||||
|
||||
CREATE TABLE stock_specialist (
|
||||
stock_id INTEGER NOT NULL REFERENCES stock(id) ON DELETE CASCADE,
|
||||
specialist_id INTEGER NOT NULL REFERENCES specialist(id) ON DELETE CASCADE,
|
||||
PRIMARY KEY (stock_id, specialist_id)
|
||||
);
|
||||
|
||||
CREATE TABLE price_department (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
group_id INTEGER NOT NULL,
|
||||
doct_count INTEGER DEFAULT 0,
|
||||
view_in_web BOOLEAN DEFAULT true
|
||||
);
|
||||
|
||||
CREATE TABLE price_list (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
kodoper INTEGER,
|
||||
schname VARCHAR(255),
|
||||
specname VARCHAR(255),
|
||||
speccode INTEGER,
|
||||
price_info JSONB,
|
||||
discprice NUMERIC(10,2),
|
||||
structname VARCHAR(255),
|
||||
fname VARCHAR(255),
|
||||
filial INTEGER,
|
||||
comment TEXT,
|
||||
media_id INTEGER,
|
||||
date_update TIMESTAMP DEFAULT now(),
|
||||
group_id INTEGER,
|
||||
discpercent INTEGER
|
||||
);
|
||||
|
||||
CREATE TABLE schedule (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
dcode BIGINT,
|
||||
department BIGINT,
|
||||
filial INTEGER,
|
||||
schedident BIGINT,
|
||||
workdate DATE,
|
||||
rnum VARCHAR(255),
|
||||
rfloor VARCHAR(255),
|
||||
rbuilding VARCHAR(255),
|
||||
time JSONB,
|
||||
is_free BOOLEAN DEFAULT true,
|
||||
online_mode BOOLEAN DEFAULT false,
|
||||
query_string TEXT,
|
||||
created_at TIMESTAMP DEFAULT now(),
|
||||
interval_is_free BOOLEAN DEFAULT true,
|
||||
price_info NUMERIC(10,2)
|
||||
);
|
||||
|
||||
CREATE TABLE record (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
specialist_id INTEGER NOT NULL,
|
||||
phone VARCHAR(255) NOT NULL,
|
||||
create_at TIMESTAMP NOT NULL DEFAULT now(),
|
||||
hash VARCHAR(255) NOT NULL,
|
||||
reserve JSONB NOT NULL DEFAULT '{}'
|
||||
);
|
||||
|
||||
CREATE TABLE alert_sms (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
record_id INTEGER UNIQUE REFERENCES record(id) ON DELETE CASCADE,
|
||||
date_create TIMESTAMP NOT NULL DEFAULT now(),
|
||||
response TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE widget_form (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE widget_form_input (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
text VARCHAR(255) NOT NULL,
|
||||
type VARCHAR(255) NOT NULL,
|
||||
bitrix24_id VARCHAR(255) NOT NULL,
|
||||
widget_form_id INTEGER NOT NULL REFERENCES widget_form(id) ON DELETE CASCADE,
|
||||
sort INTEGER NOT NULL DEFAULT 100
|
||||
);
|
||||
|
||||
CREATE TABLE article (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name TEXT,
|
||||
preview_picture TEXT,
|
||||
active BOOLEAN DEFAULT true,
|
||||
doctors JSONB,
|
||||
services JSONB,
|
||||
region_id INTEGER,
|
||||
alias TEXT,
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
update_at TIMESTAMP DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE disease (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
preview_picture VARCHAR(255),
|
||||
active BOOLEAN DEFAULT true,
|
||||
region_id INTEGER,
|
||||
alias VARCHAR(255),
|
||||
anons TEXT,
|
||||
update_at TIMESTAMP DEFAULT now(),
|
||||
hide_picture BOOLEAN,
|
||||
read_time TEXT,
|
||||
diseases_name TEXT,
|
||||
tags_important JSONB,
|
||||
tags JSONB,
|
||||
diseases_other_name TEXT,
|
||||
symptom TEXT,
|
||||
staff TEXT,
|
||||
link_services JSONB,
|
||||
staff_list JSONB,
|
||||
staff_post JSONB,
|
||||
staff_post_exclude JSONB,
|
||||
link_faq JSONB,
|
||||
bibliography TEXT,
|
||||
staff_check JSONB,
|
||||
content TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE medical_center (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
active BOOLEAN DEFAULT true,
|
||||
region_id INTEGER,
|
||||
alias VARCHAR(255),
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
update_at TIMESTAMP DEFAULT now(),
|
||||
kod_uslug JSONB,
|
||||
doctors JSONB,
|
||||
services JSONB,
|
||||
articles JSONB,
|
||||
txt_up JSONB,
|
||||
main_link_staff TEXT,
|
||||
contraindications JSONB,
|
||||
hide_picture INTEGER,
|
||||
indications JSONB,
|
||||
link_sale JSONB,
|
||||
plus_list JSONB,
|
||||
plus_text TEXT,
|
||||
plus_title TEXT,
|
||||
process_text TEXT,
|
||||
process_title TEXT,
|
||||
services_list JSONB,
|
||||
services_photos JSONB,
|
||||
services_title TEXT,
|
||||
sort_staff JSONB,
|
||||
training_text TEXT,
|
||||
training_text_title TEXT,
|
||||
why_text TEXT,
|
||||
why_title TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE news (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
active BOOLEAN DEFAULT true,
|
||||
region_id INTEGER,
|
||||
alias VARCHAR(255),
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
update_at TIMESTAMP DEFAULT now(),
|
||||
link_el_price TEXT,
|
||||
short_name TEXT,
|
||||
timer TEXT,
|
||||
timer_bg TEXT,
|
||||
form_order JSONB,
|
||||
link_services JSONB,
|
||||
link_staff JSONB,
|
||||
photos JSONB
|
||||
);
|
||||
|
||||
CREATE TABLE promo (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
active BOOLEAN DEFAULT true,
|
||||
region_id INTEGER,
|
||||
alias VARCHAR(255),
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
update_at TIMESTAMP DEFAULT now(),
|
||||
clinics JSONB,
|
||||
timer TEXT,
|
||||
timer_bg TEXT,
|
||||
short_name TEXT,
|
||||
link_services JSONB,
|
||||
link_staff JSONB,
|
||||
period VARCHAR(255),
|
||||
photos JSONB
|
||||
);
|
||||
|
||||
CREATE TABLE site_services (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
active BOOLEAN DEFAULT true,
|
||||
region_id INTEGER,
|
||||
alias VARCHAR(255),
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
update_at TIMESTAMP DEFAULT now(),
|
||||
link_videoreviews JSONB,
|
||||
preview_img TEXT,
|
||||
faq JSONB,
|
||||
part_price TEXT,
|
||||
pokazaniya TEXT,
|
||||
preparation TEXT,
|
||||
protivopokazaniya TEXT,
|
||||
hide_sign_btn JSONB,
|
||||
quiz JSONB,
|
||||
tags JSONB,
|
||||
tags_important JSONB,
|
||||
banner_img TEXT,
|
||||
banner_img_m TEXT,
|
||||
banner_img_url TEXT,
|
||||
clinics JSONB,
|
||||
download_file TEXT,
|
||||
full_width_banner TEXT,
|
||||
staff_up JSONB,
|
||||
advantages JSONB,
|
||||
hide_picture INTEGER,
|
||||
kod_uslug TEXT,
|
||||
link_price TEXT,
|
||||
photos_title TEXT,
|
||||
sale_id JSONB,
|
||||
sort_staff JSONB,
|
||||
contraindications_list TEXT,
|
||||
custom_block_text TEXT,
|
||||
custom_block_text2 TEXT,
|
||||
custom_block_title TEXT,
|
||||
custom_block_title2 TEXT,
|
||||
indications_list TEXT,
|
||||
link_articles_services JSONB,
|
||||
plus_list TEXT,
|
||||
plus_text TEXT,
|
||||
plus_title TEXT,
|
||||
prepare_title TEXT,
|
||||
process_text TEXT,
|
||||
process_title TEXT,
|
||||
services_list TEXT,
|
||||
services_photos JSONB,
|
||||
services_title TEXT,
|
||||
text_up TEXT,
|
||||
training_text TEXT,
|
||||
why_text TEXT,
|
||||
why_title TEXT,
|
||||
link_faq JSONB,
|
||||
link_services JSONB,
|
||||
link_staff JSONB,
|
||||
photos JSONB
|
||||
);
|
||||
|
||||
CREATE TABLE web_get_docinfo (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
source_table VARCHAR(255),
|
||||
doc_name VARCHAR(255),
|
||||
doc_post VARCHAR(255),
|
||||
filial INTEGER,
|
||||
viewinweb BOOLEAN,
|
||||
depnum INTEGER,
|
||||
first_schid INTEGER,
|
||||
second_schid INTEGER,
|
||||
accepts_dms BOOLEAN,
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
updated_at TIMESTAMP DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE idoctor (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
dcode INTEGER,
|
||||
name VARCHAR(255),
|
||||
department INTEGER,
|
||||
filial INTEGER,
|
||||
nearest_date DATE,
|
||||
online_mode BOOLEAN DEFAULT true,
|
||||
updated TIMESTAMP DEFAULT now()
|
||||
);
|
||||
|
||||
INSERT INTO users (uid, email, roles, region_id, password, birth_date)
|
||||
VALUES (100001, md5('local.backend@example.test'), '["ROLE_USER","ROLE_ADMIN"]', 91, '$2y$13$Y98kYF03yQjzDo0HsvvWMu..4SqB3Kgv2d8GNf870MEjJbXUJ2i.a', '1990-01-01');
|
||||
|
||||
INSERT INTO departments (did, name, online_mode, alias, group_name)
|
||||
VALUES (10, 'Терапия', true, 'terapiya', 'Взрослые специалисты');
|
||||
|
||||
INSERT INTO filial (fid, name, address, region_id, site_id, company, short_name, phone, email)
|
||||
VALUES
|
||||
(1, 'Сова Саратов', 'Localhost, 1', 91, 1, 'ООО Local Clinic', 'Саратов', '+70000000001', 'saratov@example.test'),
|
||||
(2, 'Сова Волгоград', 'Localhost, 2', 92, 2, 'ООО Local Clinic', 'Волгоград', '+70000000002', 'volgograd@example.test'),
|
||||
(3, 'Сова Воронеж', 'Localhost, 3', 93, 3, 'ООО Local Clinic', 'Воронеж', '+70000000003', 'voronezh@example.test'),
|
||||
(4, 'Сова Краснодар', 'Localhost, 4', 94, 4, 'ООО Local Clinic', 'Краснодар', '+70000000004', 'krasnodar@example.test');
|
||||
|
||||
INSERT INTO specialist (name, active, display_schedule, dcodes, region_id, alias, post, experience, s_type, anons, content, kodoper, filials, accepts_dms, specialities)
|
||||
VALUES ('Иванов Иван Иванович', true, true, '101', 91, 'ivanov-ivan', 'Врач-терапевт', '2014', 1, 'Тестовый врач', 'Тестовое описание врача', '[1001]', '[1]', true, '["Терапия"]');
|
||||
|
||||
INSERT INTO location (dcode, department, filial, online_mode, active, nearest_date, specialist_id)
|
||||
VALUES (101, 10, 1, true, true, CURRENT_DATE + interval '1 day', 1);
|
||||
|
||||
INSERT INTO review (specialist_id, message, author, rating, source, external_id)
|
||||
VALUES (1, 'Тестовый отзыв для локальной базы', 'Пациент Local', 5, 'local', 1);
|
||||
|
||||
INSERT INTO specialist_docs (specialist_id, name, active, type)
|
||||
VALUES (1, 'Тестовый сертификат', true, 'certificate');
|
||||
|
||||
INSERT INTO specialist_dcode_description (dcode, department, specialist_id, content)
|
||||
VALUES (101, 10, 1, 'Локальное описание врача по dcode.');
|
||||
|
||||
INSERT INTO stock (name, content, anons)
|
||||
VALUES ('Local акция', 'Тестовая акция только для локальной разработки', 'Local');
|
||||
|
||||
INSERT INTO stock_specialist (stock_id, specialist_id) VALUES (1, 1);
|
||||
|
||||
INSERT INTO price_department (name, group_id, doct_count, view_in_web)
|
||||
VALUES ('Консультации', 100, 1, true);
|
||||
|
||||
INSERT INTO price_list (kodoper, schname, specname, speccode, price_info, discprice, structname, fname, filial, group_id)
|
||||
VALUES (1001, 'Прием терапевта', 'Иванов Иван Иванович', 101, '{"base":1500,"discount":1200}', 1200, 'Терапия', 'Сова Local', 1, 100);
|
||||
|
||||
INSERT INTO schedule (dcode, department, filial, schedident, workdate, time, is_free, online_mode, price_info)
|
||||
VALUES (101, 10, 1, 555001, CURRENT_DATE + interval '1 day', '[{"st":"09:00","en":"09:30"}]', true, true, 1500);
|
||||
|
||||
INSERT INTO record (specialist_id, phone, hash, reserve)
|
||||
VALUES (1, '+70000000000', md5('+70000000000'), '{"local":true,"date":"tomorrow"}');
|
||||
|
||||
INSERT INTO alert_sms (record_id, response)
|
||||
VALUES (1, '{"status":"local-ok"}');
|
||||
|
||||
INSERT INTO widget_form (name) VALUES ('Local форма');
|
||||
INSERT INTO widget_form_input (text, type, bitrix24_id, widget_form_id, sort)
|
||||
VALUES ('Телефон', 'phone', 'PHONE', 1, 10);
|
||||
|
||||
INSERT INTO article (name, active, region_id, alias, anons, content)
|
||||
VALUES ('Local статья', true, 91, 'local-article', 'Анонс', 'Контент локальной статьи');
|
||||
|
||||
INSERT INTO disease (name, active, region_id, alias, anons, content)
|
||||
VALUES ('Local заболевание', true, 91, 'local-disease', 'Анонс', 'Описание');
|
||||
|
||||
INSERT INTO medical_center (name, active, region_id, alias, anons, content)
|
||||
VALUES ('Local медцентр', true, 91, 'local-center', 'Анонс', 'Описание');
|
||||
|
||||
INSERT INTO news (name, active, region_id, alias, anons, content)
|
||||
VALUES ('Local новость', true, 91, 'local-news', 'Анонс', 'Контент');
|
||||
|
||||
INSERT INTO promo (name, active, region_id, alias, anons, content, period)
|
||||
VALUES ('Local промо', true, 91, 'local-promo', 'Анонс', 'Контент', 'Всегда');
|
||||
|
||||
INSERT INTO site_services (name, active, region_id, alias, anons, content, tags)
|
||||
VALUES ('Local услуга', true, 91, 'local-service', 'Анонс', 'Контент', '["local"]');
|
||||
|
||||
INSERT INTO web_get_docinfo (source_table, doc_name, doc_post, filial, viewinweb, depnum, accepts_dms, anons, content)
|
||||
VALUES ('local', 'Иванов Иван Иванович', 'Врач-терапевт', 1, true, 10, true, 'Анонс', 'Описание');
|
||||
|
||||
INSERT INTO idoctor (dcode, name, department, filial, nearest_date, online_mode)
|
||||
VALUES (101, 'Иванов Иван Иванович', 10, 1, CURRENT_DATE + interval '1 day', true);
|
||||
|
||||
-- После seed INSERT sequence identity должен указывать на MAX(id), иначе CREATE вернёт duplicate key id=1.
|
||||
DO $body$
|
||||
DECLARE
|
||||
tbl text;
|
||||
BEGIN
|
||||
FOREACH tbl IN ARRAY ARRAY[
|
||||
'users', 'departments', 'filial', 'specialist', 'location', 'review',
|
||||
'specialist_docs', 'specialist_dcode_description', 'stock',
|
||||
'price_department', 'price_list', 'schedule', 'record', 'alert_sms',
|
||||
'widget_form', 'widget_form_input', 'article', 'disease', 'medical_center',
|
||||
'news', 'promo', 'site_services', 'web_get_docinfo', 'idoctor'
|
||||
]
|
||||
LOOP
|
||||
EXECUTE format(
|
||||
'SELECT setval(pg_get_serial_sequence(%L, ''id''), COALESCE((SELECT MAX(id) FROM %I), 1), true)',
|
||||
tbl,
|
||||
tbl
|
||||
);
|
||||
END LOOP;
|
||||
END
|
||||
$body$;
|
||||
@@ -0,0 +1,296 @@
|
||||
\connect sova_cabinet_local
|
||||
|
||||
DROP SCHEMA public CASCADE;
|
||||
CREATE SCHEMA public;
|
||||
GRANT ALL ON SCHEMA public TO sova_local;
|
||||
|
||||
CREATE TABLE users (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
email VARCHAR(180),
|
||||
roles JSONB NOT NULL DEFAULT '[]',
|
||||
password VARCHAR(255),
|
||||
uid INTEGER NOT NULL UNIQUE,
|
||||
token VARCHAR(255),
|
||||
full_name VARCHAR(255) NOT NULL,
|
||||
phone VARCHAR(255),
|
||||
confirm BOOLEAN NOT NULL DEFAULT true,
|
||||
created_at TIMESTAMP DEFAULT now(),
|
||||
last_activity_at TIMESTAMP DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE city (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
region_id INTEGER NOT NULL,
|
||||
time_zone INTEGER NOT NULL DEFAULT 4
|
||||
);
|
||||
|
||||
CREATE TABLE filial (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
fid INTEGER NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
address VARCHAR(255) NOT NULL,
|
||||
address_name VARCHAR(255),
|
||||
site_id INTEGER,
|
||||
city_id INTEGER REFERENCES city(id) ON DELETE SET NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
company VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE banner (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
href VARCHAR(255) NOT NULL,
|
||||
src VARCHAR(255) NOT NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
city_id INTEGER UNIQUE REFERENCES city(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE review_source (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
city_id INTEGER NOT NULL REFERENCES city(id) ON DELETE CASCADE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
count_row INTEGER NOT NULL DEFAULT 0,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
rating DOUBLE PRECISION NOT NULL DEFAULT 5,
|
||||
filial_id INTEGER REFERENCES filial(id) ON DELETE SET NULL,
|
||||
date_create DATE NOT NULL DEFAULT CURRENT_DATE
|
||||
);
|
||||
|
||||
CREATE TABLE category_page (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT true
|
||||
);
|
||||
|
||||
CREATE TABLE page (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
alias VARCHAR(255) NOT NULL,
|
||||
category_id INTEGER NOT NULL REFERENCES category_page(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE department (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
did INTEGER NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
group_name VARCHAR(255) NOT NULL,
|
||||
online_mode BOOLEAN NOT NULL DEFAULT true,
|
||||
alias VARCHAR(255) NOT NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
middle_name VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE price_department (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
group_id INTEGER NOT NULL,
|
||||
group_name VARCHAR(255),
|
||||
doct_count INTEGER DEFAULT 0,
|
||||
view_in_web BOOLEAN DEFAULT true
|
||||
);
|
||||
|
||||
CREATE TABLE price_list_view (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
kodoper INTEGER,
|
||||
schname VARCHAR(255),
|
||||
specname VARCHAR(255),
|
||||
speccode INTEGER,
|
||||
price_info JSONB,
|
||||
discpercent INTEGER,
|
||||
discprice NUMERIC(10,2),
|
||||
structname VARCHAR(255),
|
||||
fname VARCHAR(255),
|
||||
filial INTEGER,
|
||||
comment TEXT,
|
||||
media_id INTEGER,
|
||||
date_update TIMESTAMP DEFAULT now(),
|
||||
group_id INTEGER
|
||||
);
|
||||
|
||||
CREATE TABLE price (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
value NUMERIC(10,2),
|
||||
property_value_id INTEGER,
|
||||
date_update TIMESTAMP DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE specialist_view (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
kinder INTEGER,
|
||||
speciality VARCHAR(255),
|
||||
category VARCHAR(255),
|
||||
experience VARCHAR(255),
|
||||
description TEXT,
|
||||
infoclinica BOOLEAN DEFAULT true,
|
||||
alias VARCHAR(255) NOT NULL,
|
||||
dcode INTEGER NOT NULL,
|
||||
s_type INTEGER,
|
||||
active BOOLEAN DEFAULT true,
|
||||
region_id INTEGER,
|
||||
kodoper JSONB,
|
||||
updated TIMESTAMP DEFAULT now(),
|
||||
accepts_dms BOOLEAN DEFAULT true,
|
||||
degree VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE location_view (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
dcode INTEGER NOT NULL,
|
||||
department INTEGER NOT NULL,
|
||||
filial INTEGER NOT NULL,
|
||||
specialist_id INTEGER NOT NULL,
|
||||
online_mode BOOLEAN NOT NULL DEFAULT true,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
nearest_date DATE
|
||||
);
|
||||
|
||||
CREATE TABLE remote_review (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
external_id INTEGER,
|
||||
specialist_id INTEGER,
|
||||
active BOOLEAN DEFAULT true,
|
||||
date_create DATE DEFAULT CURRENT_DATE,
|
||||
message TEXT,
|
||||
author VARCHAR(255),
|
||||
rating DOUBLE PRECISION DEFAULT 5,
|
||||
source VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE record (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
specialist_id INTEGER NOT NULL,
|
||||
phone VARCHAR(255) NOT NULL,
|
||||
create_at TIMESTAMP NOT NULL DEFAULT now(),
|
||||
hash VARCHAR(255) NOT NULL,
|
||||
reserve JSONB NOT NULL DEFAULT '{}'
|
||||
);
|
||||
|
||||
CREATE TABLE alert_sms (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
record_id INTEGER UNIQUE REFERENCES record(id) ON DELETE CASCADE,
|
||||
date_create TIMESTAMP NOT NULL DEFAULT now(),
|
||||
response TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE widget_form (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE widget_form_input (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
text VARCHAR(255) NOT NULL,
|
||||
type VARCHAR(255) NOT NULL,
|
||||
bitrix24_id VARCHAR(255) NOT NULL,
|
||||
widget_form_id INTEGER REFERENCES widget_form(id) ON DELETE CASCADE,
|
||||
sort INTEGER NOT NULL DEFAULT 100
|
||||
);
|
||||
|
||||
CREATE TABLE usrlog (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
pcode INTEGER,
|
||||
agent TEXT,
|
||||
client_ip VARCHAR(255),
|
||||
method VARCHAR(255),
|
||||
created_at TIMESTAMP DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE direct_company (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
company_id BIGINT,
|
||||
city VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE direct_report (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
date DATE,
|
||||
ad_group_id BIGINT,
|
||||
campaign_id BIGINT,
|
||||
ad_id BIGINT,
|
||||
impressions INTEGER,
|
||||
clicks INTEGER,
|
||||
cost DOUBLE PRECISION,
|
||||
conversions INTEGER
|
||||
);
|
||||
|
||||
INSERT INTO users (email, roles, password, uid, token, full_name, phone, confirm)
|
||||
VALUES (
|
||||
'6c6f63616c2e636162696e6574406578616d706c652e74657374',
|
||||
'["ROLE_USER","ROLE_ADMIN"]',
|
||||
'$2y$12$hqHoZsKN01W.IBcfZYRf.OygGbGIMM7RW0M8fZxo.DNjswjj07S2u',
|
||||
200001,
|
||||
'Yjd4N6Xlvfay4sNPfPf6PBeosTdmpfCl6+xg9a9V7BnHmfocaw6YSD4NF6Vrvqrm9+nwzNsm5KzpoFV23nG8Lw==',
|
||||
'qpHB5XVk6VcuthTcmGV7zqBFN805ejONu+ciwz5nwC4AyEjJ0oH7Ci5ISfgpvwbn2NhLHyTA5tCnN2jd4qQogQ==',
|
||||
'2I/vmVgNZC98ben0LPkqxmZX1oiAP/k+aXCn3+/dxTBCPBlN7VLR9uiSoWcOuxeBi2rAzfl9t1N1b/PJkJO6MQ==',
|
||||
true
|
||||
);
|
||||
|
||||
INSERT INTO city (name, region_id, time_zone)
|
||||
VALUES
|
||||
('Саратов Local', 91, 4),
|
||||
('Волгоград Local', 92, 3),
|
||||
('Воронеж Local', 93, 3),
|
||||
('Краснодар Local', 94, 3);
|
||||
|
||||
INSERT INTO filial (fid, name, address, address_name, site_id, city_id, company)
|
||||
VALUES
|
||||
(1, 'Сова Саратов', 'Localhost, 1', 'Саратов', 1, 1, 'ООО Local Clinic'),
|
||||
(2, 'Сова Волгоград', 'Localhost, 2', 'Волгоград', 2, 2, 'ООО Local Clinic'),
|
||||
(3, 'Сова Воронеж', 'Localhost, 3', 'Воронеж', 3, 3, 'ООО Local Clinic'),
|
||||
(4, 'Сова Краснодар', 'Localhost, 4', 'Краснодар', 4, 4, 'ООО Local Clinic');
|
||||
|
||||
INSERT INTO banner (href, src, city_id)
|
||||
VALUES ('http://localhost:8082', '/banners/local.png', 1);
|
||||
|
||||
INSERT INTO review_source (city_id, name, count_row, rating, filial_id)
|
||||
VALUES (1, 'Local Reviews', 1, 5, 1);
|
||||
|
||||
INSERT INTO category_page (name, active) VALUES ('Local категория', true);
|
||||
INSERT INTO page (name, description, active, alias, category_id)
|
||||
VALUES ('Local страница', 'Контент локальной страницы', true, 'local-page', 1);
|
||||
|
||||
INSERT INTO department (did, name, group_name, online_mode, alias, middle_name)
|
||||
VALUES (10, 'Терапия', 'Взрослые специалисты', true, 'terapiya', 'терапевта');
|
||||
|
||||
INSERT INTO price_department (name, group_id, group_name, doct_count, view_in_web)
|
||||
VALUES ('Консультации', 100, 'Врачи', 1, true);
|
||||
|
||||
INSERT INTO specialist_view (name, kinder, speciality, category, experience, description, alias, dcode, s_type, active, region_id, kodoper, accepts_dms, degree)
|
||||
VALUES ('Иванов Иван Иванович', 0, 'Терапевт', 'Первая категория', '12', 'Локальный врач', 'ivanov-ivan', 101, 1, true, 91, '[1001]', true, 'к.м.н.');
|
||||
|
||||
INSERT INTO location_view (dcode, department, filial, specialist_id, online_mode, active, nearest_date)
|
||||
VALUES (101, 10, 1, 1, true, true, CURRENT_DATE + interval '1 day');
|
||||
|
||||
INSERT INTO price_list_view (kodoper, schname, specname, speccode, price_info, discpercent, discprice, structname, fname, filial, group_id)
|
||||
VALUES (1001, 'Прием терапевта', 'Иванов Иван Иванович', 101, '{"base":1500,"discount":1200}', 10, 1200, 'Терапия', 'Сова Local', 1, 100);
|
||||
|
||||
INSERT INTO remote_review (external_id, specialist_id, message, author, rating, source)
|
||||
VALUES (1, 1, 'Тестовый отзыв для локальной базы', 'Пациент Local', 5, 'local');
|
||||
|
||||
INSERT INTO record (specialist_id, phone, hash, reserve)
|
||||
VALUES (1, '+70000000000', md5('+70000000000'), '{"local":true}');
|
||||
|
||||
INSERT INTO alert_sms (record_id, response)
|
||||
VALUES (1, '{"status":"local-ok"}');
|
||||
|
||||
INSERT INTO widget_form (id, name) OVERRIDING SYSTEM VALUE VALUES
|
||||
(1, 'Local форма'),
|
||||
(2, 'Вызов врача на дом');
|
||||
|
||||
INSERT INTO widget_form_input (text, type, bitrix24_id, widget_form_id, sort) VALUES
|
||||
('Телефон', 'phone', 'PHONE', 1, 10),
|
||||
('ФИО пациента', 'text', 'NAME', 2, 10),
|
||||
('Телефон', 'phone', 'PHONE', 2, 20),
|
||||
('Адрес выезда', 'text', 'ADDRESS', 2, 30),
|
||||
('Комментарий / симптомы', 'textarea', 'COMMENTS', 2, 40);
|
||||
|
||||
SELECT setval(pg_get_serial_sequence('widget_form', 'id'), (SELECT MAX(id) FROM widget_form));
|
||||
SELECT setval(pg_get_serial_sequence('widget_form_input', 'id'), (SELECT MAX(id) FROM widget_form_input));
|
||||
|
||||
INSERT INTO usrlog (pcode, agent, client_ip, method)
|
||||
VALUES (200001, 'local-agent', '127.0.0.1', 'seed');
|
||||
@@ -0,0 +1,19 @@
|
||||
apiVersion: v2
|
||||
name: sova-data-test
|
||||
description: PostgreSQL, MySQL Bitrix, Redis for test
|
||||
type: application
|
||||
version: 0.1.0
|
||||
|
||||
dependencies:
|
||||
- name: postgresql
|
||||
version: 15.5.38
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
condition: postgresql.enabled
|
||||
- name: mysql
|
||||
version: 11.4.4
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
condition: mysql.enabled
|
||||
- name: redis
|
||||
version: 20.6.3
|
||||
repository: https://charts.bitnami.com/bitnami
|
||||
condition: redis.enabled
|
||||
@@ -0,0 +1,44 @@
|
||||
DROP TABLE IF EXISTS b_iblock_element_property;
|
||||
DROP TABLE IF EXISTS b_iblock_property;
|
||||
DROP TABLE IF EXISTS b_iblock_element;
|
||||
DROP TABLE IF EXISTS b_file;
|
||||
|
||||
CREATE TABLE b_file (
|
||||
ID INT PRIMARY KEY,
|
||||
SUBDIR VARCHAR(255),
|
||||
FILE_NAME VARCHAR(255)
|
||||
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE b_iblock_element (
|
||||
ID INT PRIMARY KEY,
|
||||
IBLOCK_ID INT,
|
||||
IBLOCK_SECTION_ID INT NULL,
|
||||
WF_PARENT_ELEMENT_ID INT NULL,
|
||||
XML_ID VARCHAR(255) NULL,
|
||||
NAME VARCHAR(255),
|
||||
ACTIVE CHAR(1) DEFAULT 'Y',
|
||||
CODE VARCHAR(255),
|
||||
PREVIEW_PICTURE INT NULL,
|
||||
PREVIEW_TEXT TEXT,
|
||||
DETAIL_TEXT TEXT,
|
||||
DATE_CREATE DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
TIMESTAMP_X DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE b_iblock_property (
|
||||
ID INT PRIMARY KEY,
|
||||
IBLOCK_ID INT,
|
||||
NAME VARCHAR(255),
|
||||
CODE VARCHAR(255),
|
||||
ACTIVE CHAR(1) DEFAULT 'Y'
|
||||
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE b_iblock_element_property (
|
||||
ID INT PRIMARY KEY AUTO_INCREMENT,
|
||||
IBLOCK_PROPERTY_ID INT,
|
||||
IBLOCK_ELEMENT_ID INT,
|
||||
VALUE TEXT,
|
||||
INDEX idx_element (IBLOCK_ELEMENT_ID),
|
||||
INDEX idx_property (IBLOCK_PROPERTY_ID)
|
||||
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
INSERT INTO b_file (ID, SUBDIR, FILE_NAME)
|
||||
VALUES (1, 'local', 'doctor.png');
|
||||
|
||||
INSERT INTO b_iblock_element (ID, IBLOCK_ID, XML_ID, NAME, ACTIVE, CODE, PREVIEW_PICTURE, PREVIEW_TEXT, DETAIL_TEXT)
|
||||
VALUES
|
||||
(1001, 91, '101', 'Иванов Иван Иванович', 'Y', 'ivanov-ivan', 1, 'Тестовый врач Bitrix', 'Локальное описание врача из Bitrix'),
|
||||
(2001, 91, 'review-1', 'Local review', 'Y', 'local-review', NULL, 'Отзыв', 'Отзыв из локального Bitrix');
|
||||
|
||||
INSERT INTO b_iblock_property (ID, IBLOCK_ID, NAME, CODE, ACTIVE)
|
||||
VALUES
|
||||
(1, 91, 'Связанный врач', 'MEDIC', 'Y'),
|
||||
(2, 91, 'Текст отзыва', 'MESSAGE', 'Y'),
|
||||
(3, 91, 'Код услуги', 'KOD', 'Y'),
|
||||
(4, 91, 'Отзывы', 'LINK_REVIEWS', 'Y'),
|
||||
(5, 91, 'Прайс', 'LINK_PRICE_1', 'Y');
|
||||
|
||||
INSERT INTO b_iblock_element_property (IBLOCK_PROPERTY_ID, IBLOCK_ELEMENT_ID, VALUE)
|
||||
VALUES
|
||||
(1, 2001, '1001'),
|
||||
(2, 2001, 'Локальный отзыв из Bitrix'),
|
||||
(3, 1001, '1001'),
|
||||
(4, 1001, '2001'),
|
||||
(5, 1001, '1001');
|
||||
@@ -0,0 +1,2 @@
|
||||
SELECT 'CREATE DATABASE sova_cabinet_test OWNER sova_test'
|
||||
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'sova_cabinet_test')\gexec
|
||||
@@ -0,0 +1,412 @@
|
||||
\connect sova_backend_test
|
||||
|
||||
DROP SCHEMA public CASCADE;
|
||||
CREATE SCHEMA public;
|
||||
GRANT ALL ON SCHEMA public TO sova_test;
|
||||
|
||||
CREATE TABLE users (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
uid INTEGER NOT NULL UNIQUE,
|
||||
email VARCHAR(180),
|
||||
roles JSONB NOT NULL DEFAULT '[]',
|
||||
region_id INTEGER NOT NULL DEFAULT 91,
|
||||
password VARCHAR(255) NOT NULL,
|
||||
birth_date DATE,
|
||||
logged_in TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE TABLE departments (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
did BIGINT NOT NULL UNIQUE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
online_mode BOOLEAN NOT NULL DEFAULT true,
|
||||
alias VARCHAR(255) NOT NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
group_name VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE filial (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
fid INTEGER NOT NULL UNIQUE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
address VARCHAR(255),
|
||||
region_id INTEGER,
|
||||
site_id INTEGER,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
company VARCHAR(255),
|
||||
short_name VARCHAR(255),
|
||||
phone VARCHAR(255),
|
||||
policy TEXT,
|
||||
picture VARCHAR(255),
|
||||
email VARCHAR(255),
|
||||
origin VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE specialist (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
preview_picture VARCHAR(255),
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
display_schedule BOOLEAN NOT NULL DEFAULT true,
|
||||
dcodes VARCHAR(255),
|
||||
region_id INTEGER,
|
||||
alias VARCHAR(255) NOT NULL,
|
||||
post VARCHAR(255),
|
||||
experience VARCHAR(255),
|
||||
s_type INTEGER,
|
||||
update_at TIMESTAMP NOT NULL DEFAULT now(),
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
tags JSONB,
|
||||
highlighted_tags JSONB,
|
||||
video VARCHAR(255),
|
||||
video_vertical VARCHAR(255),
|
||||
schedule_text VARCHAR(255),
|
||||
category VARCHAR(255),
|
||||
patient_age INTEGER,
|
||||
kodoper JSONB,
|
||||
only_online_mode BOOLEAN,
|
||||
prodoctor BOOLEAN,
|
||||
prodoctor_text VARCHAR(255),
|
||||
prodoctor_link VARCHAR(255),
|
||||
degree VARCHAR(255),
|
||||
kiosk BOOLEAN NOT NULL DEFAULT false,
|
||||
filials JSONB,
|
||||
accepts_dms BOOLEAN,
|
||||
specialities JSONB
|
||||
);
|
||||
|
||||
CREATE TABLE location (
|
||||
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
dcode BIGINT,
|
||||
department BIGINT NOT NULL,
|
||||
filial INTEGER NOT NULL,
|
||||
online_mode BOOLEAN NOT NULL DEFAULT true,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
nearest_date DATE,
|
||||
specialist_id INTEGER REFERENCES specialist(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE review (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
specialist_id INTEGER REFERENCES specialist(id) ON DELETE CASCADE,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
date_create DATE NOT NULL DEFAULT CURRENT_DATE,
|
||||
message TEXT NOT NULL,
|
||||
author VARCHAR(255) NOT NULL,
|
||||
rating DOUBLE PRECISION NOT NULL DEFAULT 5,
|
||||
source VARCHAR(255),
|
||||
external_id INTEGER
|
||||
);
|
||||
|
||||
CREATE TABLE specialist_docs (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
specialist_id INTEGER REFERENCES specialist(id) ON DELETE CASCADE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
description VARCHAR(255),
|
||||
picture VARCHAR(255),
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
type VARCHAR(255) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE specialist_dcode_description (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
dcode BIGINT NOT NULL,
|
||||
department BIGINT,
|
||||
specialist_id INTEGER NOT NULL REFERENCES specialist(id) ON DELETE CASCADE,
|
||||
content TEXT NOT NULL,
|
||||
create_at TIMESTAMP NOT NULL DEFAULT now(),
|
||||
update_at TIMESTAMP NOT NULL DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE stock (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
picture VARCHAR(255),
|
||||
anons TEXT,
|
||||
start_date TIMESTAMP NOT NULL DEFAULT now(),
|
||||
end_date TIMESTAMP NOT NULL DEFAULT now() + interval '30 days'
|
||||
);
|
||||
|
||||
CREATE TABLE stock_specialist (
|
||||
stock_id INTEGER NOT NULL REFERENCES stock(id) ON DELETE CASCADE,
|
||||
specialist_id INTEGER NOT NULL REFERENCES specialist(id) ON DELETE CASCADE,
|
||||
PRIMARY KEY (stock_id, specialist_id)
|
||||
);
|
||||
|
||||
CREATE TABLE price_department (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
group_id INTEGER NOT NULL,
|
||||
doct_count INTEGER DEFAULT 0,
|
||||
view_in_web BOOLEAN DEFAULT true
|
||||
);
|
||||
|
||||
CREATE TABLE price_list (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
kodoper INTEGER,
|
||||
schname VARCHAR(255),
|
||||
specname VARCHAR(255),
|
||||
speccode INTEGER,
|
||||
price_info JSONB,
|
||||
discprice NUMERIC(10,2),
|
||||
structname VARCHAR(255),
|
||||
fname VARCHAR(255),
|
||||
filial INTEGER,
|
||||
comment TEXT,
|
||||
media_id INTEGER,
|
||||
date_update TIMESTAMP DEFAULT now(),
|
||||
group_id INTEGER,
|
||||
discpercent INTEGER
|
||||
);
|
||||
|
||||
CREATE TABLE schedule (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
dcode BIGINT,
|
||||
department BIGINT,
|
||||
filial INTEGER,
|
||||
schedident BIGINT,
|
||||
workdate DATE,
|
||||
rnum VARCHAR(255),
|
||||
rfloor VARCHAR(255),
|
||||
rbuilding VARCHAR(255),
|
||||
time JSONB,
|
||||
is_free BOOLEAN DEFAULT true,
|
||||
online_mode BOOLEAN DEFAULT false,
|
||||
query_string TEXT,
|
||||
created_at TIMESTAMP DEFAULT now(),
|
||||
interval_is_free BOOLEAN DEFAULT true,
|
||||
price_info NUMERIC(10,2)
|
||||
);
|
||||
|
||||
CREATE TABLE record (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
specialist_id INTEGER NOT NULL,
|
||||
phone VARCHAR(255) NOT NULL,
|
||||
create_at TIMESTAMP NOT NULL DEFAULT now(),
|
||||
hash VARCHAR(255) NOT NULL,
|
||||
reserve JSONB NOT NULL DEFAULT '{}'
|
||||
);
|
||||
|
||||
CREATE TABLE alert_sms (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
record_id INTEGER UNIQUE REFERENCES record(id) ON DELETE CASCADE,
|
||||
date_create TIMESTAMP NOT NULL DEFAULT now(),
|
||||
response TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE widget_form (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE widget_form_input (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
text VARCHAR(255) NOT NULL,
|
||||
type VARCHAR(255) NOT NULL,
|
||||
bitrix24_id VARCHAR(255) NOT NULL,
|
||||
widget_form_id INTEGER NOT NULL REFERENCES widget_form(id) ON DELETE CASCADE,
|
||||
sort INTEGER NOT NULL DEFAULT 100
|
||||
);
|
||||
|
||||
CREATE TABLE article (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name TEXT,
|
||||
preview_picture TEXT,
|
||||
active BOOLEAN DEFAULT true,
|
||||
doctors JSONB,
|
||||
services JSONB,
|
||||
region_id INTEGER,
|
||||
alias TEXT,
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
update_at TIMESTAMP DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE disease (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
preview_picture VARCHAR(255),
|
||||
active BOOLEAN DEFAULT true,
|
||||
region_id INTEGER,
|
||||
alias VARCHAR(255),
|
||||
anons TEXT,
|
||||
update_at TIMESTAMP DEFAULT now(),
|
||||
hide_picture BOOLEAN,
|
||||
read_time TEXT,
|
||||
diseases_name TEXT,
|
||||
tags_important JSONB,
|
||||
tags JSONB,
|
||||
diseases_other_name TEXT,
|
||||
symptom TEXT,
|
||||
staff TEXT,
|
||||
link_services JSONB,
|
||||
staff_list JSONB,
|
||||
staff_post JSONB,
|
||||
staff_post_exclude JSONB,
|
||||
link_faq JSONB,
|
||||
bibliography TEXT,
|
||||
staff_check JSONB,
|
||||
content TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE medical_center (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
active BOOLEAN DEFAULT true,
|
||||
region_id INTEGER,
|
||||
alias VARCHAR(255),
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
update_at TIMESTAMP DEFAULT now(),
|
||||
kod_uslug JSONB,
|
||||
doctors JSONB,
|
||||
services JSONB,
|
||||
articles JSONB,
|
||||
txt_up JSONB,
|
||||
main_link_staff TEXT,
|
||||
contraindications JSONB,
|
||||
hide_picture INTEGER,
|
||||
indications JSONB,
|
||||
link_sale JSONB,
|
||||
plus_list JSONB,
|
||||
plus_text TEXT,
|
||||
plus_title TEXT,
|
||||
process_text TEXT,
|
||||
process_title TEXT,
|
||||
services_list JSONB,
|
||||
services_photos JSONB,
|
||||
services_title TEXT,
|
||||
sort_staff JSONB,
|
||||
training_text TEXT,
|
||||
training_text_title TEXT,
|
||||
why_text TEXT,
|
||||
why_title TEXT
|
||||
);
|
||||
|
||||
CREATE TABLE news (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
active BOOLEAN DEFAULT true,
|
||||
region_id INTEGER,
|
||||
alias VARCHAR(255),
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
update_at TIMESTAMP DEFAULT now(),
|
||||
link_el_price TEXT,
|
||||
short_name TEXT,
|
||||
timer TEXT,
|
||||
timer_bg TEXT,
|
||||
form_order JSONB,
|
||||
link_services JSONB,
|
||||
link_staff JSONB,
|
||||
photos JSONB
|
||||
);
|
||||
|
||||
CREATE TABLE promo (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
active BOOLEAN DEFAULT true,
|
||||
region_id INTEGER,
|
||||
alias VARCHAR(255),
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
update_at TIMESTAMP DEFAULT now(),
|
||||
clinics JSONB,
|
||||
timer TEXT,
|
||||
timer_bg TEXT,
|
||||
short_name TEXT,
|
||||
link_services JSONB,
|
||||
link_staff JSONB,
|
||||
period VARCHAR(255),
|
||||
photos JSONB
|
||||
);
|
||||
|
||||
CREATE TABLE site_services (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
active BOOLEAN DEFAULT true,
|
||||
region_id INTEGER,
|
||||
alias VARCHAR(255),
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
update_at TIMESTAMP DEFAULT now(),
|
||||
link_videoreviews JSONB,
|
||||
preview_img TEXT,
|
||||
faq JSONB,
|
||||
part_price TEXT,
|
||||
pokazaniya TEXT,
|
||||
preparation TEXT,
|
||||
protivopokazaniya TEXT,
|
||||
hide_sign_btn JSONB,
|
||||
quiz JSONB,
|
||||
tags JSONB,
|
||||
tags_important JSONB,
|
||||
banner_img TEXT,
|
||||
banner_img_m TEXT,
|
||||
banner_img_url TEXT,
|
||||
clinics JSONB,
|
||||
download_file TEXT,
|
||||
full_width_banner TEXT,
|
||||
staff_up JSONB,
|
||||
advantages JSONB,
|
||||
hide_picture INTEGER,
|
||||
kod_uslug TEXT,
|
||||
link_price TEXT,
|
||||
photos_title TEXT,
|
||||
sale_id JSONB,
|
||||
sort_staff JSONB,
|
||||
contraindications_list TEXT,
|
||||
custom_block_text TEXT,
|
||||
custom_block_text2 TEXT,
|
||||
custom_block_title TEXT,
|
||||
custom_block_title2 TEXT,
|
||||
indications_list TEXT,
|
||||
link_articles_services JSONB,
|
||||
plus_list TEXT,
|
||||
plus_text TEXT,
|
||||
plus_title TEXT,
|
||||
prepare_title TEXT,
|
||||
process_text TEXT,
|
||||
process_title TEXT,
|
||||
services_list TEXT,
|
||||
services_photos JSONB,
|
||||
services_title TEXT,
|
||||
text_up TEXT,
|
||||
training_text TEXT,
|
||||
why_text TEXT,
|
||||
why_title TEXT,
|
||||
link_faq JSONB,
|
||||
link_services JSONB,
|
||||
link_staff JSONB,
|
||||
photos JSONB
|
||||
);
|
||||
|
||||
CREATE TABLE web_get_docinfo (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
source_table VARCHAR(255),
|
||||
doc_name VARCHAR(255),
|
||||
doc_post VARCHAR(255),
|
||||
filial INTEGER,
|
||||
viewinweb BOOLEAN,
|
||||
depnum INTEGER,
|
||||
first_schid INTEGER,
|
||||
second_schid INTEGER,
|
||||
accepts_dms BOOLEAN,
|
||||
anons TEXT,
|
||||
content TEXT,
|
||||
updated_at TIMESTAMP DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE idoctor (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
dcode INTEGER,
|
||||
name VARCHAR(255),
|
||||
department INTEGER,
|
||||
filial INTEGER,
|
||||
nearest_date DATE,
|
||||
online_mode BOOLEAN DEFAULT true,
|
||||
updated TIMESTAMP DEFAULT now()
|
||||
);
|
||||
|
||||
@@ -0,0 +1,220 @@
|
||||
\connect sova_cabinet_test
|
||||
|
||||
DROP SCHEMA public CASCADE;
|
||||
CREATE SCHEMA public;
|
||||
GRANT ALL ON SCHEMA public TO sova_test;
|
||||
|
||||
CREATE TABLE users (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
email VARCHAR(180),
|
||||
roles JSONB NOT NULL DEFAULT '[]',
|
||||
password VARCHAR(255),
|
||||
uid INTEGER NOT NULL UNIQUE,
|
||||
token VARCHAR(255),
|
||||
full_name VARCHAR(255) NOT NULL,
|
||||
phone VARCHAR(255),
|
||||
confirm BOOLEAN NOT NULL DEFAULT true,
|
||||
created_at TIMESTAMP DEFAULT now(),
|
||||
last_activity_at TIMESTAMP DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE city (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
region_id INTEGER NOT NULL,
|
||||
time_zone INTEGER NOT NULL DEFAULT 4
|
||||
);
|
||||
|
||||
CREATE TABLE filial (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
fid INTEGER NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
address VARCHAR(255) NOT NULL,
|
||||
address_name VARCHAR(255),
|
||||
site_id INTEGER,
|
||||
city_id INTEGER REFERENCES city(id) ON DELETE SET NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
company VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE banner (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
href VARCHAR(255) NOT NULL,
|
||||
src VARCHAR(255) NOT NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
city_id INTEGER UNIQUE REFERENCES city(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE review_source (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
city_id INTEGER NOT NULL REFERENCES city(id) ON DELETE CASCADE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
count_row INTEGER NOT NULL DEFAULT 0,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
rating DOUBLE PRECISION NOT NULL DEFAULT 5,
|
||||
filial_id INTEGER REFERENCES filial(id) ON DELETE SET NULL,
|
||||
date_create DATE NOT NULL DEFAULT CURRENT_DATE
|
||||
);
|
||||
|
||||
CREATE TABLE category_page (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT true
|
||||
);
|
||||
|
||||
CREATE TABLE page (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
description TEXT NOT NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
alias VARCHAR(255) NOT NULL,
|
||||
category_id INTEGER NOT NULL REFERENCES category_page(id) ON DELETE CASCADE
|
||||
);
|
||||
|
||||
CREATE TABLE department (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
did INTEGER NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
group_name VARCHAR(255) NOT NULL,
|
||||
online_mode BOOLEAN NOT NULL DEFAULT true,
|
||||
alias VARCHAR(255) NOT NULL,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
middle_name VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE price_department (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
group_id INTEGER NOT NULL,
|
||||
group_name VARCHAR(255),
|
||||
doct_count INTEGER DEFAULT 0,
|
||||
view_in_web BOOLEAN DEFAULT true
|
||||
);
|
||||
|
||||
CREATE TABLE price_list_view (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
kodoper INTEGER,
|
||||
schname VARCHAR(255),
|
||||
specname VARCHAR(255),
|
||||
speccode INTEGER,
|
||||
price_info JSONB,
|
||||
discpercent INTEGER,
|
||||
discprice NUMERIC(10,2),
|
||||
structname VARCHAR(255),
|
||||
fname VARCHAR(255),
|
||||
filial INTEGER,
|
||||
comment TEXT,
|
||||
media_id INTEGER,
|
||||
date_update TIMESTAMP DEFAULT now(),
|
||||
group_id INTEGER
|
||||
);
|
||||
|
||||
CREATE TABLE price (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
value NUMERIC(10,2),
|
||||
property_value_id INTEGER,
|
||||
date_update TIMESTAMP DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE specialist_view (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
kinder INTEGER,
|
||||
speciality VARCHAR(255),
|
||||
category VARCHAR(255),
|
||||
experience VARCHAR(255),
|
||||
description TEXT,
|
||||
infoclinica BOOLEAN DEFAULT true,
|
||||
alias VARCHAR(255) NOT NULL,
|
||||
dcode INTEGER NOT NULL,
|
||||
s_type INTEGER,
|
||||
active BOOLEAN DEFAULT true,
|
||||
region_id INTEGER,
|
||||
kodoper JSONB,
|
||||
updated TIMESTAMP DEFAULT now(),
|
||||
accepts_dms BOOLEAN DEFAULT true,
|
||||
degree VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE location_view (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
dcode INTEGER NOT NULL,
|
||||
department INTEGER NOT NULL,
|
||||
filial INTEGER NOT NULL,
|
||||
specialist_id INTEGER NOT NULL,
|
||||
online_mode BOOLEAN NOT NULL DEFAULT true,
|
||||
active BOOLEAN NOT NULL DEFAULT true,
|
||||
nearest_date DATE
|
||||
);
|
||||
|
||||
CREATE TABLE remote_review (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
external_id INTEGER,
|
||||
specialist_id INTEGER,
|
||||
active BOOLEAN DEFAULT true,
|
||||
date_create DATE DEFAULT CURRENT_DATE,
|
||||
message TEXT,
|
||||
author VARCHAR(255),
|
||||
rating DOUBLE PRECISION DEFAULT 5,
|
||||
source VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE record (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
specialist_id INTEGER NOT NULL,
|
||||
phone VARCHAR(255) NOT NULL,
|
||||
create_at TIMESTAMP NOT NULL DEFAULT now(),
|
||||
hash VARCHAR(255) NOT NULL,
|
||||
reserve JSONB NOT NULL DEFAULT '{}'
|
||||
);
|
||||
|
||||
CREATE TABLE alert_sms (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
record_id INTEGER UNIQUE REFERENCES record(id) ON DELETE CASCADE,
|
||||
date_create TIMESTAMP NOT NULL DEFAULT now(),
|
||||
response TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE widget_form (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE widget_form_input (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
text VARCHAR(255) NOT NULL,
|
||||
type VARCHAR(255) NOT NULL,
|
||||
bitrix24_id VARCHAR(255) NOT NULL,
|
||||
widget_form_id INTEGER REFERENCES widget_form(id) ON DELETE CASCADE,
|
||||
sort INTEGER NOT NULL DEFAULT 100
|
||||
);
|
||||
|
||||
CREATE TABLE usrlog (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
pcode INTEGER,
|
||||
agent TEXT,
|
||||
client_ip VARCHAR(255),
|
||||
method VARCHAR(255),
|
||||
created_at TIMESTAMP DEFAULT now()
|
||||
);
|
||||
|
||||
CREATE TABLE direct_company (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
company_id BIGINT,
|
||||
city VARCHAR(255)
|
||||
);
|
||||
|
||||
CREATE TABLE direct_report (
|
||||
id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
||||
date DATE,
|
||||
ad_group_id BIGINT,
|
||||
campaign_id BIGINT,
|
||||
ad_id BIGINT,
|
||||
impressions INTEGER,
|
||||
clicks INTEGER,
|
||||
cost DOUBLE PRECISION,
|
||||
conversions INTEGER
|
||||
);
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
\connect sova_backend_test
|
||||
|
||||
INSERT INTO users (uid, email, roles, region_id, password, birth_date)
|
||||
VALUES (100001, '8e6ec50bec697ce8e2663b4790264408', '["ROLE_USER","ROLE_ADMIN"]', 91, '$2y$13$Y98kYF03yQjzDo0HsvvWMu..4SqB3Kgv2d8GNf870MEjJbXUJ2i.a', '1990-01-01');
|
||||
|
||||
INSERT INTO departments (did, name, online_mode, alias, group_name)
|
||||
VALUES (10, 'Терапия', true, 'terapiya', 'Взрослые специалисты');
|
||||
|
||||
INSERT INTO filial (fid, name, address, region_id, site_id, company, short_name, phone, email)
|
||||
VALUES
|
||||
(1, 'Сова Саратов', 'Localhost, 1', 91, 1, 'ООО Local Clinic', 'Саратов', '+70000000001', 'saratov@example.test'),
|
||||
(2, 'Сова Волгоград', 'Localhost, 2', 92, 2, 'ООО Local Clinic', 'Волгоград', '+70000000002', 'volgograd@example.test'),
|
||||
(3, 'Сова Воронеж', 'Localhost, 3', 93, 3, 'ООО Local Clinic', 'Воронеж', '+70000000003', 'voronezh@example.test'),
|
||||
(4, 'Сова Краснодар', 'Localhost, 4', 94, 4, 'ООО Local Clinic', 'Краснодар', '+70000000004', 'krasnodar@example.test');
|
||||
|
||||
INSERT INTO specialist (name, active, display_schedule, dcodes, region_id, alias, post, experience, s_type, anons, content, kodoper, filials, accepts_dms, specialities)
|
||||
VALUES ('Иванов Иван Иванович', true, true, '101', 91, 'ivanov-ivan', 'Врач-терапевт', '2014', 1, 'Тестовый врач', 'Тестовое описание врача', '[1001]', '[1]', true, '["Терапия"]');
|
||||
|
||||
INSERT INTO location (dcode, department, filial, online_mode, active, nearest_date, specialist_id)
|
||||
VALUES (101, 10, 1, true, true, CURRENT_DATE + interval '1 day', 1);
|
||||
|
||||
INSERT INTO review (specialist_id, message, author, rating, source, external_id)
|
||||
VALUES (1, 'Тестовый отзыв для локальной базы', 'Пациент Local', 5, 'local', 1);
|
||||
|
||||
INSERT INTO specialist_docs (specialist_id, name, active, type)
|
||||
VALUES (1, 'Тестовый сертификат', true, 'certificate');
|
||||
|
||||
INSERT INTO specialist_dcode_description (dcode, department, specialist_id, content)
|
||||
VALUES (101, 10, 1, 'Локальное описание врача по dcode.');
|
||||
|
||||
INSERT INTO stock (name, content, anons)
|
||||
VALUES ('Local акция', 'Тестовая акция только для локальной разработки', 'Local');
|
||||
|
||||
INSERT INTO stock_specialist (stock_id, specialist_id) VALUES (1, 1);
|
||||
|
||||
INSERT INTO price_department (name, group_id, doct_count, view_in_web)
|
||||
VALUES ('Консультации', 100, 1, true);
|
||||
|
||||
INSERT INTO price_list (kodoper, schname, specname, speccode, price_info, discprice, structname, fname, filial, group_id)
|
||||
VALUES (1001, 'Прием терапевта', 'Иванов Иван Иванович', 101, '{"base":1500,"discount":1200}', 1200, 'Терапия', 'Сова Local', 1, 100);
|
||||
|
||||
INSERT INTO schedule (dcode, department, filial, schedident, workdate, time, is_free, online_mode, price_info)
|
||||
VALUES (101, 10, 1, 555001, CURRENT_DATE + interval '1 day', '[{"st":"09:00","en":"09:30"}]', true, true, 1500);
|
||||
|
||||
INSERT INTO record (specialist_id, phone, hash, reserve)
|
||||
VALUES (1, '+70000000000', 'c2018e2ee0f7d39af2c8f696e7003424', '{"local":true,"date":"tomorrow"}');
|
||||
|
||||
INSERT INTO alert_sms (record_id, response)
|
||||
VALUES (1, '{"status":"local-ok"}');
|
||||
|
||||
INSERT INTO widget_form (name) VALUES ('Local форма');
|
||||
INSERT INTO widget_form_input (text, type, bitrix24_id, widget_form_id, sort)
|
||||
VALUES ('Телефон', 'phone', 'PHONE', 1, 10);
|
||||
|
||||
INSERT INTO article (name, active, region_id, alias, anons, content)
|
||||
VALUES ('Local статья', true, 91, 'local-article', 'Анонс', 'Контент локальной статьи');
|
||||
|
||||
INSERT INTO disease (name, active, region_id, alias, anons, content)
|
||||
VALUES ('Local заболевание', true, 91, 'local-disease', 'Анонс', 'Описание');
|
||||
|
||||
INSERT INTO medical_center (name, active, region_id, alias, anons, content)
|
||||
VALUES ('Local медцентр', true, 91, 'local-center', 'Анонс', 'Описание');
|
||||
|
||||
INSERT INTO news (name, active, region_id, alias, anons, content)
|
||||
VALUES ('Local новость', true, 91, 'local-news', 'Анонс', 'Контент');
|
||||
|
||||
INSERT INTO promo (name, active, region_id, alias, anons, content, period)
|
||||
VALUES ('Local промо', true, 91, 'local-promo', 'Анонс', 'Контент', 'Всегда');
|
||||
|
||||
INSERT INTO site_services (name, active, region_id, alias, anons, content, tags)
|
||||
VALUES ('Local услуга', true, 91, 'local-service', 'Анонс', 'Контент', '["local"]');
|
||||
|
||||
INSERT INTO web_get_docinfo (source_table, doc_name, doc_post, filial, viewinweb, depnum, accepts_dms, anons, content)
|
||||
VALUES ('local', 'Иванов Иван Иванович', 'Врач-терапевт', 1, true, 10, true, 'Анонс', 'Описание');
|
||||
|
||||
INSERT INTO idoctor (dcode, name, department, filial, nearest_date, online_mode)
|
||||
VALUES (101, 'Иванов Иван Иванович', 10, 1, CURRENT_DATE + interval '1 day', true);
|
||||
|
||||
-- После seed INSERT sequence identity должен указывать на MAX(id), иначе CREATE вернёт duplicate key id=1.
|
||||
DO $body$
|
||||
DECLARE
|
||||
tbl text;
|
||||
BEGIN
|
||||
FOREACH tbl IN ARRAY ARRAY[
|
||||
'users', 'departments', 'filial', 'specialist', 'location', 'review',
|
||||
'specialist_docs', 'specialist_dcode_description', 'stock',
|
||||
'price_department', 'price_list', 'schedule', 'record', 'alert_sms',
|
||||
'widget_form', 'widget_form_input', 'article', 'disease', 'medical_center',
|
||||
'news', 'promo', 'site_services', 'web_get_docinfo', 'idoctor'
|
||||
]
|
||||
LOOP
|
||||
EXECUTE format(
|
||||
'SELECT setval(pg_get_serial_sequence(%L, ''id''), COALESCE((SELECT MAX(id) FROM %I), 1), true)',
|
||||
tbl,
|
||||
tbl
|
||||
);
|
||||
END LOOP;
|
||||
END
|
||||
$body$;
|
||||
@@ -0,0 +1,78 @@
|
||||
\connect sova_cabinet_test
|
||||
|
||||
INSERT INTO users (email, roles, password, uid, token, full_name, phone, confirm)
|
||||
VALUES (
|
||||
'6c6f63616c2e636162696e6574406578616d706c652e74657374',
|
||||
'["ROLE_USER","ROLE_ADMIN"]',
|
||||
'$2y$12$hqHoZsKN01W.IBcfZYRf.OygGbGIMM7RW0M8fZxo.DNjswjj07S2u',
|
||||
200001,
|
||||
'Yjd4N6Xlvfay4sNPfPf6PBeosTdmpfCl6+xg9a9V7BnHmfocaw6YSD4NF6Vrvqrm9+nwzNsm5KzpoFV23nG8Lw==',
|
||||
'qpHB5XVk6VcuthTcmGV7zqBFN805ejONu+ciwz5nwC4AyEjJ0oH7Ci5ISfgpvwbn2NhLHyTA5tCnN2jd4qQogQ==',
|
||||
'2I/vmVgNZC98ben0LPkqxmZX1oiAP/k+aXCn3+/dxTBCPBlN7VLR9uiSoWcOuxeBi2rAzfl9t1N1b/PJkJO6MQ==',
|
||||
true
|
||||
);
|
||||
|
||||
INSERT INTO city (name, region_id, time_zone)
|
||||
VALUES
|
||||
('Саратов Local', 91, 4),
|
||||
('Волгоград Local', 92, 3),
|
||||
('Воронеж Local', 93, 3),
|
||||
('Краснодар Local', 94, 3);
|
||||
|
||||
INSERT INTO filial (fid, name, address, address_name, site_id, city_id, company)
|
||||
VALUES
|
||||
(1, 'Сова Саратов', 'Localhost, 1', 'Саратов', 1, 1, 'ООО Local Clinic'),
|
||||
(2, 'Сова Волгоград', 'Localhost, 2', 'Волгоград', 2, 2, 'ООО Local Clinic'),
|
||||
(3, 'Сова Воронеж', 'Localhost, 3', 'Воронеж', 3, 3, 'ООО Local Clinic'),
|
||||
(4, 'Сова Краснодар', 'Localhost, 4', 'Краснодар', 4, 4, 'ООО Local Clinic');
|
||||
|
||||
INSERT INTO banner (href, src, city_id)
|
||||
VALUES ('http://localhost:8082', '/banners/local.png', 1);
|
||||
|
||||
INSERT INTO review_source (city_id, name, count_row, rating, filial_id)
|
||||
VALUES (1, 'Local Reviews', 1, 5, 1);
|
||||
|
||||
INSERT INTO category_page (name, active) VALUES ('Local категория', true);
|
||||
INSERT INTO page (name, description, active, alias, category_id)
|
||||
VALUES ('Local страница', 'Контент локальной страницы', true, 'local-page', 1);
|
||||
|
||||
INSERT INTO department (did, name, group_name, online_mode, alias, middle_name)
|
||||
VALUES (10, 'Терапия', 'Взрослые специалисты', true, 'terapiya', 'терапевта');
|
||||
|
||||
INSERT INTO price_department (name, group_id, group_name, doct_count, view_in_web)
|
||||
VALUES ('Консультации', 100, 'Врачи', 1, true);
|
||||
|
||||
INSERT INTO specialist_view (name, kinder, speciality, category, experience, description, alias, dcode, s_type, active, region_id, kodoper, accepts_dms, degree)
|
||||
VALUES ('Иванов Иван Иванович', 0, 'Терапевт', 'Первая категория', '12', 'Локальный врач', 'ivanov-ivan', 101, 1, true, 91, '[1001]', true, 'к.м.н.');
|
||||
|
||||
INSERT INTO location_view (dcode, department, filial, specialist_id, online_mode, active, nearest_date)
|
||||
VALUES (101, 10, 1, 1, true, true, CURRENT_DATE + interval '1 day');
|
||||
|
||||
INSERT INTO price_list_view (kodoper, schname, specname, speccode, price_info, discpercent, discprice, structname, fname, filial, group_id)
|
||||
VALUES (1001, 'Прием терапевта', 'Иванов Иван Иванович', 101, '{"base":1500,"discount":1200}', 10, 1200, 'Терапия', 'Сова Local', 1, 100);
|
||||
|
||||
INSERT INTO remote_review (external_id, specialist_id, message, author, rating, source)
|
||||
VALUES (1, 1, 'Тестовый отзыв для локальной базы', 'Пациент Local', 5, 'local');
|
||||
|
||||
INSERT INTO record (specialist_id, phone, hash, reserve)
|
||||
VALUES (1, '+70000000000', 'c2018e2ee0f7d39af2c8f696e7003424', '{"local":true}');
|
||||
|
||||
INSERT INTO alert_sms (record_id, response)
|
||||
VALUES (1, '{"status":"local-ok"}');
|
||||
|
||||
INSERT INTO widget_form (id, name) OVERRIDING SYSTEM VALUE VALUES
|
||||
(1, 'Local форма'),
|
||||
(2, 'Вызов врача на дом');
|
||||
|
||||
INSERT INTO widget_form_input (text, type, bitrix24_id, widget_form_id, sort) VALUES
|
||||
('Телефон', 'phone', 'PHONE', 1, 10),
|
||||
('ФИО пациента', 'text', 'NAME', 2, 10),
|
||||
('Телефон', 'phone', 'PHONE', 2, 20),
|
||||
('Адрес выезда', 'text', 'ADDRESS', 2, 30),
|
||||
('Комментарий / симптомы', 'textarea', 'COMMENTS', 2, 40);
|
||||
|
||||
SELECT setval(pg_get_serial_sequence('widget_form', 'id'), (SELECT MAX(id) FROM widget_form));
|
||||
SELECT setval(pg_get_serial_sequence('widget_form_input', 'id'), (SELECT MAX(id) FROM widget_form_input));
|
||||
|
||||
INSERT INTO usrlog (pcode, agent, client_ip, method)
|
||||
VALUES (200001, 'local-agent', '127.0.0.1', 'seed');
|
||||
@@ -0,0 +1,132 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: postgres-schema-sql
|
||||
namespace: {{ .Values.namespace }}
|
||||
data:
|
||||
{{- range $path, $_ := .Files.Glob "sql/postgres/schema/*.sql" }}
|
||||
{{ base $path }}: |
|
||||
{{ $.Files.Get $path | indent 4 }}
|
||||
{{- end }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: postgres-seed-sql
|
||||
namespace: {{ .Values.namespace }}
|
||||
data:
|
||||
{{- range $path, $_ := .Files.Glob "sql/postgres/seed/*.sql" }}
|
||||
{{ base $path }}: |
|
||||
{{ $.Files.Get $path | indent 4 }}
|
||||
{{- end }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: mysql-schema-sql
|
||||
namespace: {{ .Values.namespace }}
|
||||
data:
|
||||
{{- range $path, $_ := .Files.Glob "sql/mysql-bitrix/schema/*.sql" }}
|
||||
{{ base $path }}: |
|
||||
{{ $.Files.Get $path | indent 4 }}
|
||||
{{- end }}
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: mysql-seed-sql
|
||||
namespace: {{ .Values.namespace }}
|
||||
data:
|
||||
{{- range $path, $_ := .Files.Glob "sql/mysql-bitrix/seed/*.sql" }}
|
||||
{{ base $path }}: |
|
||||
{{ $.Files.Get $path | indent 4 }}
|
||||
{{- end }}
|
||||
---
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: db-init
|
||||
namespace: {{ .Values.namespace }}
|
||||
spec:
|
||||
backoffLimit: 2
|
||||
template:
|
||||
spec:
|
||||
restartPolicy: OnFailure
|
||||
initContainers:
|
||||
- name: wait-pg
|
||||
image: postgres:16-alpine
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
until pg_isready -h {{ .Values.postgres.host }} -p 5432 -U {{ .Values.postgres.user }}; do sleep 3; done
|
||||
- name: wait-mysql
|
||||
image: mysql:8.0
|
||||
env:
|
||||
- name: MYSQL_PWD
|
||||
value: {{ .Values.mysql.password | quote }}
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
until mysqladmin ping -h {{ .Values.mysql.host }} -u{{ .Values.mysql.user }} --silent; do sleep 3; done
|
||||
containers:
|
||||
- name: init
|
||||
image: postgres:16-alpine
|
||||
env:
|
||||
- name: PGPASSWORD
|
||||
value: {{ .Values.postgres.password | quote }}
|
||||
- name: MYSQL_PWD
|
||||
value: {{ .Values.mysql.password | quote }}
|
||||
command:
|
||||
- sh
|
||||
- -c
|
||||
- |
|
||||
set -e
|
||||
echo "=== Phase 1: schema ==="
|
||||
for f in $(ls /schema/postgres/*.sql 2>/dev/null | sort); do
|
||||
[ -s "$f" ] || continue
|
||||
echo "PG schema: $(basename $f)"
|
||||
psql -h {{ .Values.postgres.host }} -U {{ .Values.postgres.user }} -d postgres -v ON_ERROR_STOP=1 -f "$f"
|
||||
done
|
||||
apk add --no-cache mysql-client >/dev/null
|
||||
for f in $(ls /schema/mysql/*.sql 2>/dev/null | sort); do
|
||||
[ -s "$f" ] || continue
|
||||
echo "MySQL schema: $(basename $f)"
|
||||
mysql -h {{ .Values.mysql.host }} -u{{ .Values.mysql.user }} {{ .Values.mysql.database }} < "$f"
|
||||
done
|
||||
echo "=== Phase 2: seed ==="
|
||||
for f in $(ls /seed/postgres/*.sql 2>/dev/null | sort); do
|
||||
[ -s "$f" ] || continue
|
||||
echo "PG seed: $(basename $f)"
|
||||
psql -h {{ .Values.postgres.host }} -U {{ .Values.postgres.user }} -d postgres -v ON_ERROR_STOP=1 -f "$f"
|
||||
done
|
||||
for f in $(ls /seed/mysql/*.sql 2>/dev/null | sort); do
|
||||
[ -s "$f" ] || continue
|
||||
echo "MySQL seed: $(basename $f)"
|
||||
mysql -h {{ .Values.mysql.host }} -u{{ .Values.mysql.user }} {{ .Values.mysql.database }} < "$f"
|
||||
done
|
||||
echo "DB init complete"
|
||||
volumeMounts:
|
||||
- name: pg-schema
|
||||
mountPath: /schema/postgres
|
||||
- name: mysql-schema
|
||||
mountPath: /schema/mysql
|
||||
- name: pg-seed
|
||||
mountPath: /seed/postgres
|
||||
- name: mysql-seed
|
||||
mountPath: /seed/mysql
|
||||
volumes:
|
||||
- name: pg-schema
|
||||
configMap:
|
||||
name: postgres-schema-sql
|
||||
- name: mysql-schema
|
||||
configMap:
|
||||
name: mysql-schema-sql
|
||||
- name: pg-seed
|
||||
configMap:
|
||||
name: postgres-seed-sql
|
||||
- name: mysql-seed
|
||||
configMap:
|
||||
name: mysql-seed-sql
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: Namespace
|
||||
metadata:
|
||||
name: {{ .Values.namespace }}
|
||||
@@ -0,0 +1,55 @@
|
||||
namespace: sova-data-test
|
||||
|
||||
postgresql:
|
||||
enabled: true
|
||||
fullnameOverride: postgresql-test
|
||||
auth:
|
||||
username: sova_test
|
||||
password: sova_test_pass
|
||||
database: sova_backend_test
|
||||
primary:
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 2Gi
|
||||
resources:
|
||||
requests:
|
||||
memory: 256Mi
|
||||
limits:
|
||||
memory: 512Mi
|
||||
initdb:
|
||||
scripts:
|
||||
01-create-databases.sql: |
|
||||
CREATE DATABASE sova_cabinet_test;
|
||||
GRANT ALL PRIVILEGES ON DATABASE sova_cabinet_test TO sova_test;
|
||||
|
||||
mysql:
|
||||
enabled: true
|
||||
fullnameOverride: mysql-bitrix-test
|
||||
auth:
|
||||
rootPassword: bitrix_root_test
|
||||
username: bitrix_test
|
||||
password: bitrix_test_pass
|
||||
database: sova_bitrix_test
|
||||
primary:
|
||||
persistence:
|
||||
enabled: true
|
||||
size: 2Gi
|
||||
resources:
|
||||
requests:
|
||||
memory: 256Mi
|
||||
limits:
|
||||
memory: 512Mi
|
||||
|
||||
redis:
|
||||
enabled: true
|
||||
fullnameOverride: redis-test
|
||||
auth:
|
||||
password: redis_test_pass
|
||||
master:
|
||||
persistence:
|
||||
enabled: false
|
||||
resources:
|
||||
requests:
|
||||
memory: 64Mi
|
||||
limits:
|
||||
memory: 128Mi
|
||||
Reference in New Issue
Block a user