Adaptation de la base de données pour sql server
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
/*
|
||||
Script de création des tables SQL Server pour la synchronisation Meta Lead Gen.
|
||||
|
||||
IMPORTANT :
|
||||
Avant de lancer ce script, la base de données doit déjà exister.
|
||||
|
||||
Étapes :
|
||||
1. Se connecter à SQL Server avec un outil comme Adminer, SSMS, Azure Data Studio ou DBeaver.
|
||||
2. Créer la base de données si elle n'existe pas encore :
|
||||
|
||||
CREATE DATABASE MetaLeadDb;
|
||||
|
||||
3. Se connecter ensuite à la base MetaLeadDb.
|
||||
4. Lancer ce script pour créer les tables :
|
||||
- leadgen_forms
|
||||
- lead_data
|
||||
- sync_logs
|
||||
|
||||
Ce script ne crée pas la base de données.
|
||||
Il crée uniquement les tables nécessaires au projet.*/
|
||||
|
||||
|
||||
IF OBJECT_ID(N'dbo.sync_logs', N'U') IS NOT NULL
|
||||
DROP TABLE dbo.sync_logs;
|
||||
|
||||
IF OBJECT_ID(N'dbo.lead_data', N'U') IS NOT NULL
|
||||
DROP TABLE dbo.lead_data;
|
||||
|
||||
IF OBJECT_ID(N'dbo.leadgen_forms', N'U') IS NOT NULL
|
||||
DROP TABLE dbo.leadgen_forms;
|
||||
|
||||
CREATE TABLE dbo.leadgen_forms (
|
||||
id BIGINT IDENTITY(1,1) NOT NULL,
|
||||
meta_form_id NVARCHAR(64) NOT NULL,
|
||||
page_id NVARCHAR(64) NOT NULL,
|
||||
name NVARCHAR(255) NOT NULL,
|
||||
locale NVARCHAR(20) NULL,
|
||||
status NVARCHAR(50) NOT NULL,
|
||||
created_at DATETIME2 NOT NULL CONSTRAINT DF_leadgen_forms_created_at DEFAULT SYSDATETIME(),
|
||||
updated_at DATETIME2 NULL,
|
||||
|
||||
CONSTRAINT PK_leadgen_forms PRIMARY KEY (id),
|
||||
CONSTRAINT UQ_leadgen_forms_meta_form_id UNIQUE (meta_form_id)
|
||||
);
|
||||
|
||||
CREATE TABLE dbo.lead_data (
|
||||
id BIGINT IDENTITY(1,1) NOT NULL,
|
||||
meta_lead_id NVARCHAR(64) NOT NULL,
|
||||
meta_form_id NVARCHAR(64) NOT NULL,
|
||||
created_time DATETIME2 NULL,
|
||||
je_suis NVARCHAR(255) NULL,
|
||||
nom NVARCHAR(255) NULL,
|
||||
first_name NVARCHAR(255) NULL,
|
||||
adresse_email NVARCHAR(255) NULL,
|
||||
phone_number NVARCHAR(50) NULL,
|
||||
city NVARCHAR(255) NULL,
|
||||
campus NVARCHAR(100) NULL,
|
||||
status NVARCHAR(50) NOT NULL CONSTRAINT DF_lead_data_status DEFAULT N'RECEIVED',
|
||||
error_message NVARCHAR(MAX) NULL,
|
||||
synced_at DATETIME2 NULL,
|
||||
created_at DATETIME2 NOT NULL CONSTRAINT DF_lead_data_created_at DEFAULT SYSDATETIME(),
|
||||
updated_at DATETIME2 NULL,
|
||||
|
||||
CONSTRAINT PK_lead_data PRIMARY KEY (id),
|
||||
CONSTRAINT UQ_lead_data_meta_lead_id UNIQUE (meta_lead_id),
|
||||
|
||||
CONSTRAINT FK_lead_data_leadgen_forms
|
||||
FOREIGN KEY (meta_form_id)
|
||||
REFERENCES dbo.leadgen_forms(meta_form_id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE NO ACTION,
|
||||
|
||||
CONSTRAINT CK_lead_data_status
|
||||
CHECK (status IN (N'RECEIVED', N'READY_TO_SEND', N'SENT', N'ERROR', N'INVALID'))
|
||||
);
|
||||
|
||||
CREATE TABLE dbo.sync_logs (
|
||||
id BIGINT IDENTITY(1,1) NOT NULL,
|
||||
lead_id BIGINT NOT NULL,
|
||||
oscar_payload NVARCHAR(MAX) NULL,
|
||||
oscar_response NVARCHAR(MAX) NULL,
|
||||
status NVARCHAR(50) NOT NULL,
|
||||
error_message NVARCHAR(MAX) NULL,
|
||||
attempted_at DATETIME2 NOT NULL CONSTRAINT DF_sync_logs_attempted_at DEFAULT SYSDATETIME(),
|
||||
|
||||
CONSTRAINT PK_sync_logs PRIMARY KEY (id),
|
||||
|
||||
CONSTRAINT FK_sync_logs_lead_data
|
||||
FOREIGN KEY (lead_id)
|
||||
REFERENCES dbo.lead_data(id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE CASCADE,
|
||||
|
||||
CONSTRAINT CK_sync_logs_status
|
||||
CHECK (status IN (N'SENT', N'ERROR', N'INVALID'))
|
||||
);
|
||||
|
||||
CREATE INDEX IX_leadgen_forms_status
|
||||
ON dbo.leadgen_forms(status);
|
||||
|
||||
CREATE INDEX IX_lead_data_meta_form_id
|
||||
ON dbo.lead_data(meta_form_id);
|
||||
|
||||
CREATE INDEX IX_lead_data_status
|
||||
ON dbo.lead_data(status);
|
||||
|
||||
CREATE INDEX IX_lead_data_created_time
|
||||
ON dbo.lead_data(created_time);
|
||||
|
||||
CREATE INDEX IX_lead_data_adresse_email
|
||||
ON dbo.lead_data(adresse_email);
|
||||
|
||||
CREATE INDEX IX_lead_data_campus
|
||||
ON dbo.lead_data(campus);
|
||||
|
||||
CREATE INDEX IX_sync_logs_lead_id
|
||||
ON dbo.sync_logs(lead_id);
|
||||
|
||||
CREATE INDEX IX_sync_logs_status
|
||||
ON dbo.sync_logs(status);
|
||||
|
||||
CREATE INDEX IX_sync_logs_attempted_at
|
||||
ON dbo.sync_logs(attempted_at);
|
||||
|
||||
Reference in New Issue
Block a user