112 lines
6.3 KiB
SQL
112 lines
6.3 KiB
SQL
-- 1. SETUP PROJECT & MEMBERSHIP
|
|
INSERT INTO projects (id, project_name, project_desc)
|
|
VALUES (1, 'Phoenix System Overhaul', 'Modernizing the core banking middleware and data services.');
|
|
|
|
-- Assign users to project (SuperAdmin, Editor, Validador, Admin)
|
|
INSERT INTO project_members (project_id, user_id) VALUES (1, 1), (1, 2), (1, 3), (1, 4);
|
|
|
|
-- 2. CREATE RELATIONSHIP TYPES
|
|
INSERT INTO relationship_types (project_id, type_name, type_description, inverse_type_name) VALUES
|
|
(1, 'Depends On', 'Requirement cannot be completed without the target', 'Is Required By'),
|
|
(1, 'Relates To', 'General association', 'Relates To');
|
|
|
|
-- 3. INSERT REQUIREMENTS
|
|
-- Requirement A: Active (Regular)
|
|
INSERT INTO requirements (id, project_id, user_id, tag_id, status_id, req_name, req_desc, priority_id, version)
|
|
VALUES (101, 1, 2, 1, 2, 'API Rate Limiting', 'The system must limit requests to 100 per minute per API key.', 1, 1);
|
|
|
|
-- Requirement B: Draft stage
|
|
INSERT INTO requirements (id, project_id, user_id, tag_id, status_id, req_name, req_desc, priority_id, version)
|
|
VALUES (102, 1, 4, 2, 1, 'Dark Mode UI', 'User interface should support a high-contrast dark theme.', 2, 1);
|
|
|
|
-- 4. INSERT ACCEPTANCE CRITERIA
|
|
INSERT INTO acceptance_criteria (requirement_id, criteria_text, is_accepted, last_editor_id) VALUES
|
|
(101, 'Throttling returns 429 Too Many Requests status code.', TRUE, 3),
|
|
(101, 'Admin users can bypass rate limits for internal testing.', FALSE, 2),
|
|
(102, 'Contrast ratio meets WCAG 2.1 AA standards.', FALSE, 4);
|
|
|
|
-- 5. SIMULATE HISTORY (Requirement A was edited once)
|
|
-- First, manually insert into history to represent the "Old" version
|
|
INSERT INTO requirements_history (original_req_id, project_id, status_id, req_name, version, valid_from, valid_to, edited_by)
|
|
VALUES (101, 1, 1, 'API Rate Limiting (Draft)', 1, NOW() - INTERVAL '2 days', NOW() - INTERVAL '1 day', 2);
|
|
|
|
-- 6. GROUP ASSOCIATIONS
|
|
-- Linking "API Rate Limiting" to "Data Services" (id 2) and "Integration" (id 5)
|
|
INSERT INTO requirements_groups (requirement_id, group_id) VALUES (101, 2), (101, 5);
|
|
|
|
-- 7. LINKS & VALIDATIONS
|
|
INSERT INTO requirement_links (source_req_id, target_req_id, relationship_type_id, created_by)
|
|
VALUES (101, 102, 2, 1); -- API Relates to UI
|
|
|
|
INSERT INTO validations (requirement_id, user_id, status_id, req_version_snapshot, comment)
|
|
VALUES (101, 3, 1, 1, 'Logic looks sound, but check the Redis implementation for performance.');
|
|
|
|
-- 8. COMMENTS & REPLIES
|
|
INSERT INTO requirement_comments (id, requirement_id, user_id, comment_text)
|
|
VALUES (50, 101, 3, 'Do we need specific limits for different tiers of users?');
|
|
|
|
INSERT INTO requirement_comment_replies (parent_comment_id, user_id, reply_text)
|
|
VALUES (50, 2, 'Yes, the Premium tier should allow up to 500 requests per minute.');
|
|
|
|
-- Batch inserting 20 requirements for Project 1
|
|
INSERT INTO requirements (id, project_id, user_id, tag_id, status_id, req_name, req_desc, priority_id, version) VALUES
|
|
(201, 1, 2, 1, 2, 'User Authentication', 'System must support OAuth2 and OpenID Connect.', 1, 1),
|
|
(202, 1, 2, 1, 2, 'Password Reset Flow', 'Users must be able to reset passwords via email link.', 2, 1),
|
|
(203, 1, 4, 2, 2, 'Response Time Latency', 'API responses must be under 200ms for 95% of requests.', 1, 1),
|
|
(204, 1, 4, 2, 2, 'Concurrent Users', 'System must support 10,000 concurrent active sessions.', 1, 1),
|
|
(205, 1, 2, 3, 1, 'GDPR Compliance', 'General data protection regulation standards must be met.', 1, 1),
|
|
(206, 1, 2, 4, 2, 'Health Check Endpoint', 'A /health endpoint must return 200 OK status.', 3, 1),
|
|
(207, 1, 4, 5, 2, 'Data Encryption at Rest', 'All database disks must be encrypted using AES-256.', 1, 1),
|
|
(208, 1, 2, 6, 1, 'Legacy Bridge', 'Connectivity to the old mainframe via SOAP.', 3, 1),
|
|
(209, 1, 2, 1, 2, 'Search Functionality', 'Users can search for requirements by name or tag.', 2, 1),
|
|
(210, 1, 4, 2, 2, 'Mobile Responsiveness', 'The dashboard must work on screens down to 320px.', 2, 1),
|
|
(211, 1, 2, 1, 2, 'Export to PDF', 'Users can download a PDF summary of requirements.', 3, 1),
|
|
(212, 1, 4, 2, 2, 'System Uptime', 'The system shall maintain 99.9% availability.', 1, 1),
|
|
(213, 1, 2, 5, 2, 'Audit Log Retention', 'Logs must be kept for 7 years for compliance.', 2, 1),
|
|
(214, 1, 4, 1, 2, 'Batch Upload', 'Support for CSV upload of requirements.', 2, 1),
|
|
(215, 1, 2, 3, 1, 'Multi-language Support', 'Interface available in English, Spanish, and French.', 3, 1),
|
|
(216, 1, 4, 2, 2, 'Memory Usage Limit', 'Microservices should not exceed 512MB RAM.', 2, 1),
|
|
(217, 1, 2, 4, 2, 'API Documentation', 'Auto-generated Swagger/OpenAPI documentation.', 2, 1),
|
|
(218, 1, 4, 5, 2, 'Daily Backups', 'Automated backups every night at 02:00 AM.', 1, 1),
|
|
(219, 1, 2, 6, 1, 'Third-party SSO', 'Integration with Okta and Azure AD.', 2, 1),
|
|
(220, 1, 4, 1, 2, 'Soft Delete', 'Requirements should be marked as deleted before purging.', 2, 1);
|
|
|
|
-- Map some to groups
|
|
INSERT INTO requirements_groups (requirement_id, group_id) VALUES
|
|
(201, 7), (203, 2), (207, 4), (210, 6), (218, 5);
|
|
|
|
INSERT INTO acceptance_criteria (requirement_id, criteria_text, is_accepted, last_editor_id) VALUES
|
|
(201, 'Login works with Google account.', TRUE, 1),
|
|
(201, 'Tokens expire after 1 hour.', FALSE, 2),
|
|
(203, 'Stress test shows <200ms with 5k users.', TRUE, 3),
|
|
(207, 'Verify encryption keys are rotated annually.', FALSE, 4);
|
|
|
|
-- Edit 1: Update Priority and Description of Requirement 201
|
|
UPDATE requirements
|
|
SET priority_id = 1,
|
|
req_desc = 'System must support OAuth2, OpenID Connect, and SAML 2.0.',
|
|
last_editor_id = 1
|
|
WHERE id = 201;
|
|
|
|
-- Edit 2: Change status of a Draft to Regular
|
|
UPDATE requirements
|
|
SET status_id = 2,
|
|
last_editor_id = 2
|
|
WHERE id = 205;
|
|
|
|
-- Edit 3: Change Acceptance Criteria (Triggers ac_history)
|
|
UPDATE acceptance_criteria
|
|
SET is_accepted = TRUE,
|
|
last_editor_id = 3
|
|
WHERE requirement_id = 201 AND criteria_text LIKE 'Tokens%';
|
|
|
|
-- Create a link first
|
|
INSERT INTO requirement_links (source_req_id, target_req_id, relationship_type_id, created_by)
|
|
VALUES (218, 207, 1, 1); -- Backups depend on Encryption
|
|
|
|
-- Delete a requirement (Requirement 220)
|
|
-- This will trigger the audit and clean up links/groups/criteria via CASCADE
|
|
DELETE FROM requirements WHERE id = 220;
|
|
|
|
-- Remove a group association (Requirement 210 from User Experience)
|
|
DELETE FROM requirements_groups WHERE requirement_id = 210 AND group_id = 6; |