awa
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id SERIAL PRIMARY KEY,
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(50) UNIQUE NOT NULL,
|
||||
password_hash VARCHAR(255) NOT NULL,
|
||||
registrations_remaining INTEGER DEFAULT 3,
|
||||
@@ -14,7 +14,7 @@ CREATE TABLE IF NOT EXISTS invite_codes (
|
||||
code VARCHAR(32) UNIQUE NOT NULL,
|
||||
created_by INTEGER REFERENCES users(id),
|
||||
used_by INTEGER REFERENCES users(id),
|
||||
created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
used_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
@@ -57,7 +57,7 @@ CREATE TABLE IF NOT EXISTS dns_records (
|
||||
value VARCHAR(1000) NOT NULL,
|
||||
ttl INTEGER DEFAULT 3600,
|
||||
priority INTEGER, -- For MX records
|
||||
created_at TIMESTAMPTZ DEFAULT NOW()
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_dns_records_domain_type ON dns_records(domain_id, record_type);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
-- Make IP column optional for domains
|
||||
ALTER TABLE domains ALTER COLUMN ip DROP NOT NULL;
|
||||
ALTER TABLE domains MODIFY COLUMN ip VARCHAR(255) NULL;
|
||||
|
||||
-- Update DNS records constraint to only allow A, AAAA, CNAME, TXT
|
||||
ALTER TABLE dns_records DROP CONSTRAINT IF EXISTS dns_records_record_type_check;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
-- Re-add NS record support and extend record types
|
||||
ALTER TABLE dns_records DROP CONSTRAINT IF EXISTS dns_records_record_type_check;
|
||||
ALTER TABLE dns_records DROP CONSTRAINT dns_records_record_type_check;
|
||||
ALTER TABLE dns_records ADD CONSTRAINT dns_records_record_type_check
|
||||
CHECK (record_type IN ('A', 'AAAA', 'CNAME', 'TXT', 'NS', 'MX'));
|
||||
|
||||
-- Add index for efficient NS record lookups during delegation
|
||||
CREATE INDEX IF NOT EXISTS idx_dns_records_ns_lookup ON dns_records(record_type, name) WHERE record_type = 'NS';
|
||||
CREATE INDEX idx_dns_records_ns_lookup ON dns_records(record_type, name) WHERE record_type = 'NS';
|
||||
|
||||
-- Add index for subdomain resolution optimization
|
||||
CREATE INDEX IF NOT EXISTS idx_dns_records_subdomain_lookup ON dns_records(domain_id, name, record_type);
|
||||
CREATE INDEX idx_dns_records_subdomain_lookup ON dns_records(domain_id, name, record_type);
|
||||
@@ -4,5 +4,5 @@ ALTER TABLE dns_records ADD CONSTRAINT dns_records_record_type_check
|
||||
CHECK (record_type IN ('A', 'AAAA', 'CNAME', 'TXT', 'NS'));
|
||||
|
||||
-- Add indexes for efficient DNS lookups if they don't exist
|
||||
CREATE INDEX IF NOT EXISTS idx_dns_records_ns_lookup ON dns_records(record_type, name) WHERE record_type = 'NS';
|
||||
CREATE INDEX IF NOT EXISTS idx_dns_records_subdomain_lookup ON dns_records(domain_id, name, record_type);
|
||||
CREATE INDEX idx_dns_records_ns_lookup ON dns_records(record_type, name);
|
||||
CREATE INDEX idx_dns_records_subdomain_lookup ON dns_records(domain_id, name, record_type);
|
||||
@@ -1,18 +1,18 @@
|
||||
-- Add certificate challenges table for CA functionality
|
||||
CREATE TABLE IF NOT EXISTS certificate_challenges (
|
||||
id SERIAL PRIMARY KEY,
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
token VARCHAR(255) UNIQUE NOT NULL,
|
||||
domain VARCHAR(255) NOT NULL,
|
||||
challenge_type VARCHAR(20) NOT NULL CHECK (challenge_type IN ('dns')),
|
||||
challenge_type VARCHAR(20) NOT NULL,
|
||||
verification_data VARCHAR(500) NOT NULL,
|
||||
status VARCHAR(20) DEFAULT 'pending' CHECK (status IN ('pending', 'valid', 'invalid', 'expired')),
|
||||
created_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
status VARCHAR(20) DEFAULT 'pending',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
expires_at TIMESTAMPTZ NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_certificate_challenges_token ON certificate_challenges(token);
|
||||
CREATE INDEX IF NOT EXISTS idx_certificate_challenges_domain ON certificate_challenges(domain);
|
||||
CREATE INDEX IF NOT EXISTS idx_certificate_challenges_expires_at ON certificate_challenges(expires_at);
|
||||
CREATE INDEX idx_certificate_challenges_token ON certificate_challenges(token);
|
||||
CREATE INDEX idx_certificate_challenges_domain ON certificate_challenges(domain);
|
||||
CREATE INDEX idx_certificate_challenges_expires_at ON certificate_challenges(expires_at);
|
||||
|
||||
-- Add table to store issued certificates
|
||||
CREATE TABLE IF NOT EXISTS issued_certificates (
|
||||
@@ -21,13 +21,13 @@ CREATE TABLE IF NOT EXISTS issued_certificates (
|
||||
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||
certificate_pem TEXT NOT NULL,
|
||||
private_key_pem TEXT NOT NULL,
|
||||
issued_at TIMESTAMPTZ DEFAULT NOW(),
|
||||
issued_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
expires_at TIMESTAMPTZ NOT NULL,
|
||||
revoked_at TIMESTAMPTZ,
|
||||
serial_number VARCHAR(255) UNIQUE NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_issued_certificates_domain ON issued_certificates(domain);
|
||||
CREATE INDEX IF NOT EXISTS idx_issued_certificates_user_id ON issued_certificates(user_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_issued_certificates_serial ON issued_certificates(serial_number);
|
||||
CREATE INDEX IF NOT EXISTS idx_issued_certificates_expires_at ON issued_certificates(expires_at);
|
||||
CREATE INDEX idx_issued_certificates_domain ON issued_certificates(domain);
|
||||
CREATE INDEX idx_issued_certificates_user_id ON issued_certificates(user_id);
|
||||
CREATE INDEX idx_issued_certificates_serial ON issued_certificates(serial_number);
|
||||
CREATE INDEX idx_issued_certificates_expires_at ON issued_certificates(expires_at);
|
||||
@@ -2,6 +2,26 @@
|
||||
DELETE FROM dns_records WHERE record_type NOT IN ('A', 'AAAA', 'CNAME', 'TXT');
|
||||
|
||||
-- Now apply the constraint
|
||||
ALTER TABLE dns_records DROP CONSTRAINT IF EXISTS dns_records_record_type_check;
|
||||
ALTER TABLE dns_records ADD CONSTRAINT dns_records_record_type_check
|
||||
CHECK (record_type IN ('A', 'AAAA', 'CNAME', 'TXT'));
|
||||
ALTER TABLE dns_records DROP CONSTRAINT dns_records_record_type_check;
|
||||
|
||||
-- MySQL doesn't support table-level CHECK constraints, using trigger instead
|
||||
DELIMITER //
|
||||
CREATE TRIGGER check_record_type_before_insert
|
||||
BEFORE INSERT ON dns_records
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.record_type NOT IN ('A', 'AAAA', 'CNAME', 'TXT') THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid record type';
|
||||
END IF;
|
||||
END;
|
||||
//
|
||||
CREATE TRIGGER check_record_type_before_update
|
||||
BEFORE UPDATE ON dns_records
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
IF NEW.record_type NOT IN ('A', 'AAAA', 'CNAME', 'TXT') THEN
|
||||
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Invalid record type';
|
||||
END IF;
|
||||
END;
|
||||
//
|
||||
DELIMITER ;
|
||||
@@ -1,8 +1,8 @@
|
||||
-- Add table to store CA certificate and key
|
||||
CREATE TABLE IF NOT EXISTS ca_certificates (
|
||||
id SERIAL PRIMARY KEY,
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
ca_cert_pem TEXT NOT NULL,
|
||||
ca_key_pem TEXT NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
is_active BOOLEAN DEFAULT TRUE
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
is_active TINYINT(1) DEFAULT 1
|
||||
);
|
||||
@@ -1,2 +1,2 @@
|
||||
-- Add CSR field to certificate challenges
|
||||
ALTER TABLE certificate_challenges ADD COLUMN IF NOT EXISTS csr_pem TEXT;
|
||||
ALTER TABLE certificate_challenges ADD COLUMN csr_pem TEXT;
|
||||
@@ -1,28 +1,25 @@
|
||||
-- Search engine domain crawl status tracking
|
||||
CREATE TABLE IF NOT EXISTS domain_crawl_status (
|
||||
domain_id INTEGER PRIMARY KEY REFERENCES domains(id) ON DELETE CASCADE,
|
||||
last_crawled_at TIMESTAMPTZ,
|
||||
next_crawl_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP,
|
||||
domain_id INT PRIMARY KEY, FOREIGN KEY (domain_id) REFERENCES domains(id) ON DELETE CASCADE,
|
||||
last_crawled_at TIMESTAMP,
|
||||
next_crawl_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
crawl_status VARCHAR(20) DEFAULT 'pending' CHECK (crawl_status IN ('pending', 'crawling', 'completed', 'failed', 'disabled')),
|
||||
error_message TEXT,
|
||||
pages_found INTEGER DEFAULT 0,
|
||||
updated_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_domain_crawl_status_next_crawl ON domain_crawl_status(next_crawl_at);
|
||||
CREATE INDEX IF NOT EXISTS idx_domain_crawl_status_status ON domain_crawl_status(crawl_status);
|
||||
|
||||
-- Function to update the updated_at column
|
||||
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
NEW.updated_at = CURRENT_TIMESTAMP;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- Trigger for updated_at
|
||||
DROP TRIGGER IF EXISTS update_domain_crawl_status_updated_at ON domain_crawl_status;
|
||||
-- MySQL trigger to update updated_at column
|
||||
DELIMITER //
|
||||
CREATE TRIGGER update_domain_crawl_status_updated_at
|
||||
BEFORE UPDATE ON domain_crawl_status
|
||||
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();
|
||||
FOR EACH ROW
|
||||
BEGIN
|
||||
SET NEW.updated_at = CURRENT_TIMESTAMP;
|
||||
END;
|
||||
//
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user