211 lines
7.5 KiB
JavaScript
211 lines
7.5 KiB
JavaScript
export const INIT_GOOGLE_AUTH = `
|
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'google_auth')
|
|
BEGIN
|
|
CREATE TABLE google_auth (
|
|
id INT IDENTITY(1,1) PRIMARY KEY,
|
|
email NVARCHAR(320) NOT NULL,
|
|
created_at DATETIME2 NOT NULL CONSTRAINT DF_google_auth_created_at DEFAULT SYSUTCDATETIME(),
|
|
CONSTRAINT UQ_google_auth_email UNIQUE (email)
|
|
);
|
|
END
|
|
`;
|
|
|
|
export const INIT_LANGUAGE = `
|
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'language')
|
|
BEGIN
|
|
CREATE TABLE language (
|
|
id INT IDENTITY(1,1) PRIMARY KEY,
|
|
iso639 NVARCHAR(10) NOT NULL,
|
|
CONSTRAINT UQ_language_iso639 UNIQUE (iso639)
|
|
);
|
|
END
|
|
`;
|
|
|
|
export const INIT_COMPANY = `
|
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'company')
|
|
BEGIN
|
|
CREATE TABLE company (
|
|
id INT IDENTITY(1,1) PRIMARY KEY,
|
|
name NVARCHAR(255) NOT NULL,
|
|
root_category_id INT NULL,
|
|
default_language_id INT NULL,
|
|
CONSTRAINT FK_company_default_language FOREIGN KEY (default_language_id) REFERENCES language(id) ON DELETE SET NULL
|
|
);
|
|
END
|
|
`;
|
|
|
|
export const INIT_ARTICLE = `
|
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'article')
|
|
BEGIN
|
|
CREATE TABLE article (
|
|
id INT IDENTITY(1,1) PRIMARY KEY,
|
|
sku NVARCHAR(100) NULL,
|
|
articlelist_id INT NULL,
|
|
is_father BIT NOT NULL CONSTRAINT DF_article_is_father DEFAULT 0,
|
|
father INT NULL,
|
|
fathersort INT NOT NULL CONSTRAINT DF_article_fathersort DEFAULT 0,
|
|
CONSTRAINT FK_article_father FOREIGN KEY (father) REFERENCES article(id),
|
|
CONSTRAINT UQ_article_sku UNIQUE (sku),
|
|
CONSTRAINT UQ_article_father_fathersort UNIQUE (father, fathersort)
|
|
);
|
|
END
|
|
`;
|
|
|
|
export const INIT_ARTICLELIST = `
|
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'articlelist')
|
|
BEGIN
|
|
CREATE TABLE articlelist (
|
|
id INT IDENTITY(1,1) PRIMARY KEY
|
|
);
|
|
END
|
|
`;
|
|
|
|
export const INIT_ARTICLELISTARTICLE = `
|
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'articlelistarticle')
|
|
BEGIN
|
|
CREATE TABLE articlelistarticle (
|
|
id INT IDENTITY(1,1) PRIMARY KEY,
|
|
articlelist_id INT NOT NULL,
|
|
article_id INT NOT NULL,
|
|
count INT NOT NULL CONSTRAINT DF_articlelistarticle_count DEFAULT 1,
|
|
sort INT NOT NULL CONSTRAINT DF_articlelistarticle_sort DEFAULT 0,
|
|
CONSTRAINT FK_articlelistarticle_articlelist FOREIGN KEY (articlelist_id) REFERENCES articlelist(id) ON DELETE CASCADE,
|
|
CONSTRAINT FK_articlelistarticle_article FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE,
|
|
CONSTRAINT UQ_articlelistarticle_articlelist_article UNIQUE (articlelist_id, article_id),
|
|
CONSTRAINT UQ_articlelistarticle_articlelist_sort UNIQUE (articlelist_id, sort)
|
|
);
|
|
END
|
|
`;
|
|
|
|
export const INIT_CATEGORY = `
|
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'category')
|
|
BEGIN
|
|
CREATE TABLE category (
|
|
id INT IDENTITY(1,1) PRIMARY KEY,
|
|
parent_id INT NULL,
|
|
sort INT NOT NULL CONSTRAINT DF_category_sort DEFAULT 0,
|
|
CONSTRAINT FK_category_parent FOREIGN KEY (parent_id) REFERENCES category(id)
|
|
);
|
|
END
|
|
`;
|
|
|
|
export const INIT_CATEGORYARTICLE = `
|
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'categoryarticle')
|
|
BEGIN
|
|
CREATE TABLE categoryarticle (
|
|
id INT IDENTITY(1,1) PRIMARY KEY,
|
|
category_id INT NOT NULL,
|
|
article_id INT NOT NULL,
|
|
CONSTRAINT FK_categoryarticle_category FOREIGN KEY (category_id) REFERENCES category(id) ON DELETE CASCADE,
|
|
CONSTRAINT FK_categoryarticle_article FOREIGN KEY (article_id) REFERENCES article(id),
|
|
CONSTRAINT UQ_categoryarticle_category_article UNIQUE (category_id, article_id)
|
|
);
|
|
END
|
|
`;
|
|
|
|
export const INIT_CATEGORYTEXT = `
|
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'categorytext')
|
|
BEGIN
|
|
CREATE TABLE categorytext (
|
|
id INT IDENTITY(1,1) PRIMARY KEY,
|
|
category_id INT NOT NULL,
|
|
language_id INT NOT NULL,
|
|
name NVARCHAR(255) NOT NULL,
|
|
slug NVARCHAR(255) NOT NULL,
|
|
seo NVARCHAR(MAX) NULL,
|
|
[desc] NVARCHAR(MAX) NULL,
|
|
CONSTRAINT FK_categorytext_category FOREIGN KEY (category_id) REFERENCES category(id) ON DELETE CASCADE,
|
|
CONSTRAINT FK_categorytext_language FOREIGN KEY (language_id) REFERENCES language(id) ON DELETE CASCADE,
|
|
CONSTRAINT UQ_categorytext_category_language UNIQUE (category_id, language_id)
|
|
);
|
|
END
|
|
`;
|
|
|
|
export const INIT_ARTICLENAME = `
|
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'articletext')
|
|
BEGIN
|
|
CREATE TABLE articletext (
|
|
id INT IDENTITY(1,1) PRIMARY KEY,
|
|
article_id INT NOT NULL,
|
|
language_id INT NOT NULL,
|
|
name NVARCHAR(255) NOT NULL,
|
|
slug NVARCHAR(255) NOT NULL,
|
|
seo NVARCHAR(MAX) NULL,
|
|
[desc] NVARCHAR(MAX) NULL,
|
|
created_at DATETIME2 NOT NULL CONSTRAINT DF_articletext_created_at DEFAULT SYSUTCDATETIME(),
|
|
updated_at DATETIME2 NOT NULL CONSTRAINT DF_articletext_updated_at DEFAULT SYSUTCDATETIME(),
|
|
CONSTRAINT FK_articletext_article FOREIGN KEY (article_id) REFERENCES article(id) ON DELETE CASCADE,
|
|
CONSTRAINT FK_articletext_language FOREIGN KEY (language_id) REFERENCES language(id) ON DELETE CASCADE,
|
|
CONSTRAINT UQ_articletext_article_language UNIQUE (article_id, language_id)
|
|
);
|
|
END
|
|
`;
|
|
|
|
export const INIT_NUMBERS = `
|
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'numbers')
|
|
BEGIN
|
|
CREATE TABLE numbers (
|
|
id INT IDENTITY(1,1) PRIMARY KEY,
|
|
[type] NVARCHAR(100) NOT NULL,
|
|
prefix NVARCHAR(50) NOT NULL CONSTRAINT DF_numbers_prefix DEFAULT '',
|
|
padding INT NOT NULL CONSTRAINT DF_numbers_padding DEFAULT 0,
|
|
[next] INT NOT NULL CONSTRAINT DF_numbers_next DEFAULT 1,
|
|
CONSTRAINT UQ_numbers_type UNIQUE ([type])
|
|
);
|
|
END
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM numbers WHERE [type] = N'articlesku')
|
|
BEGIN
|
|
INSERT INTO numbers ([type], prefix, padding, [next])
|
|
VALUES (N'articlesku', N'P', 6, 1);
|
|
END
|
|
`;
|
|
|
|
//EXEC dbo.getnextnumberwithprefixandpadding @type = N'articlesku', @value = @sku OUTPUT;
|
|
//INSERT INTO article (sku, ...) VALUES (@sku, ...);
|
|
export const INIT_GET_NEXT_NUMBER_WITH_PREFIX_AND_PADDING = `
|
|
IF NOT EXISTS (SELECT 1 FROM sys.procedures WHERE name = N'getnextnumberwithprefixandpadding')
|
|
BEGIN
|
|
EXEC('
|
|
CREATE PROCEDURE dbo.getnextnumberwithprefixandpadding
|
|
@type NVARCHAR(100),
|
|
@value NVARCHAR(100) OUTPUT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @seq TABLE (prefix NVARCHAR(50), padding INT, num INT);
|
|
|
|
UPDATE n
|
|
SET [next] = [next] + 1
|
|
OUTPUT INSERTED.prefix, INSERTED.padding, DELETED.[next]
|
|
INTO @seq(prefix, padding, num)
|
|
FROM numbers n WITH (UPDLOCK, ROWLOCK)
|
|
WHERE n.[type] = @type;
|
|
|
|
IF @@ROWCOUNT = 0
|
|
THROW 50000, ''Number type not found'', 1;
|
|
|
|
SELECT @value = prefix + CASE
|
|
WHEN padding > 0 THEN RIGHT(REPLICATE(''0'', padding) + CAST(num AS NVARCHAR(20)), padding)
|
|
ELSE CAST(num AS NVARCHAR(20))
|
|
END
|
|
FROM @seq;
|
|
END
|
|
');
|
|
END
|
|
`;
|
|
|
|
export const INIT_COMPANYUSER = `
|
|
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'companyuser')
|
|
BEGIN
|
|
CREATE TABLE companyuser (
|
|
google_auth_id INT NOT NULL,
|
|
company_id INT NOT NULL,
|
|
CONSTRAINT PK_companyuser PRIMARY KEY (google_auth_id, company_id),
|
|
CONSTRAINT FK_companyuser_google_auth FOREIGN KEY (google_auth_id) REFERENCES google_auth(id) ON DELETE CASCADE,
|
|
CONSTRAINT FK_companyuser_company FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
|
|
);
|
|
END
|
|
`;
|