Add Docker Compose and backend Dockerfile
Include .gitignore, go.mod/go.sum, initial Go source, init.sql, and Docker‑Compose configuration for the MSSQL and backend services.
This commit is contained in:
3
db/data/.system/instance_id
Normal file
3
db/data/.system/instance_id
Normal file
@@ -0,0 +1,3 @@
|
||||
59629046-e974-4356-ba63-5f0605022367
|
||||
9979554600398963173
|
||||
3457
|
||||
0
db/data/.system/system/debug/PASSWD.LOG
Normal file
0
db/data/.system/system/debug/PASSWD.LOG
Normal file
BIN
db/data/.system/system/lsa.hiv
Normal file
BIN
db/data/.system/system/lsa.hiv
Normal file
Binary file not shown.
BIN
db/data/.system/system/security.hiv
Normal file
BIN
db/data/.system/system/security.hiv
Normal file
Binary file not shown.
223
db/init.sql
Normal file
223
db/init.sql
Normal file
@@ -0,0 +1,223 @@
|
||||
-- init.sql: Create CustomerDB schema, tables, types, procedures, and views.
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- Create the database
|
||||
-- ------------------------------------------------------------
|
||||
IF DB_ID(N'CustomerDB') IS NULL
|
||||
BEGIN
|
||||
CREATE DATABASE CustomerDB;
|
||||
END
|
||||
GO
|
||||
|
||||
USE CustomerDB;
|
||||
GO
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- Types / Lookup tables
|
||||
-- ------------------------------------------------------------
|
||||
CREATE TABLE dbo.ContactTypes (
|
||||
ContactTypeID INT IDENTITY(1,1) PRIMARY KEY,
|
||||
TypeName NVARCHAR(50) NOT NULL UNIQUE
|
||||
);
|
||||
GO
|
||||
|
||||
INSERT INTO dbo.ContactTypes (TypeName) VALUES
|
||||
(N'Phone'),
|
||||
(N'Email'),
|
||||
(N'Fax'),
|
||||
(N'Website');
|
||||
GO
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- Core tables
|
||||
-- ------------------------------------------------------------
|
||||
CREATE TABLE dbo.Customers (
|
||||
CustomerID INT IDENTITY(1,1) PRIMARY KEY,
|
||||
CustomerName NVARCHAR(150) NOT NULL,
|
||||
AddressLine1 NVARCHAR(200) NULL,
|
||||
AddressLine2 NVARCHAR(200) NULL,
|
||||
City NVARCHAR(100) NULL,
|
||||
State NVARCHAR(100) NULL,
|
||||
ZipCode NVARCHAR(20) NULL,
|
||||
Country NVARCHAR(100) NULL,
|
||||
CreatedAt DATETIME2(0) NOT NULL CONSTRAINT DF_Customers_CreatedAt DEFAULT (SYSDATETIME()),
|
||||
UpdatedAt DATETIME2(0) NULL
|
||||
);
|
||||
GO
|
||||
|
||||
CREATE TABLE dbo.Contacts (
|
||||
ContactID INT IDENTITY(1,1) PRIMARY KEY,
|
||||
CustomerID INT NOT NULL,
|
||||
ContactTypeID INT NOT NULL,
|
||||
ContactValue NVARCHAR(200) NOT NULL,
|
||||
IsPrimary BIT NOT NULL CONSTRAINT DF_Contacts_IsPrimary DEFAULT (0),
|
||||
CreatedAt DATETIME2(0) NOT NULL CONSTRAINT DF_Contacts_CreatedAt DEFAULT (SYSDATETIME()),
|
||||
UpdatedAt DATETIME2(0) NULL,
|
||||
CONSTRAINT FK_Contacts_Customers FOREIGN KEY (CustomerID) REFERENCES dbo.Customers(CustomerID) ON DELETE CASCADE,
|
||||
CONSTRAINT FK_Contacts_ContactTypes FOREIGN KEY (ContactTypeID) REFERENCES dbo.ContactTypes(ContactTypeID)
|
||||
);
|
||||
GO
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- Stored procedures for Customers
|
||||
-- ------------------------------------------------------------
|
||||
CREATE PROCEDURE dbo.sp_InsertCustomer
|
||||
@CustomerName NVARCHAR(150),
|
||||
@AddressLine1 NVARCHAR(200) = NULL,
|
||||
@AddressLine2 NVARCHAR(200) = NULL,
|
||||
@City NVARCHAR(100) = NULL,
|
||||
@State NVARCHAR(100) = NULL,
|
||||
@ZipCode NVARCHAR(20) = NULL,
|
||||
@Country NVARCHAR(100) = NULL,
|
||||
@NewCustomerID INT OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
INSERT INTO dbo.Customers (CustomerName, AddressLine1, AddressLine2, City, State, ZipCode, Country)
|
||||
VALUES (@CustomerName, @AddressLine1, @AddressLine2, @City, @State, @ZipCode, @Country);
|
||||
|
||||
SET @NewCustomerID = SCOPE_IDENTITY();
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE dbo.sp_GetCustomer
|
||||
@CustomerID INT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SELECT *
|
||||
FROM dbo.Customers
|
||||
WHERE CustomerID = @CustomerID;
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE dbo.sp_UpdateCustomer
|
||||
@CustomerID INT,
|
||||
@CustomerName NVARCHAR(150),
|
||||
@AddressLine1 NVARCHAR(200) = NULL,
|
||||
@AddressLine2 NVARCHAR(200) = NULL,
|
||||
@City NVARCHAR(100) = NULL,
|
||||
@State NVARCHAR(100) = NULL,
|
||||
@ZipCode NVARCHAR(20) = NULL,
|
||||
@Country NVARCHAR(100) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
UPDATE dbo.Customers
|
||||
SET CustomerName = @CustomerName,
|
||||
AddressLine1 = @AddressLine1,
|
||||
AddressLine2 = @AddressLine2,
|
||||
City = @City,
|
||||
State = @State,
|
||||
ZipCode = @ZipCode,
|
||||
Country = @Country,
|
||||
UpdatedAt = SYSDATETIME()
|
||||
WHERE CustomerID = @CustomerID;
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE dbo.sp_DeleteCustomer
|
||||
@CustomerID INT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
DELETE FROM dbo.Customers WHERE CustomerID = @CustomerID;
|
||||
END
|
||||
GO
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- Stored procedures for Contacts
|
||||
-- ------------------------------------------------------------
|
||||
CREATE PROCEDURE dbo.sp_InsertContact
|
||||
@CustomerID INT,
|
||||
@ContactTypeID INT,
|
||||
@ContactValue NVARCHAR(200),
|
||||
@IsPrimary BIT = 0,
|
||||
@NewContactID INT OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
INSERT INTO dbo.Contacts (CustomerID, ContactTypeID, ContactValue, IsPrimary)
|
||||
VALUES (@CustomerID, @ContactTypeID, @ContactValue, @IsPrimary);
|
||||
|
||||
SET @NewContactID = SCOPE_IDENTITY();
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE dbo.sp_GetContactsByCustomer
|
||||
@CustomerID INT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SELECT c.*, ct.TypeName
|
||||
FROM dbo.Contacts c
|
||||
JOIN dbo.ContactTypes ct ON c.ContactTypeID = ct.ContactTypeID
|
||||
WHERE c.CustomerID = @CustomerID;
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE dbo.sp_UpdateContact
|
||||
@ContactID INT,
|
||||
@ContactTypeID INT,
|
||||
@ContactValue NVARCHAR(200),
|
||||
@IsPrimary BIT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
UPDATE dbo.Contacts
|
||||
SET ContactTypeID = @ContactTypeID,
|
||||
ContactValue = @ContactValue,
|
||||
IsPrimary = @IsPrimary,
|
||||
UpdatedAt = SYSDATETIME()
|
||||
WHERE ContactID = @ContactID;
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE dbo.sp_DeleteContact
|
||||
@ContactID INT
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
DELETE FROM dbo.Contacts WHERE ContactID = @ContactID;
|
||||
END
|
||||
GO
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- Views
|
||||
-- ------------------------------------------------------------
|
||||
CREATE VIEW dbo.vw_CustomerContacts AS
|
||||
SELECT
|
||||
cu.CustomerID,
|
||||
cu.CustomerName,
|
||||
cu.AddressLine1,
|
||||
cu.AddressLine2,
|
||||
cu.City,
|
||||
cu.State,
|
||||
cu.ZipCode,
|
||||
cu.Country,
|
||||
ct.TypeName,
|
||||
co.ContactValue,
|
||||
co.IsPrimary
|
||||
FROM dbo.Customers cu
|
||||
LEFT JOIN dbo.Contacts co ON cu.CustomerID = co.CustomerID
|
||||
LEFT JOIN dbo.ContactTypes ct ON co.ContactTypeID = ct.ContactTypeID;
|
||||
GO
|
||||
|
||||
-- ------------------------------------------------------------
|
||||
-- Sample data (optional, for quick testing)
|
||||
-- ------------------------------------------------------------
|
||||
INSERT INTO dbo.Customers (CustomerName, City, State, Country)
|
||||
VALUES (N'Acme Corp', N'New York', N'NY', N'USA');
|
||||
|
||||
DECLARE @CustID INT = SCOPE_IDENTITY();
|
||||
|
||||
EXEC dbo.sp_InsertContact @CustomerID = @CustID,
|
||||
@ContactTypeID = (SELECT ContactTypeID FROM dbo.ContactTypes WHERE TypeName = N'Phone'),
|
||||
@ContactValue = N'555-1234',
|
||||
@IsPrimary = 1,
|
||||
@NewContactID = @CustID OUTPUT;
|
||||
GO
|
||||
Reference in New Issue
Block a user