125 lines
3.7 KiB
SQL
125 lines
3.7 KiB
SQL
/*
|
|
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);
|
|
|