- Implement tests for the internet connections module, covering routes, IP range creation, and connection validation. - Add tests for the Invoice2DataService to validate extraction from GlobalConnect invoices. - Create tests for subscription network provisioning, ensuring proper handling of network items and IP allocations. - Include validation checks for subtotal mismatches and ensure error handling for missing IP selections.
76 lines
3.0 KiB
SQL
76 lines
3.0 KiB
SQL
CREATE TABLE IF NOT EXISTS internet_connections_connections (
|
|
id SERIAL PRIMARY KEY,
|
|
parent_id INTEGER REFERENCES internet_connections_connections(id) ON DELETE SET NULL,
|
|
name VARCHAR(255) NOT NULL,
|
|
connection_type VARCHAR(50) NOT NULL DEFAULT 'fiber',
|
|
provider VARCHAR(255),
|
|
circuit_number VARCHAR(255),
|
|
customer_id INTEGER,
|
|
address VARCHAR(500),
|
|
speed_mbps INTEGER,
|
|
upload_mbps INTEGER,
|
|
download_mbps INTEGER,
|
|
technology VARCHAR(100),
|
|
status VARCHAR(50) NOT NULL DEFAULT 'active',
|
|
monthly_cost NUMERIC(12,2) DEFAULT 0,
|
|
sales_price NUMERIC(12,2) DEFAULT 0,
|
|
monitoring_url TEXT,
|
|
contract_start DATE,
|
|
contract_end DATE,
|
|
notes TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS internet_connections_ip_ranges (
|
|
id SERIAL PRIMARY KEY,
|
|
connection_id INTEGER REFERENCES internet_connections_connections(id) ON DELETE CASCADE,
|
|
name VARCHAR(255) NOT NULL,
|
|
cidr VARCHAR(32) NOT NULL,
|
|
description TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS internet_connections_ip_addresses (
|
|
id SERIAL PRIMARY KEY,
|
|
range_id INTEGER REFERENCES internet_connections_ip_ranges(id) ON DELETE CASCADE,
|
|
ip_address VARCHAR(64) NOT NULL,
|
|
status VARCHAR(50) NOT NULL DEFAULT 'available',
|
|
assigned_to VARCHAR(255),
|
|
assigned_type VARCHAR(50),
|
|
comment TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
deleted_at TIMESTAMP
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS internet_connections_history (
|
|
id SERIAL PRIMARY KEY,
|
|
connection_id INTEGER REFERENCES internet_connections_connections(id) ON DELETE CASCADE,
|
|
event_type VARCHAR(100) NOT NULL,
|
|
summary TEXT NOT NULL,
|
|
details JSONB DEFAULT '{}'::jsonb,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
created_by INTEGER
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS internet_connections_pricing (
|
|
id SERIAL PRIMARY KEY,
|
|
connection_id INTEGER REFERENCES internet_connections_connections(id) ON DELETE CASCADE,
|
|
effective_from DATE NOT NULL,
|
|
purchase_price NUMERIC(12,2) DEFAULT 0,
|
|
sales_price NUMERIC(12,2) DEFAULT 0,
|
|
notes TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
created_by INTEGER
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_internet_connections_parent_id ON internet_connections_connections(parent_id);
|
|
CREATE INDEX IF NOT EXISTS idx_internet_connections_status ON internet_connections_connections(status);
|
|
CREATE INDEX IF NOT EXISTS idx_internet_connections_ip_ranges_connection_id ON internet_connections_ip_ranges(connection_id);
|
|
CREATE INDEX IF NOT EXISTS idx_internet_connections_ip_addresses_range_id ON internet_connections_ip_addresses(range_id);
|
|
CREATE INDEX IF NOT EXISTS idx_internet_connections_history_connection_id ON internet_connections_history(connection_id);
|