feat: manage files via manifestattachment with auth and cascade trigger, format API.md method signatures
This commit is contained in:
@@ -765,6 +765,52 @@ BEGIN
|
||||
END
|
||||
`;
|
||||
|
||||
export const INIT_FILE = `
|
||||
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'file')
|
||||
BEGIN
|
||||
CREATE TABLE [file] (
|
||||
id INT IDENTITY(1,1) PRIMARY KEY,
|
||||
mimetype NVARCHAR(255) NOT NULL,
|
||||
name NVARCHAR(255) NOT NULL,
|
||||
content VARBINARY(MAX) NOT NULL
|
||||
);
|
||||
END
|
||||
`;
|
||||
|
||||
export const INIT_MANIFESTATTACHMENT = `
|
||||
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'manifestattachment')
|
||||
BEGIN
|
||||
CREATE TABLE manifestattachment (
|
||||
id INT IDENTITY(1,1) PRIMARY KEY,
|
||||
manifest_id INT NOT NULL,
|
||||
file_id INT NOT NULL,
|
||||
CONSTRAINT FK_manifestattachment_manifest FOREIGN KEY (manifest_id) REFERENCES manifest(id) ON DELETE CASCADE,
|
||||
CONSTRAINT FK_manifestattachment_file FOREIGN KEY (file_id) REFERENCES [file](id) ON DELETE CASCADE
|
||||
);
|
||||
END
|
||||
`;
|
||||
|
||||
export const INIT_MANIFESTATTACHMENT_TRIGGER = `
|
||||
IF OBJECT_ID(N'dbo.TR_manifestattachment_delete_file', N'TR') IS NOT NULL
|
||||
DROP TRIGGER dbo.TR_manifestattachment_delete_file;
|
||||
|
||||
EXEC('
|
||||
CREATE TRIGGER dbo.TR_manifestattachment_delete_file
|
||||
ON manifestattachment
|
||||
AFTER DELETE
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
DELETE f
|
||||
FROM [file] f
|
||||
INNER JOIN deleted d ON f.id = d.file_id
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1 FROM manifestattachment ma WHERE ma.file_id = f.id
|
||||
);
|
||||
END
|
||||
');
|
||||
`;
|
||||
|
||||
/** DDL scripts in dependency order for schema init. */
|
||||
export const SCHEMA_SCRIPTS = [
|
||||
INIT_META,
|
||||
@@ -810,4 +856,8 @@ export const SCHEMA_SCRIPTS = [
|
||||
INIT_COMPANYSETTING,
|
||||
INIT_POSTERMINAL,
|
||||
INIT_POSTERMINALCATEGORY,
|
||||
INIT_FILE,
|
||||
INIT_MANIFESTATTACHMENT,
|
||||
INIT_MANIFESTATTACHMENT_TRIGGER,
|
||||
];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user