Add first risk assememnt implementation

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
Bryan Frimin
2025-04-21 12:49:58 -07:00
parent f403d5ad9e
commit f038642ece
22 changed files with 3168 additions and 654 deletions

View File

@@ -16,7 +16,6 @@ package coredata
import (
"context"
"errors"
"fmt"
"maps"
"time"
@@ -27,34 +26,30 @@ import (
"go.gearno.de/kit/pg"
)
var ErrConcurrentModification = errors.New("concurrent modification")
type (
Vendor struct {
ID gid.GID `db:"id"`
OrganizationID gid.GID `db:"organization_id"`
Name string `db:"name"`
Description *string `db:"description"`
Category string `db:"category"`
ServiceStartAt time.Time `db:"service_start_at"`
ServiceTerminationAt *time.Time `db:"service_termination_at"`
HeadquarterAddress *string `db:"headquarter_address"`
LegalName *string `db:"legal_name"`
WebsiteURL *string `db:"website_url"`
PrivacyPolicyURL *string `db:"privacy_policy_url"`
ServiceLevelAgreementURL *string `db:"service_level_agreement_url"`
DataProcessingAgreementURL *string `db:"data_processing_agreement_url"`
Certifications []string `db:"certifications"`
ServiceCriticality ServiceCriticality `db:"service_criticality"`
RiskTier RiskTier `db:"risk_tier"`
BusinessOwnerID *gid.GID `db:"business_owner_id"`
SecurityOwnerID *gid.GID `db:"security_owner_id"`
StatusPageURL *string `db:"status_page_url"`
TermsOfServiceURL *string `db:"terms_of_service_url"`
SecurityPageURL *string `db:"security_page_url"`
TrustPageURL *string `db:"trust_page_url"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
ID gid.GID `db:"id"`
OrganizationID gid.GID `db:"organization_id"`
Name string `db:"name"`
Description *string `db:"description"`
Category string `db:"category"`
ServiceStartAt time.Time `db:"service_start_at"`
ServiceTerminationAt *time.Time `db:"service_termination_at"`
HeadquarterAddress *string `db:"headquarter_address"`
LegalName *string `db:"legal_name"`
WebsiteURL *string `db:"website_url"`
PrivacyPolicyURL *string `db:"privacy_policy_url"`
ServiceLevelAgreementURL *string `db:"service_level_agreement_url"`
DataProcessingAgreementURL *string `db:"data_processing_agreement_url"`
Certifications []string `db:"certifications"`
BusinessOwnerID *gid.GID `db:"business_owner_id"`
SecurityOwnerID *gid.GID `db:"security_owner_id"`
StatusPageURL *string `db:"status_page_url"`
TermsOfServiceURL *string `db:"terms_of_service_url"`
SecurityPageURL *string `db:"security_page_url"`
TrustPageURL *string `db:"trust_page_url"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
}
Vendors []*Vendor
@@ -93,10 +88,8 @@ SELECT
service_level_agreement_url,
data_processing_agreement_url,
certifications,
service_criticality,
risk_tier,
business_owner_id,
security_owner_id,
business_owner_id,
security_owner_id,
status_page_url,
terms_of_service_url,
security_page_url,
@@ -155,10 +148,8 @@ INSERT INTO
certifications,
service_start_at,
service_termination_at,
service_criticality,
risk_tier,
business_owner_id,
security_owner_id,
security_owner_id,
status_page_url,
terms_of_service_url,
security_page_url,
@@ -182,10 +173,8 @@ VALUES (
@certifications,
@service_start_at,
@service_termination_at,
@service_criticality,
@risk_tier,
@business_owner_id,
@security_owner_id,
@security_owner_id,
@status_page_url,
@terms_of_service_url,
@security_page_url,
@@ -211,8 +200,6 @@ VALUES (
"certifications": v.Certifications,
"service_start_at": v.ServiceStartAt,
"service_termination_at": v.ServiceTerminationAt,
"service_criticality": v.ServiceCriticality,
"risk_tier": v.RiskTier,
"business_owner_id": v.BusinessOwnerID,
"security_owner_id": v.SecurityOwnerID,
"status_page_url": v.StatusPageURL,
@@ -267,10 +254,8 @@ SELECT
certifications,
service_start_at,
service_termination_at,
service_criticality,
risk_tier,
business_owner_id,
security_owner_id,
business_owner_id,
security_owner_id,
status_page_url,
terms_of_service_url,
security_page_url,
@@ -317,8 +302,6 @@ SET
description = @description,
service_start_at = @service_start_at,
service_termination_at = @service_termination_at,
service_criticality = @service_criticality,
risk_tier = @risk_tier,
category = @category,
headquarter_address = @headquarter_address,
legal_name = @legal_name,
@@ -346,8 +329,6 @@ WHERE %s
"description": v.Description,
"service_start_at": v.ServiceStartAt,
"service_termination_at": v.ServiceTerminationAt,
"service_criticality": v.ServiceCriticality,
"risk_tier": v.RiskTier,
"category": v.Category,
"headquarter_address": v.HeadquarterAddress,
"legal_name": v.LegalName,