postgres_entity

package
v0.0.0-...-7e61125 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 20, 2025 License: Apache-2.0 Imports: 24 Imported by: 56

Documentation

Index

Constants

View Source
const (
	DefaultTimezone string = "Etc/UTC"
)
View Source
const KeyPrefix = "cos_"
View Source
const Organization = "organization"

Variables

This section is empty.

Functions

func DecryptToken

func DecryptToken(key string, encryptedToken string) (string, error)

Decrypt a token using AES-GCM

func EncryptToken

func EncryptToken(key string, token string) (string, error)

Encrypt a token using AES-GCM

Types

type APICallLog

type APICallLog struct {
	ID           string         `gorm:"column:id;primaryKey;type:varchar(25)"`
	Vendor       enum.APIVendor `gorm:"column:vendor;type:varchar(255);index;not null"`
	Method       string         `gorm:"column:method;type:varchar(255);not null"`
	URL          string         `gorm:"column:url;type:varchar(255);not null"`
	RequestBody  []byte         `gorm:"column:request_body;type:bytea"`
	Timestamp    time.Time      `gorm:"column:timestamp;type:timestamptz;not null"`
	Duration     int            `gorm:"column:duration;type:int;not null"`
	StatusCode   *int           `gorm:"column:status_code;type:int;not null"`
	ResponseBody *[]byte        `gorm:"column:response_body;type:bytea"`
	ErrorMessage *string        `gorm:"column:error_message;type:text"`
}

func (APICallLog) TableName

func (APICallLog) TableName() string

type Agent

type Agent struct {
	ID           string          `gorm:"primaryKey;type:varchar(32)" json:"id"`
	Type         enum.AgentType  `gorm:"column:type;type:varchar(50);not null;" json:"type"`
	Scope        enum.AgentScope `gorm:"column:agent_scope;type:varchar(255)" json:"agentScope"`
	Tenant       string          `gorm:"column:tenant;type:varchar(255);not null" json:"tenant" binding:"required"`
	Owner        string          `gorm:"column:owner;type:varchar(255)" json:"owner"`
	Managers     pq.StringArray  `gorm:"column:managers;type:varchar[]" json:"managers"`
	Name         string          `gorm:"column:name;type:varchar(255);not null" json:"name" binding:"required"`
	Configured   bool            `gorm:"column:configured;type:boolean;default:false" json:"capabilitiesConfigured"`
	Status       string          `gorm:"column:status;type:varchar(32)" json:"status"`
	IsActive     bool            `gorm:"column:is_active;type:boolean;default:false" json:"isActive"`
	FlowID       string          `gorm:"column:flow_id;type:varchar(255)" json:"flowId"`
	VisibleInUI  bool            `gorm:"column:visible_in_ui;type:boolean;default:true" json:"visibleInUI"`
	CreatedAt    time.Time       `gorm:"column:created_at;autoCreateTime" json:"createdAt"`
	UpdatedAt    *time.Time      `gorm:"column:updated_at;autoUpdateTime" json:"updatedAt"`
	ErrorMessage *string         `gorm:"column:error_message;type:varchar(255)" json:"errorMessage"`
	Color        string          `gorm:"column:color;type:varchar(255)" json:"color"`
	Icon         string          `gorm:"column:icon;type:varchar(255)" json:"icon"`
	RegistryID   string          `gorm:"column:registry_id;type:varchar(32)" json:"registryId"`
	Capabilities []Capability    `gorm:"foreignKey:AgentID" json:"capabilities"`
	Listeners    []Listener      `gorm:"foreignKey:AgentID" json:"listeners"`
}

func (*Agent) BeforeCreate

func (r *Agent) BeforeCreate(tx *gorm.DB) error

func (*Agent) GetCapabilityConfigByType

func (a *Agent) GetCapabilityConfigByType(capabilityType enum.AgentCapability, configPtr any) error

func (*Agent) GetListenerConfigByType

func (a *Agent) GetListenerConfigByType(listenerType enum.AgentListenerEvent, configPtr any) error

func (Agent) TableName

func (Agent) TableName() string

func (*Agent) UpdateCapabilities

func (a *Agent) UpdateCapabilities(updatedCaps []Capability)

func (*Agent) UpdateListeners

func (a *Agent) UpdateListeners(updatedListeners []Listener)

type AgentExecution

type AgentExecution struct {
	ID            string                    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	AgentID       *string                   `gorm:"column:agent_id;type:varchar(50);not null" json:"agent_id" binding:"required"`
	Tenant        string                    `gorm:"column:tenant;type:varchar(255)" json:"tenant"`
	TriggerEvent  string                    `gorm:"column:trigger_event;type:varchar(50)" json:"triggerEvent"`
	FlowID        *string                   `gorm:"column:flow_id;type:varchar(255);" json:"flowId"`
	Status        enum.AgentExecutionStatus `gorm:"column:status;type:varchar(255);not null;default:'PENDING'" json:"status"`
	CreatedAt     time.Time                 `gorm:"column:created_at;autoCreateTime" json:"createdAt"`
	StartedAt     *time.Time                `gorm:"column:started_at" json:"startedAt"`
	UpdatedAt     *time.Time                `gorm:"column:updated_at;autoUpdateTime" json:"updatedAt"`
	CompletedAt   *time.Time                `gorm:"column:completed_at" json:"completedAt"`
	ErrorMessage  *string                   `gorm:"column:error_message;type:text" json:"errorMessage"`
	GoalAchieved  *bool                     `gorm:"column:goal_achieved;type:boolean" json:"goalAchieved"`
	TraceId       string                    `gorm:"column:trace_id;type:varchar(255)" json:"traceId"`
	TraceIdLatest string                    `gorm:"column:trace_id_latest;type:varchar(255)" json:"traceIdLatest"`
	ImpactedId    *string                   `gorm:"column:impacted_id;type:varchar(255)" json:"impactedId"`

	// Retry related fields
	RetryCount  int        `gorm:"column:retry_count;type:int;default:0" json:"retryCount"` // Number of completed retries
	MaxRetries  int        `gorm:"column:max_retries;type:int;default:12" json:"maxRetries"`
	NextRetryAt *time.Time `gorm:"column:next_retry_at" json:"nextRetryAt"`

	// Async state management
	StateData   JSONMap `gorm:"column:state_data;type:jsonb" json:"stateData"`            // Stores execution state for resume
	CurrentStep string  `gorm:"column:current_step;type:varchar(255)" json:"currentStep"` // Current capability being executed
	Checkpoints JSONMap `gorm:"column:checkpoints;type:jsonb" json:"checkpoints"`         // Stores completion state of each step
}

func (AgentExecution) TableName

func (AgentExecution) TableName() string

type AgentPlay

type AgentPlay struct {
	AgentRegistryID string         `gorm:"column:agent_registry_id;type:varchar(21);primaryKey" json:"agentRegistryId"`
	AgentType       enum.AgentType `gorm:"column:agent_type;type:varchar(255);not null;index" json:"agentType" binding:"required"`
	TriggerEvent    string         `gorm:"column:trigger_event;type:varchar(255);primaryKey" json:"triggerEvent"`
	Capabilities    pq.StringArray `gorm:"column:capabilities;type:varchar[]" json:"capabilities"`
}

func (*AgentPlay) BeforeCreate

func (r *AgentPlay) BeforeCreate(tx *gorm.DB) error

func (AgentPlay) TableName

func (AgentPlay) TableName() string

func (*AgentPlay) ValidatePlay

func (r *AgentPlay) ValidatePlay() error

func (*AgentPlay) ValidateTrigger

func (r *AgentPlay) ValidateTrigger() error

type AgentRegistry

type AgentRegistry struct {
	ID               string          `gorm:"primaryKey;type:varchar(21)" json:"id"`
	Type             enum.AgentType  `gorm:"column:type;type:varchar(255);not null;index" json:"type" binding:"required"`
	AgentName        string          `gorm:"column:agent_name;type:varchar(255)" json:"agentName"`
	Description      string          `gorm:"column:description;type:text" json:"description"`
	Scope            enum.AgentScope `gorm:"column:agent_scope;type:varchar(255)" json:"agentScope"`
	Filename         string          `gorm:"column:filename;type:varchar(255)" json:"filename"`
	CompletionEvents pq.StringArray  `gorm:"column:completion_events;type:varchar[]" json:"completionEvents"`
	ListenerEvents   pq.StringArray  `gorm:"column:listener_events;type:varchar[]" json:"listenerEvents"`
	Capabilities     pq.StringArray  `gorm:"column:capabilities;type:varchar[]" json:"capabilities"`
	Version          string          `gorm:"column:version;type:varchar(21)" json:"version"`
	Goal             string          `gorm:"column:goal;type:varchar(255)" json:"goal"`
	Metric           string          `gorm:"column:metric;type:varchar(255)" json:"metric"`
	IsActive         bool            `gorm:"column:is_active;type:boolean;default:true" json:"isActive"`
	IsUnique         bool            `gorm:"column:unique;type:boolean;default:false" json:"unique"`
	Icon             string          `gorm:"column:icon;type:text" json:"icon"`
}

func (*AgentRegistry) BeforeCreate

func (r *AgentRegistry) BeforeCreate(tx *gorm.DB) error

func (AgentRegistry) TableName

func (AgentRegistry) TableName() string

func (*AgentRegistry) ValidateCapabilities

func (r *AgentRegistry) ValidateCapabilities() error

func (*AgentRegistry) ValidateEvents

func (r *AgentRegistry) ValidateEvents() error

type AiLocationMapping

type AiLocationMapping struct {
	ID           uint64    `gorm:"primary_key;autoIncrement:true" json:"id"`
	CreatedAt    time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	Input        string    `gorm:"column:input;type:text;NOT NULL;" json:"input"`
	ResponseJson string    `gorm:"column:response_json;type:text;NOT NULL;" json:"responseJson"`
}

func (AiLocationMapping) TableName

func (AiLocationMapping) TableName() string

type ApiBillableEvent

type ApiBillableEvent struct {
	ID            uint64        `gorm:"primary_key;autoIncrement" json:"id"`
	Tenant        string        `gorm:"column:tenant;type:varchar(255);NOT NULL" json:"tenant"`
	Event         BillableEvent `gorm:"column:event;type:varchar(255);NOT NULL;index:idx_tenant_event" json:"event"`
	Subtype       string        `gorm:"column:subtype;type:varchar(255)" json:"subtype,omitempty"`
	Source        string        `gorm:"column:source;type:varchar(255)" json:"source,omitempty"`
	ExternalID    string        `gorm:"column:external_id;type:varchar(255);index" json:"externalId"`
	ReferenceData string        `gorm:"column:reference_data;type:text" json:"referenceData,omitempty"`
	CreatedAt     time.Time     `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
}

ApiBillableEvent represents a chargeable event in your system

func (ApiBillableEvent) TableName

func (ApiBillableEvent) TableName() string

TableName sets the name of the table for GORM

type BaseEntity

type BaseEntity struct {
	ID        string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;not null" json:"createdAt,omitempty"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;not null" json:"updatedAt,omitempty"`
}

type BetterContactResponseBody

type BetterContactResponseBody struct {
	Id      string `json:"id"`
	Status  string `json:"status"`
	Summary struct {
		Total         int `json:"total"`
		Valid         int `json:"valid"`
		Undeliverable int `json:"undeliverable"`
		NotFound      int `json:"not_found"`
	} `json:"summary"`
	Data []struct {
		Enriched                     bool          `json:"enriched"`
		EmailProvider                string        `json:"email_provider"`
		CompanyName                  string        `json:"company_name"`
		CompanyDomain                string        `json:"company_domain"`
		ContactGender                interface{}   `json:"contact_gender"`
		CompanyIndustry              interface{}   `json:"company_industry"`
		CompanyLegalId               interface{}   `json:"company_legal_id"`
		ContactJobTitle              interface{}   `json:"contact_job_title"`
		ContactLastName              string        `json:"contact_last_name"`
		CompanyLegalName             interface{}   `json:"company_legal_name"`
		ContactFirstName             string        `json:"contact_first_name"`
		CompanyAddressCity           interface{}   `json:"company_address_city"`
		CompanyLinkedinUrl           interface{}   `json:"company_linkedin_url"`
		CompanyPhoneNumber           interface{}   `json:"company_phone_number"`
		ContactPhoneNumber           interface{}   `json:"contact_phone_number"`
		CompanyAddressState          interface{}   `json:"company_address_state"`
		CompanyIndustryCode          interface{}   `json:"company_industry_code"`
		ContactEmailAddress          string        `json:"contact_email_address"`
		CompanyAddressStreet         interface{}   `json:"company_address_street"`
		CompanyAddressCountry        interface{}   `json:"company_address_country"`
		CompanyAddressZipcode        interface{}   `json:"company_address_zipcode"`
		CompanyEmployeesNumber       interface{}   `json:"company_employees_number"`
		ContactEmailAddressStatus    string        `json:"contact_email_address_status"`
		ContactLinkedinProfileUrl    string        `json:"contact_linkedin_profile_url"`
		ContactEmailAddressProvider  string        `json:"contact_email_address_provider"`
		ContactAdditionalPhoneNumber interface{}   `json:"contact_additional_phone_number"`
		CustomFields                 []interface{} `json:"custom_fields"`
	} `json:"data"`
}

type BillableEvent

type BillableEvent string

BillableEvent is a custom type representing various events

const (
	BillableEventEmailVerifiedCatchAll     BillableEvent = "email_verified_catch_all"
	BillableEventEmailVerifiedNotCatchAll  BillableEvent = "email_verified_not_catch_all"
	BillableEventEnrichPersonEmailFound    BillableEvent = "enrich_person_email_found"
	BillableEventEnrichPersonPhoneFound    BillableEvent = "enrich_person_phone_found"
	BillableEventEnrichOrganizationSuccess BillableEvent = "enrich_organization_success"
	BillableEventIpVerificationSuccess     BillableEvent = "ip_verification_success"
	BillableEventFlowActionExecuted        BillableEvent = "flow_action_executed"
)

Constants for predefined Billable Events

type BrandfetchCompany

type BrandfetchCompany struct {
	Employees   any                  `json:"employees,omitempty"`
	FoundedYear int64                `json:"foundedYear,omitempty"`
	Industries  []BrandfetchIndustry `json:"industries,omitempty"`
	Kind        string               `json:"kind,omitempty"`
	Location    struct {
		City          string `json:"city,omitempty"`
		Country       string `json:"country,omitempty"`
		CountryCodeA2 string `json:"countryCode,omitempty"`
		Region        string `json:"region,omitempty"`
		State         string `json:"state,omitempty"`
		SubRegion     string `json:"subRegion,omitempty"`
	} `json:"location,omitempty"`
}

func (BrandfetchCompany) GetEmployees

func (bc BrandfetchCompany) GetEmployees() int64

func (BrandfetchCompany) LocationIsEmpty

func (bc BrandfetchCompany) LocationIsEmpty() bool

type BrandfetchIndustry

type BrandfetchIndustry struct {
	Score  float64 `json:"score,omitempty"`
	Name   string  `json:"name,omitempty"`
	Emoji  string  `json:"emoji,omitempty"`
	Slug   string  `json:"slug,omitempty"`
	Parent struct {
		Emoji string `json:"emoji,omitempty"`
		Name  string `json:"name,omitempty"`
		Slug  string `json:"slug,omitempty"`
	} `json:"parent,omitempty"`
}
type BrandfetchLink struct {
	Name string `json:"name,omitempty"`
	Url  string `json:"url,omitempty"`
}

type BrandfetchResponseBody

type BrandfetchResponseBody struct {
	Message         string            `json:"message,omitempty"`
	Id              string            `json:"id,omitempty"`
	Name            string            `json:"name,omitempty"`
	Domain          string            `json:"domain,omitempty"`
	Claimed         bool              `json:"claimed"`
	Description     string            `json:"description,omitempty"`
	LongDescription string            `json:"longDescription,omitempty"`
	Links           []BrandfetchLink  `json:"links,omitempty"`
	Logos           []BranfetchLogo   `json:"logos,omitempty"`
	QualityScore    float64           `json:"qualityScore,omitempty"`
	Company         BrandfetchCompany `json:"company,omitempty"`
	IsNsfw          bool              `json:"isNsfw"`
}

func (BrandfetchResponseBody) GetIconUrls

func (b BrandfetchResponseBody) GetIconUrls() []string

func (BrandfetchResponseBody) GetLogoUrls

func (b BrandfetchResponseBody) GetLogoUrls() []string

func (BrandfetchResponseBody) IsEmpty

func (b BrandfetchResponseBody) IsEmpty() bool
type BranfetchLogo struct {
	Theme   string                `json:"theme,omitempty"`
	Type    string                `json:"type,omitempty"`
	Formats []BranfetchLogoFormat `json:"formats,omitempty"`
}

type BranfetchLogoFormat

type BranfetchLogoFormat struct {
	Src        string `json:"src,omitempty"`
	Background string `json:"background,omitempty"`
	Format     string `json:"format,omitempty"`
	Height     int64  `json:"height,omitempty"`
	Width      int64  `json:"width,omitempty"`
	Size       int64  `json:"size,omitempty"`
}

type BrowserAutomationsRun

type BrowserAutomationsRun struct {
	Id              int    `gorm:"primary_key;autoIncrement:true"`
	BrowserConfigId int    `gorm:"column:browser_config_id;type:integer"`
	UserId          string `gorm:"column:user_id;type:varchar(36);"`
	Tenant          string `gorm:"column:tenant;type:varchar(36);"`
	Type            string `gorm:"column:type;type:browser_automation_run_type;"`
	Status          string `gorm:"column:status;type:browser_automation_run_status;"`
	Payload         string `gorm:"column:payload;type:text;"`
}

func (BrowserAutomationsRun) TableName

func (BrowserAutomationsRun) TableName() string

type BrowserAutomationsRunResult

type BrowserAutomationsRunResult struct {
	Id         uint64 `gorm:"primary_key;autoIncrement:true"`
	RunId      int    `gorm:"column:run_id;type:integer"`
	ResultData string `gorm:"column:result_data;type:text;"`
}

func (BrowserAutomationsRunResult) TableName

func (BrowserAutomationsRunResult) TableName() string

type BrowserConfig

type BrowserConfig struct {
	Id     int    `gorm:"primary_key;autoIncrement:true"`
	UserId string `gorm:"column:user_id;type:varchar(36);"`
	Tenant string `gorm:"column:tenant;type:varchar(36);"`
	Status string `gorm:"column:session_status;type:browser_config_session_status;"`
}

func (BrowserConfig) TableName

func (BrowserConfig) TableName() string

type CacheCrustData

type CacheCrustData struct {
	ID                   uint64    `gorm:"column:id;primaryKey;autoIncrement" json:"id"`
	RequestCompanyDomain string    `gorm:"column:request_company_domain;type:varchar(255)" json:"requestCompany"` // Organization primary domain
	RequestJobTitle      string    `gorm:"column:request_job_title;varchar(255)" json:"requestJobTitle"`          // List of job titles
	Response             string    `gorm:"column:response;type:text" json:"response"`
	CreatedAt            time.Time `gorm:"type:timestamp;default:current_timestamp" json:"created_at"`
	UpdatedAt            time.Time `gorm:"type:timestamp;default:current_timestamp" json:"updated_at"`
}

CacheCrustData represents the cache table for Crust Data API responses

func (CacheCrustData) TableName

func (CacheCrustData) TableName() string

type CacheEmailEnrow

type CacheEmailEnrow struct {
	ID            string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	RequestID     string    `gorm:"column:request_id;type:varchar(255);NOT NULL" json:"requestId"`
	CreatedAt     time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt     time.Time `gorm:"column:updated_at;type:timestamp;" json:"updatedAt"`
	Email         string    `gorm:"column:email;type:varchar(255);NOT NULL" json:"email"`
	Qualification string    `gorm:"column:qualification;type:varchar(255)" json:"qualification"`
	Data          string    `gorm:"column:data;type:text" json:"data"`
}

func (CacheEmailEnrow) TableName

func (CacheEmailEnrow) TableName() string

type CacheEmailScrubby

type CacheEmailScrubby struct {
	ID        string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	CheckedAt time.Time `gorm:"column:checked_at;type:timestamp" json:"checkedAt"`
	Email     string    `gorm:"column:email;type:varchar(255);NOT NULL" json:"domain"`
	Status    string    `gorm:"column:status;type:varchar(255)" json:"status"`
}

func (CacheEmailScrubby) TableName

func (CacheEmailScrubby) TableName() string

type CacheEmailTrueinbox

type CacheEmailTrueinbox struct {
	ID        string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	Email     string    `gorm:"column:email;type:varchar(255);NOT NULL" json:"email"`
	Result    string    `gorm:"column:result;type:varchar(255)" json:"result"`
	Data      string    `gorm:"column:data;type:text" json:"data"`
}

func (CacheEmailTrueinbox) TableName

func (CacheEmailTrueinbox) TableName() string

type CacheEmailValidation

type CacheEmailValidation struct {
	ID                  string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	CreatedAt           time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt           time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	Email               string    `gorm:"column:email;type:varchar(255);NOT NULL;index:idx_cache_email_validation_email,unique" json:"email"`
	NormalizedEmail     string    `gorm:"column:normalized_email;type:varchar(255)" json:"normalizedEmail"`
	Username            string    `gorm:"column:username;type:varchar(255)" json:"username"`
	Domain              string    `gorm:"column:domain;type:varchar(255)" json:"domain"`
	IsMailboxFull       bool      `gorm:"column:is_mailbox_full;type:boolean" json:"isMailboxFull"`
	IsRoleAccount       bool      `gorm:"column:is_role_account;type:boolean" json:"isRoleAccount"`
	IsSystemGenerated   bool      `gorm:"column:is_system_generated;type:boolean" json:"isSystemGenerated"`
	IsFreeAccount       bool      `gorm:"column:is_free_account;type:boolean" json:"isFreeAccount"`
	SmtpSuccess         bool      `gorm:"column:smtp_success;type:boolean" json:"smtpSuccess"`
	ResponseCode        string    `gorm:"column:response_code;type:varchar(255)" json:"responseCode"`
	ErrorCode           string    `gorm:"column:error_code;type:varchar(255)" json:"errorCode"`
	Description         string    `gorm:"column:description;type:text" json:"description"`
	TLSRequired         bool      `gorm:"column:tls_required;type:boolean" json:"tlsRequired"`
	RetryValidation     bool      `gorm:"column:retry_validation;type:boolean" json:"retryValidation"`
	Deliverable         string    `gorm:"column:deliverable;type:varchar(16)" json:"deliverable"`
	HealthIsGreylisted  bool      `gorm:"column:health_is_greylisted;type:boolean" json:"healthIsGreylisted"`
	HealthIsBlacklisted bool      `gorm:"column:health_is_blacklisted;type:boolean" json:"healthIsBlacklisted"`
	HealthServerIP      string    `gorm:"column:health_server_ip;type:varchar(255)" json:"healthServerIP"`
	HealthFromEmail     string    `gorm:"column:health_from_email;type:varchar(255)" json:"healthFromEmail"`
	HealthRetryAfter    int       `gorm:"column:health_retry_after;type:integer" json:"healthRetryAfter"`
	AlternateEmail      string    `gorm:"column:alternate_email;type:varchar(255)" json:"alternateEmail"`
	Error               string    `gorm:"column:error;type:varchar(255)" json:"error"`
	Data                string    `gorm:"column:data;type:text" json:"data"`
}

func (CacheEmailValidation) TableName

func (CacheEmailValidation) TableName() string

type CacheEmailValidationDomain

type CacheEmailValidationDomain struct {
	ID                  string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	CreatedAt           time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt           time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	Domain              string    `gorm:"column:domain;type:varchar(255);NOT NULL;index:idx_cache_email_validation_domain_domain,unique" json:"domain"`
	IsCatchAll          bool      `gorm:"column:is_catch_all;type:boolean" json:"isCatchAll"`
	IsFirewalled        bool      `gorm:"column:is_firewalled;type:boolean" json:"isFirewalled"`
	Provider            string    `gorm:"column:provider;type:varchar(255)" json:"provider"`
	Firewall            string    `gorm:"column:firewall;type:varchar(255)" json:"firewall"`
	HasMXRecord         bool      `gorm:"column:has_mx_record;type:boolean" json:"hasMXRecord"`
	HasSPFRecord        bool      `gorm:"column:has_spf_record;type:boolean" json:"hasSPFRecord"`
	Error               string    `gorm:"column:error;type:varchar(255)" json:"error"`
	Data                string    `gorm:"column:data;type:text" json:"data"`
	CanConnectSMTP      bool      `gorm:"column:can_connect_smtp;type:boolean" json:"canConnectSMTP"`
	TLSRequired         bool      `gorm:"column:tls_required;type:boolean" json:"tlsRequired"`
	ResponseCode        string    `gorm:"column:response_code;type:varchar(255)" json:"responseCode"`
	ErrorCode           string    `gorm:"column:error_code;type:varchar(255)" json:"errorCode"`
	Description         string    `gorm:"column:description;type:text" json:"description"`
	HealthIsGreylisted  bool      `gorm:"column:health_is_greylisted;type:boolean" json:"healthIsGreylisted"`
	HealthIsBlacklisted bool      `gorm:"column:health_is_blacklisted;type:boolean" json:"healthIsBlacklisted"`
	HealthServerIP      string    `gorm:"column:health_server_ip;type:varchar(255)" json:"healthServerIP"`
	HealthFromEmail     string    `gorm:"column:health_from_email;type:varchar(255)" json:"healthFromEmail"`
	HealthRetryAfter    int       `gorm:"column:health_retry_after;type:integer" json:"healthRetryAfter"`
	IsPrimaryDomain     *bool     `gorm:"column:is_primary_domain;type:boolean" json:"isPrimaryDomain"`
	PrimaryDomain       string    `gorm:"column:primary_domain;type:varchar(255)" json:"primaryDomain"`
}

func (CacheEmailValidationDomain) TableName

func (CacheEmailValidationDomain) TableName() string

type CacheIPIdentify

type CacheIPIdentify struct {
	ID           string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	IPAddress    string    `gorm:"column:ip_address;type:varchar(255)" json:"ipAddress"`
	Domain       string    `gorm:"column:domain;type:varchar(255)" json:"domain"`
	LinkedinSlug string    `gorm:"column:linkedin_slug;type:varchar(255)" json:"linkedinSlug"`
	CreatedAt    time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt    time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	SnitcherData string    `gorm:"column:snitcher_data;type:text" json:"snitcherData"`
	SourceEmail  string    `gorm:"column:source_email;type:text" json:"sourceEmail"`
}

func (CacheIPIdentify) TableName

func (CacheIPIdentify) TableName() string

type CacheIpData

type CacheIpData struct {
	ID        string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	Ip        string    `gorm:"column:ip;type:varchar(255);NOT NULL;index:idx_cache_ip_data_ip,unique" json:"ip"`
	Data      string    `gorm:"column:data;type:text" json:"data"`
}

func (CacheIpData) TableName

func (CacheIpData) TableName() string

type CacheIpHunter

type CacheIpHunter struct {
	ID        string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	Ip        string    `gorm:"column:ip;type:varchar(255);NOT NULL;index:idx_cache_ip_hunter_ip,unique" json:"ip"`
	Data      string    `gorm:"column:data;type:text" json:"data"`
}

func (CacheIpHunter) TableName

func (CacheIpHunter) TableName() string

type Capability

type Capability struct {
	ID                string               `gorm:"primaryKey;type:varchar(32)" json:"id"`
	Tenant            string               `gorm:"column:tenant;type:varchar(255)" json:"tenant"`
	Position          int                  `gorm:"column:position;type:integer" json:"order"`
	AgentID           string               `gorm:"column:agent_id;type:varchar(32);not null" json:"agentId"`
	Name              string               `gorm:"column:name;type:varchar(255);not null" json:"name"`
	Type              enum.AgentCapability `gorm:"column:type;type:varchar(50);not null" json:"type"`
	Error             string               `gorm:"column:error;type:varchar(255)" json:"error"`
	Active            bool                 `gorm:"column:active;type:boolean" json:"active"`
	CreatedAt         time.Time            `gorm:"column:created_at;autoCreateTime" json:"createdAt"`
	UpdatedAt         *time.Time           `gorm:"column:updated_at;autoUpdateTime" json:"updatedAt"`
	ConfigHandlerImpl `gorm:"embedded"`
}

Capability as a separate entity

func (*Capability) BeforeCreate

func (c *Capability) BeforeCreate(tx *gorm.DB) error

func (Capability) TableName

func (Capability) TableName() string

type ColumnView

type ColumnView struct {
	ColumnId      int    `json:"columnId"`
	ColumnType    string `json:"columnType"`
	Width         int    `json:"width"`
	Visible       bool   `json:"visible"`
	Name          string `json:"name"`
	Filter        string `json:"filter"`
	DefaultFilter string `json:"defaultFilter"`
}

type ColumnViewType

type ColumnViewType string
const (
	ColumnViewTypeInvoicesIssueDate                  ColumnViewType = "INVOICES_ISSUE_DATE"
	ColumnViewTypeInvoicesIssueDatePast              ColumnViewType = "INVOICES_ISSUE_DATE_PAST"
	ColumnViewTypeInvoicesDueDate                    ColumnViewType = "INVOICES_DUE_DATE"
	ColumnViewTypeInvoicesContract                   ColumnViewType = "INVOICES_CONTRACT"
	ColumnViewTypeInvoicesBillingCycle               ColumnViewType = "INVOICES_BILLING_CYCLE"
	ColumnViewTypeInvoicesInvoiceNumber              ColumnViewType = "INVOICES_INVOICE_NUMBER"
	ColumnViewTypeInvoicesAmount                     ColumnViewType = "INVOICES_AMOUNT"
	ColumnViewTypeInvoicesInvoiceStatus              ColumnViewType = "INVOICES_INVOICE_STATUS"
	ColumnViewTypeInvoicesInvoicePreview             ColumnViewType = "INVOICES_INVOICE_PREVIEW"
	ColumnViewTypeInvoicesOrganization               ColumnViewType = "INVOICES_ORGANIZATION"
	ColumnViewTypeOrganizationsAvatar                ColumnViewType = "ORGANIZATIONS_AVATAR"
	ColumnViewTypeOrganizationsName                  ColumnViewType = "ORGANIZATIONS_NAME"
	ColumnViewTypeOrganizationsPrimaryDomains        ColumnViewType = "ORGANIZATIONS_PRIMARY_DOMAINS"
	ColumnViewTypeOrganizationsOwner                 ColumnViewType = "ORGANIZATIONS_OWNER"
	ColumnViewTypeOrganizationsStage                 ColumnViewType = "ORGANIZATIONS_STAGE"
	ColumnViewTypeOrganizationsContactCount          ColumnViewType = "ORGANIZATIONS_CONTACT_COUNT"
	ColumnViewTypeOrganizationsSocials               ColumnViewType = "ORGANIZATIONS_SOCIALS"
	ColumnViewTypeOrganizationsLeadSource            ColumnViewType = "ORGANIZATIONS_LEAD_SOURCE"
	ColumnViewTypeOrganizationsCreatedDate           ColumnViewType = "ORGANIZATIONS_CREATED_DATE"
	ColumnViewTypeOrganizationsEmployeeCount         ColumnViewType = "ORGANIZATIONS_EMPLOYEE_COUNT"
	ColumnViewTypeOrganizationsYearFounded           ColumnViewType = "ORGANIZATIONS_YEAR_FOUNDED"
	ColumnViewTypeOrganizationsIndustry              ColumnViewType = "ORGANIZATIONS_INDUSTRY"
	ColumnViewTypeOrganizationsCountry               ColumnViewType = "ORGANIZATIONS_COUNTRY"
	ColumnViewTypeOrganizationsCity                  ColumnViewType = "ORGANIZATIONS_CITY"
	ColumnViewTypeOrganizationsHeadquarters          ColumnViewType = "ORGANIZATIONS_HEADQUARTERS"
	ColumnViewTypeOrganizationsIsPublic              ColumnViewType = "ORGANIZATIONS_IS_PUBLIC"
	ColumnViewTypeOrganizationsLinkedinFollowerCount ColumnViewType = "ORGANIZATIONS_LINKEDIN_FOLLOWER_COUNT"
	ColumnViewTypeOrganizationsTags                  ColumnViewType = "ORGANIZATIONS_TAGS"
	ColumnViewTypeOrganizationsUpdatedDate           ColumnViewType = "ORGANIZATIONS_UPDATED_DATE"
	ColumnViewTypeOrganizationsIcpFit                ColumnViewType = "ORGANIZATIONS_ICP_FIT"
	ColumnViewTypeOrganizationsQualificationStatus   ColumnViewType = "ORGANIZATIONS_QUALIFICATION_STATUS"
	ColumnViewTypeContactsAvatar                     ColumnViewType = "CONTACTS_AVATAR"
	ColumnViewTypeContactsName                       ColumnViewType = "CONTACTS_NAME"
	ColumnViewTypeContactsOrganization               ColumnViewType = "CONTACTS_ORGANIZATION"
	ColumnViewTypeContactsEmails                     ColumnViewType = "CONTACTS_EMAILS"
	ColumnViewTypeContactsPersonalEmails             ColumnViewType = "CONTACTS_PERSONAL_EMAILS"
	ColumnViewTypeContactsPrimaryEmail               ColumnViewType = "CONTACTS_PRIMARY_EMAIL"
	ColumnViewTypeEmailVerificationPrimaryEmail      ColumnViewType = "EMAIL_VERIFICATION_PRIMARY_EMAIL"
	ColumnViewTypeContactsPhoneNumbers               ColumnViewType = "CONTACTS_PHONE_NUMBERS"
	ColumnViewTypeContactsLinkedin                   ColumnViewType = "CONTACTS_LINKEDIN"
	ColumnViewTypeContactsCity                       ColumnViewType = "CONTACTS_CITY"
	ColumnViewTypeContactsPersona                    ColumnViewType = "CONTACTS_PERSONA"
	ColumnViewTypeContactsLastInteraction            ColumnViewType = "CONTACTS_LAST_INTERACTION"
	ColumnViewTypeContactsCountry                    ColumnViewType = "CONTACTS_COUNTRY"
	ColumnViewTypeContactsRegion                     ColumnViewType = "CONTACTS_REGION"
	ColumnViewTypeContactsSkills                     ColumnViewType = "CONTACTS_SKILLS"
	ColumnViewTypeContactsSchools                    ColumnViewType = "CONTACTS_SCHOOLS"
	ColumnViewTypeContactsLanguages                  ColumnViewType = "CONTACTS_LANGUAGES"
	ColumnViewTypeContactsTimeInCurrentRole          ColumnViewType = "CONTACTS_TIME_IN_CURRENT_ROLE"
	ColumnViewTypeContactsExperience                 ColumnViewType = "CONTACTS_EXPERIENCE"
	ColumnViewTypeContactsLinkedinFollowerCount      ColumnViewType = "CONTACTS_LINKEDIN_FOLLOWER_COUNT"
	ColumnViewTypeContactsJobTitle                   ColumnViewType = "CONTACTS_JOB_TITLE"
	ColumnViewTypeContactsTags                       ColumnViewType = "CONTACTS_TAGS"
	ColumnViewTypeContactsConnections                ColumnViewType = "CONTACTS_CONNECTIONS"
	ColumnViewTypeContactsFlows                      ColumnViewType = "CONTACTS_FLOWS"
	ColumnViewTypeContactsFlowStatus                 ColumnViewType = "CONTACTS_FLOW_STATUS"
	ColumnViewTypeContactsFlowNextAction             ColumnViewType = "CONTACTS_FLOW_NEXT_ACTION"
	ColumnViewTypeContactsUpdatedAt                  ColumnViewType = "CONTACTS_UPDATED_AT"
	ColumnViewTypeContactsCreatedAt                  ColumnViewType = "CONTACTS_CREATED_AT"
	ColumnViewTypeOpportunitiesCommonColumn          ColumnViewType = "OPPORTUNITIES_COMMON_COLUMN"
	ColumnViewTypeOpportunitiesName                  ColumnViewType = "OPPORTUNITIES_NAME"
	ColumnViewTypeOpportunitiesOrganization          ColumnViewType = "OPPORTUNITIES_ORGANIZATION"
	ColumnViewTypeOpportunitiesStage                 ColumnViewType = "OPPORTUNITIES_STAGE"
	ColumnViewTypeOpportunitiesEstimatedArr          ColumnViewType = "OPPORTUNITIES_ESTIMATED_ARR"
	ColumnViewTypeOpportunitiesOwner                 ColumnViewType = "OPPORTUNITIES_OWNER"
	ColumnViewTypeOpportunitiesTimeInStage           ColumnViewType = "OPPORTUNITIES_TIME_IN_STAGE"
	ColumnViewTypeOpportunitiesCreatedDate           ColumnViewType = "OPPORTUNITIES_CREATED_DATE"
	ColumnViewTypeOpportunitiesNextStep              ColumnViewType = "OPPORTUNITIES_NEXT_STEP"
	ColumnViewTypeOpportunitiesTasks                 ColumnViewType = "OPPORTUNITIES_TASKS"
	ColumnViewTypeContractsName                      ColumnViewType = "CONTRACTS_NAME"
	ColumnViewTypeContractsEnded                     ColumnViewType = "CONTRACTS_ENDED"
	ColumnViewTypeContractsPeriod                    ColumnViewType = "CONTRACTS_PERIOD"
	ColumnViewTypeContractsCurrency                  ColumnViewType = "CONTRACTS_CURRENCY"
	ColumnViewTypeContractsStatus                    ColumnViewType = "CONTRACTS_STATUS"
	ColumnViewTypeContractsRenewal                   ColumnViewType = "CONTRACTS_RENEWAL"
	ColumnViewTypeContractsLtv                       ColumnViewType = "CONTRACTS_LTV"
	ColumnViewTypeContractsRenewalDate               ColumnViewType = "CONTRACTS_RENEWAL_DATE"
	ColumnViewTypeContractsForecastArr               ColumnViewType = "CONTRACTS_FORECAST_ARR"
	ColumnViewTypeContractsOwner                     ColumnViewType = "CONTRACTS_OWNER"
	ColumnViewTypeContractsHealth                    ColumnViewType = "CONTRACTS_HEALTH"
	ColumnViewTypeContractsOrganizationLegalName     ColumnViewType = "CONTRACTS_ORGANIZATION_LEGAL_NAME"
	ColumnViewTypeFlowName                           ColumnViewType = "FLOW_NAME"
	ColumnViewTypeFlowTotalCount                     ColumnViewType = "FLOW_TOTAL_COUNT"
	ColumnViewTypeFlowOnHoldCount                    ColumnViewType = "FLOW_ON_HOLD_COUNT"
	ColumnViewTypeFlowReadyCount                     ColumnViewType = "FLOW_READY_COUNT"
	ColumnViewTypeFlowScheduledCount                 ColumnViewType = "FLOW_SCHEDULED_COUNT"
	ColumnViewTypeFlowInProgressCount                ColumnViewType = "FLOW_IN_PROGRESS_COUNT"
	ColumnViewTypeFlowCompletedCount                 ColumnViewType = "FLOW_COMPLETED_COUNT"
	ColumnViewTypeFlowGoalAchievedCount              ColumnViewType = "FLOW_GOAL_ACHIEVED_COUNT"
	ColumnViewTypeFlowStatus                         ColumnViewType = "FLOW_STATUS"
	ColumnViewTypeFlowActionName                     ColumnViewType = "FLOW_ACTION_NAME"
	ColumnViewTypeFlowActionStatus                   ColumnViewType = "FLOW_ACTION_STATUS"
	ColumnViewTypeTasksSubject                       ColumnViewType = "TASKS_SUBJECT"
	ColumnViewTypeTasksAssignees                     ColumnViewType = "TASKS_ASSIGNEES"
	ColumnViewTypeTasksDescription                   ColumnViewType = "TASKS_DESCRIPTION"
	ColumnViewTypeTasksDueDate                       ColumnViewType = "TASKS_DUE_DATE"
	ColumnViewTypeTasksStatus                        ColumnViewType = "TASKS_STATUS"
	ColumnViewTypeTasksAuthor                        ColumnViewType = "TASKS_AUTHOR"
	ColumnViewTypeTasksCreatedAt                     ColumnViewType = "TASKS_CREATED_AT"
	ColumnViewTypeTasksUpdatedAt                     ColumnViewType = "TASKS_UPDATED_AT"
	ColumnViewTypeTasksOpportunities                 ColumnViewType = "TASKS_OPPORTUNITIES"
)

type Columns

type Columns struct {
	Columns []ColumnView `json:"columns"`
}

type ConfigHandler

type ConfigHandler interface {
	SetConfig(config any) error
	GetConfig(configPtr any) error
	GetConfigString() string
}

ConfigHandler interface for common config operations

type ConfigHandlerImpl

type ConfigHandlerImpl struct {
	Config JSONConfig `gorm:"column:config;type:jsonb" json:"config"`
}

ConfigHandlerImpl implements common config handling

func (*ConfigHandlerImpl) GetConfig

func (ch *ConfigHandlerImpl) GetConfig(configPtr any) error

func (*ConfigHandlerImpl) GetConfigString

func (ch *ConfigHandlerImpl) GetConfigString() string

func (*ConfigHandlerImpl) SetConfig

func (ch *ConfigHandlerImpl) SetConfig(config any) error

type CosApiEnrichPersonTempResult

type CosApiEnrichPersonTempResult struct {
	ID                    uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	Tenant                string    `gorm:"column:tenant;type:varchar(255);" json:"tenant"`
	CreatedAt             time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	ScrapinRecordId       uint64    `gorm:"column:scrapin_record_id;type:bigint;" json:"scrapinRecordId"`
	BettercontactRecordId string    `gorm:"column:bettercontact_record_id;type:varchar(255);" json:"bettercontactRecordId"`
}

func (CosApiEnrichPersonTempResult) TableName

type CurrencyRate

type CurrencyRate struct {
	ID        uint64    `gorm:"primary_key;autoIncrement:true"`
	Currency  string    `gorm:"type:varchar(3);not null"` // Currency code (e.g., EUR, GBP, etc.)
	Rate      float64   `gorm:"not null"`                 // Exchange rate relative to USD
	Date      time.Time `gorm:"not null"`                 // Date of the exchange rate
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp"`
	Source    string    `gorm:"type:varchar(255);not null"` // Source of the exchange rate (e.g., ECB, etc.)
}

All rates are relative to USD, i.e., 1 USD = Rate Currency (1 USD = 0.93 EUR)

func (CurrencyRate) TableName

func (CurrencyRate) TableName() string

func (CurrencyRate) UniqueIndex

func (CurrencyRate) UniqueIndex() [][]string

type CustomerOsIds

type CustomerOsIds struct {
	Tenant       string    `gorm:"column:tenant;size:50;primaryKey"`
	CustomerOSID string    `gorm:"column:customer_os_id;size:30;primaryKey"`
	Entity       string    `gorm:"column:entity;size:30"`
	EntityId     string    `gorm:"column:entity_id;size:50"`
	CreatedDate  time.Time `gorm:"default:current_timestamp"`
	Attempts     int       `gorm:"column:attempts"`
}

func (CustomerOsIds) TableName

func (CustomerOsIds) TableName() string

type DayAvailability

type DayAvailability struct {
	Enabled   bool   `json:"enabled" gorm:"type:boolean;default:false"`
	StartHour string `json:"startHour" gorm:"type:varchar(5)"` // Format: "HH:MM"
	EndHour   string `json:"endHour" gorm:"type:varchar(5)"`   // Format: "HH:MM"
}

DayAvailability represents the availability for a single day

func (*DayAvailability) Scan

func (d *DayAvailability) Scan(value interface{}) error

Scan implements the sql.Scanner interface for DayAvailability

func (*DayAvailability) Validate

func (d *DayAvailability) Validate() error

Validate checks if the day availability is valid

func (DayAvailability) Value

func (d DayAvailability) Value() (driver.Value, error)

Value implements the driver.Valuer interface for DayAvailability

type DomainPrimaryException

type DomainPrimaryException struct {
	ID        uint64    `gorm:"primary_key;autoIncrement" json:"id"`
	CreatedAt time.Time `gorm:"column:created_at;autoCreateTime" json:"createdAt"`
	Domain    string    `gorm:"column:domain;type:varchar(255);not null" json:"domain"`
}

func (DomainPrimaryException) TableName

func (DomainPrimaryException) TableName() string

type EmailLookup

type EmailLookup struct {
	ID             string          `gorm:"column:id;primary_key;type:varchar(64);" json:"id"`
	Tenant         string          `gorm:"column:tenant;type:varchar(255);NOT NULL" json:"tenant"`
	CreatedAt      time.Time       `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt      time.Time       `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	TrackerDomain  string          `gorm:"column:tracker_domain;type:varchar(255);" json:"trackerDomain"`
	MessageId      string          `gorm:"column:message_id;type:varchar(64);NOT NULL" json:"messageId"`
	LinkId         string          `gorm:"column:link_id;type:varchar(64);NOT NULL" json:"linkId"`
	RedirectUrl    string          `gorm:"column:redirect_url;type:varchar(255);NOT NULL" json:"redirectUrl"`
	Campaign       string          `gorm:"column:campaign;type:varchar(255);NOT NULL" json:"campaign"`
	Type           EmailLookupType `gorm:"column:type;type:varchar(32);NOT NULL" json:"type"`
	RecipientId    string          `gorm:"column:recipient_id;type:varchar(255);" json:"recipientId"`
	TrackOpens     bool            `gorm:"column:track_opens;type:boolean;NOT NULL" json:"trackOpens"`
	TrackClicks    bool            `gorm:"column:track_clicks;type:boolean;NOT NULL" json:"trackClicks"`
	UnsubscribeUrl string          `gorm:"column:unsubscribe_url;type:varchar(255);" json:"unsubscribeUrl"`
}

func (EmailLookup) TableName

func (EmailLookup) TableName() string

type EmailLookupType

type EmailLookupType string
const (
	EmailLookupTypeLink        EmailLookupType = "Link"
	EmailLookupTypeSpyPixel    EmailLookupType = "SpyPixel"
	EmailLookupTypeUnsubscribe EmailLookupType = "Unsubscribe"
)

type EmailMessage

type EmailMessage struct {
	ID        uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp"`

	Status EmailMessageStatus `gorm:"size:50;not null;"`

	SentAt *time.Time `gorm:"column:sent_at;type:timestamp;"`
	Error  *string    `gorm:"column:error;type:text"`

	UniqueInternalIdentifier *string `gorm:"size:255;index:unique_internal_identifier"`

	Tenant       string `gorm:"size:255;not null;index:idx_raw_email_external_system"`
	ProducerId   string `gorm:"size:255;not null;"`
	ProducerType string `gorm:"size:255;not null;"`

	//Email message data
	FromName     string   `gorm:"size:255;"`
	From         string   `gorm:"size:255;"`
	FromProvider string   `gorm:"size:255;"`
	To           []string `gorm:"-"`
	ToString     string   `gorm:"type:text;column:to"`
	Cc           []string `gorm:"-"`
	CcString     string   `gorm:"type:text;column:cc"`
	Bcc          []string `gorm:"-"`
	BccString    string   `gorm:"type:text;column:bcc"`
	Subject      string
	Content      string

	//COS interaction event id
	//deprecated
	ReplyTo *string

	//Values taken from providers
	ProviderMessageId  string `gorm:"size:255;not null;"`
	ProviderThreadId   string `gorm:"size:255;not null;"`
	ProviderInReplyTo  string `gorm:"size:255;not null;"`
	ProviderReferences string `gorm:"size:255;not null;"`
}

func (*EmailMessage) AfterFind

func (e *EmailMessage) AfterFind(tx *gorm.DB) (err error)

AfterFind hook for converting strings to slices

func (*EmailMessage) BeforeSave

func (e *EmailMessage) BeforeSave(tx *gorm.DB) (err error)

BeforeSave hook for converting slices to strings

func (EmailMessage) TableName

func (EmailMessage) TableName() string

type EmailMessageStatus

type EmailMessageStatus string
const (
	EmailMessageStatusScheduled EmailMessageStatus = "SCHEDULED"
	EmailMessageStatusSent      EmailMessageStatus = "SENT"
	EmailMessageStatusProcessed EmailMessageStatus = "PROCESSED"
	EmailMessageStatusError     EmailMessageStatus = "ERROR"
)

type EmailRawData

type EmailRawData struct {
	ProviderMessageId string            `json:"ProviderMessageId"`
	MessageId         string            `json:"MessageId"`
	Sent              time.Time         `json:"Sent"`
	Subject           string            `json:"Subject"`
	From              string            `json:"From"`
	To                string            `json:"To"`
	Cc                string            `json:"Cc"`
	Bcc               string            `json:"Bcc"`
	Html              string            `json:"Html"`
	Text              string            `json:"Text"`
	ThreadId          string            `json:"ThreadId"`
	InReplyTo         string            `json:"InReplyTo"`
	Reference         string            `json:"Reference"`
	Headers           map[string]string `json:"Headers"`
}

type EmailTracking

type EmailTracking struct {
	ID          string                 `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	Tenant      string                 `gorm:"column:tenant;type:varchar(255);NOT NULL" json:"tenant"`
	CreatedAt   time.Time              `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt   time.Time              `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	Timestamp   time.Time              `gorm:"column:timestamp;type:timestamp;DEFAULT:current_timestamp" json:"timestamp"`
	MessageId   string                 `gorm:"column:message_id;type:varchar(64);NOT NULL" json:"messageId"`
	LinkId      string                 `gorm:"column:link_id;type:varchar(64);" json:"linkId"`
	RecipientId string                 `gorm:"column:recipient_id;type:varchar(255);" json:"recipientId"`
	Campaign    string                 `gorm:"column:campaign;type:varchar(255);" json:"campaign"`
	EventType   EmailTrackingEventType `gorm:"column:event_type;type:varchar(255);NOT NULL" json:"eventType"`
	IP          string                 `gorm:"column:ip;type:varchar(255);" json:"ip" `
}

func (EmailTracking) TableName

func (EmailTracking) TableName() string

type EmailTrackingEventType

type EmailTrackingEventType string
const (
	EmailTrackingEventTypeOpen        EmailTrackingEventType = "email_open"
	EmailTrackingEventTypeLinkClick   EmailTrackingEventType = "email_link_click"
	EmailTrackingEventTypeUnsubscribe EmailTrackingEventType = "email_unsubscribe"
)

type EmailValidationRecord

type EmailValidationRecord struct {
	ID             uint64    `gorm:"primary_key;autoIncrement" json:"id"`
	RequestID      string    `gorm:"column:request_id;type:varchar(255);NOT NULL;index:idx_email_request_id,unique" json:"requestId"`
	Tenant         string    `gorm:"column:tenant;type:varchar(255);NOT NULL" json:"tenant"`
	Email          string    `gorm:"column:email;type:varchar(255);NOT NULL;index:idx_email_request_id,unique" json:"email"`
	Priority       int       `gorm:"column:priority;type:int;DEFAULT:0" json:"priority"`
	Data           string    `gorm:"column:data;type:text;NOT NULL" json:"data"`
	VerifyCatchAll bool      `gorm:"column:verify_catch_all;type:boolean;DEFAULT:false" json:"verifyCatchAll"`
	CreatedAt      time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt      time.Time `gorm:"column:updated_at;type:timestamp;" json:"updatedAt"`
}

func (EmailValidationRecord) TableName

func (EmailValidationRecord) TableName() string

type EmailValidationRequestBulk

type EmailValidationRequestBulk struct {
	RequestID           string                           `gorm:"primary_key;type:varchar(21);" json:"requestId"`
	Tenant              string                           `gorm:"column:tenant;type:varchar(255);NOT NULL" json:"tenantId"`
	TotalEmails         int                              `gorm:"column:total_emails;type:int;NOT NULL" json:"totalEmails"`
	DeliverableEmails   int                              `gorm:"column:deliverable_emails;type:int;DEFAULT:0" json:"deliverableEmails"`
	UndeliverableEmails int                              `gorm:"column:undeliverable_emails;type:int;DEFAULT:0" json:"undeliverableEmails"`
	Status              EmailValidationRequestBulkStatus `gorm:"column:status;type:varchar(50);NOT NULL" json:"status"`
	CreatedAt           time.Time                        `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt           time.Time                        `gorm:"column:updated_at;type:timestamp;" json:"updatedAt"`
	FileName            string                           `gorm:"column:file_name;type:varchar(255);NOT NULL" json:"fileName"`
	Priority            int                              `gorm:"column:priority;type:int;DEFAULT:0" json:"priority"`
	VerifyCatchAll      bool                             `gorm:"column:verify_catch_all;type:boolean;DEFAULT:false" json:"verifyCatchAll"`
	FileStoreId         string                           `gorm:"column:file_store_id;type:varchar(255)" json:"fileStoreId"`
}

func (EmailValidationRequestBulk) TableName

func (EmailValidationRequestBulk) TableName() string

type EmailValidationRequestBulkStatus

type EmailValidationRequestBulkStatus string
const (
	EmailValidationRequestBulkStatusProcessing EmailValidationRequestBulkStatus = "processing"
	EmailValidationRequestBulkStatusCompleted  EmailValidationRequestBulkStatus = "completed"
)

type EnrichDetailsBetterContact

type EnrichDetailsBetterContact struct {
	ID                 string    `gorm:"type:uuid;default:gen_random_uuid();primaryKey" json:"id"`
	RequestID          string    `gorm:"column:request_id;type:varchar(255);NOT NULL" json:"requestId"`
	CreatedAt          time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt          time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	ContactFirstName   string    `gorm:"column:contact_first_name;type:varchar(255);" json:"contactFirstName"`
	ContactLastName    string    `gorm:"column:contact_last_name;type:varchar(255);" json:"contactLastName"`
	ContactLinkedInUrl string    `gorm:"column:contact_linkedin_url;type:varchar(255);" json:"contactLinkedInUrl"`
	CompanyName        string    `gorm:"column:company_name;type:varchar(255);" json:"companyName"`
	CompanyDomain      string    `gorm:"column:company_domain;type:varchar(255);" json:"companyDomain"`
	EnrichPhoneNumber  bool      `gorm:"column:enrich_phone_number;type:boolean;DEFAULT:false" json:"enrichPhoneNumber"`
	Request            string    `gorm:"column:request;type:text;" json:"request"`
	Response           string    `gorm:"column:response;type:text;" json:"response"`
}

func (EnrichDetailsBetterContact) TableName

func (EnrichDetailsBetterContact) TableName() string

type EnrichDetailsBrandfetch

type EnrichDetailsBrandfetch struct {
	ID                 uint64    `gorm:"primary_key;autoIncrement:true" json:"id"`
	Domain             string    `gorm:"column:domain;type:varchar(255);DEFAULT:'';NOT NULL" json:"domain"`
	Data               string    `gorm:"column:data;type:text;DEFAULT:'';NOT NULL" json:"data"`
	CreatedAt          time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt          time.Time `gorm:"column:updated_at;type:timestamp;;DEFAULT:current_timestamp" json:"updatedAt"`
	Success            bool      `gorm:"column:success;type:boolean;DEFAULT:false" json:"success"`
	SyncedToGlobalOrgs bool      `gorm:"column:synced_to_global_orgs;type:boolean;DEFAULT:false" json:"syncedToGlobalOrgs"`
}

func (EnrichDetailsBrandfetch) TableName

func (EnrichDetailsBrandfetch) TableName() string

type EnrichDetailsPreFilterTracking

type EnrichDetailsPreFilterTracking struct {
	ID                 string    `gorm:"type:uuid;default:gen_random_uuid();primaryKey" json:"id"`
	CreatedAt          time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt          time.Time `gorm:"column:updated_at;type:timestamp;" json:"updatedAt"`
	IP                 string    `gorm:"column:ip;uniqueIndex:ip_unique;type:varchar(255);" json:"ip"`
	ShouldIdentify     *bool     `gorm:"column:should_identify;type:boolean;" json:"shouldIdentify"`
	SkipIdentifyReason string    `gorm:"column:skip_identify_reason;type:varchar(255);" json:"skipIdentifyReason"`
	Response           *string   `gorm:"column:response;type:text;" json:"response"`
}

func (EnrichDetailsPreFilterTracking) TableName

type EnrichDetailsScrapIn

type EnrichDetailsScrapIn struct {
	ID                     uint64      `gorm:"primary_key;autoIncrement:true" json:"id"`
	Flow                   ScrapInFlow `gorm:"column:flow;type:varchar(255);NOT NULL" json:"flow"`
	Param1                 string      `gorm:"column:param1;type:varchar(1000);" json:"param1"`
	Param2                 string      `gorm:"column:param2;type:varchar(1000);" json:"param2"`
	Param3                 string      `gorm:"column:param3;type:varchar(1000);" json:"param3"`
	Param4                 string      `gorm:"column:param4;type:varchar(1000);" json:"param4"`
	Param5                 string      `gorm:"column:param5;type:varchar(1000);" json:"param5"`
	AllParamsJson          string      `gorm:"column:all_params_json;type:text;DEFAULT:'';NOT NULL" json:"allParams"`
	Data                   string      `gorm:"column:data;type:text;DEFAULT:'';NOT NULL" json:"data"`
	CreatedAt              time.Time   `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt              time.Time   `gorm:"column:updated_at;type:timestamp;;DEFAULT:current_timestamp" json:"updatedAt"`
	Success                bool        `gorm:"column:success;type:boolean;DEFAULT:false" json:"success"`
	PersonFound            bool        `gorm:"column:person_found;type:boolean;DEFAULT:false" json:"personFound"`
	CompanyFound           bool        `gorm:"column:company_found;type:boolean;DEFAULT:false" json:"companyFound"`
	SyncedToGlobalOrgs     bool        `gorm:"column:synced_to_global_orgs;type:boolean;DEFAULT:false" json:"syncedToGlobalOrgs"`
	SyncedToGlobalContacts bool        `gorm:"column:synced_to_global_contacts;type:boolean;DEFAULT:false" json:"syncedToGlobalContacts"`
}

func (EnrichDetailsScrapIn) TableName

func (EnrichDetailsScrapIn) TableName() string

type EnrichDetailsTracking

type EnrichDetailsTracking struct {
	ID             string    `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	CreatedAt      time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt      time.Time `gorm:"column:updated_at;type:timestamp;" json:"updatedAt"`
	IP             string    `gorm:"column:ip;uniqueIndex:ip_unique;type:varchar(255);" json:"ip"`
	CompanyName    *string   `gorm:"column:company_name;type:varchar(255);" json:"companyName"`
	CompanyDomain  *string   `gorm:"column:company_domain;type:varchar(255);" json:"companyDomain"`
	CompanyWebsite *string   `gorm:"column:company_website;type:varchar(255);" json:"companyWebsite"`
	SourceEmail    *string   `gorm:"column:source_email;type:varchar(255);" json:"sourceEmail"`
	Response       string    `gorm:"column:response;type:text;" json:"response"`
}

func (EnrichDetailsTracking) TableName

func (EnrichDetailsTracking) TableName() string

type EnrowResponseBody

type EnrowResponseBody struct {
	Email         string `json:"email"`
	Id            string `json:"id"`
	Qualification string `json:"qualification"`
}

type ExternalAppKeys

type ExternalAppKeys struct {
	ID         uint64    `gorm:"primary_key;autoIncrement:true" json:"id"`
	App        string    `gorm:"column:app;type:varchar(255);NOT NULL;index:idx_external_app_key_unique,unique" json:"app"`
	AppKey     string    `gorm:"column:app_key;type:varchar(255);NOT NULL;index:idx_external_app_key_unique,unique" json:"appKey"`
	Group1     string    `gorm:"column:group1;type:varchar(255);index:idx_external_app_key_unique,unique" json:"group1"`
	CreatedAt  time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt  time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	UsageCount int       `gorm:"column:usage_count;type:int;NOT NULL" json:"usageCount"`
}

func (ExternalAppKeys) TableName

func (ExternalAppKeys) TableName() string

type FlowEdge

type FlowEdge struct {
	ID         string     `gorm:"primaryKey;type:varchar(50)" json:"id"`
	FlowID     string     `gorm:"column:flow_id;type:varchar(50);not null;index" json:"flowId"`
	FromNodeID string     `gorm:"column:from_node_id;type:varchar(50);not null" json:"fromNodeId"`
	ToNodeID   string     `gorm:"column:to_node_id;type:varchar(50);not null" json:"toNodeId"`
	Condition  *string    `gorm:"column:condition;type:varchar(255)" json:"condition"`
	CreatedAt  time.Time  `gorm:"column:created_at;autoCreateTime" json:"createdAt"`
	UpdatedAt  *time.Time `gorm:"column:updated_at;autoUpdateTime" json:"updatedAt"`

	// used to store conditional logic
	Data *datatypes.JSON `gorm:"column:data;type:jsonb" json:"data"`
}

func (FlowEdge) TableName

func (FlowEdge) TableName() string

func (FlowEdge) UniqueIndex

func (FlowEdge) UniqueIndex() [][]string

type FlowExecution

type FlowExecution struct {
	ID                string     `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	FlowID            string     `gorm:"column:flow_id;type:varchar(255);not null;index" json:"flowId" binding:"required"`
	Status            string     `gorm:"column:status;type:varchar(255);not null" json:"status"`
	CurrentStepNodeId string     `gorm:"column:current_step_node_id;type:varchar(255);index" json:"currentStepNodeId"`
	ScheduledFor      *time.Time `gorm:"column:scheduled_for" json:"scheduledFor"`
	StartedAt         *time.Time `gorm:"column:started_at;not null" json:"startedAt"`
	CompletedAt       *time.Time `gorm:"column:completed_at" json:"completedAt"`
	ErrorMessage      *string    `gorm:"column:error_message;type:text" json:"errorMessage"`
	BlockedReason     *string    `gorm:"column:blocked_reason;type:text" json:"blockedReason"`
	CreatedAt         time.Time  `gorm:"column:created_at;autoCreateTime" json:"createdAt"`
	UpdatedAt         *time.Time `gorm:"column:updated_at;autoUpdateTime" json:"updatedAt"`
}

func (FlowExecution) TableName

func (FlowExecution) TableName() string

type FlowNode

type FlowNode struct {
	ID        string     `gorm:"primaryKey;type:varchar(50)" json:"id"`
	FlowID    string     `gorm:"column:flow_id;type:varchar(50);not null;index" json:"flowId"`
	Type      string     `gorm:"column:type;type:varchar(50);not null" json:"type"`
	AgentID   *string    `gorm:"column:agent_id;type:varchar(50);not null;index" json:"agentId"`
	CreatedAt time.Time  `gorm:"column:created_at;autoCreateTime" json:"createdAt"`
	UpdatedAt *time.Time `gorm:"column:updated_at;autoUpdateTime" json:"updatedAt"`

	// used to store wait time config, email subject & template, etc
	UIData *string `gorm:"column:ui_data;type:varchar(255)" json:"uiData"`
}

func (FlowNode) TableName

func (FlowNode) TableName() string

func (FlowNode) UniqueIndex

func (FlowNode) UniqueIndex() [][]string

type FlowTransitionsRegistry

type FlowTransitionsRegistry struct {
	ID           uint64 `gorm:"primary_key;autoIncrement:true" json:"id"`
	FromNodeType string `gorm:"column:from_node_type;type:varchar(255);not null;index" json:"fromNodeType" binding:"required"`
	FromNode     string `gorm:"column:from_node;type:varchar(255);not null;uniqueIndex:idx_from_to_nodes;index" json:"fromNode" binding:"required"`
	ToNodeType   string `gorm:"column:to_node_type;type:varchar(255);not null;index" json:"toNodeType" binding:"required"`
	ToNode       string `gorm:"column:to_node;type:varchar(255);not null;uniqueIndex:idx_from_to_nodes;index" json:"toNode" binding:"required"`
	Status       string `gorm:"column:status;type:varchar(50)" json:"status"`
}

func (FlowTransitionsRegistry) TableName

func (FlowTransitionsRegistry) TableName() string

type Flows

type Flows struct {
	ID             string     `gorm:"primaryKey;type:varchar(50)" json:"id"`
	AgentID        string     `gorm:"primaryKey;type:varchar(50)" json:"agentID"`
	IsActive       string     `gorm:"column:is_active;type:boolean;default:false" json:"isActive"`
	CreatedAt      time.Time  `gorm:"column:created_at;autoCreateTime" json:"createdAt"`
	UpdatedAt      *time.Time `gorm:"column:updated_at;autoUpdateTime" json:"updatedAt"`
	LastModifiedBy *string    `gorm:"column:last_modified_by;type:varchar(255)" json:"lastModifiedBy"`
}

func (Flows) TableName

func (Flows) TableName() string

type GlobalContact

type GlobalContact struct {
	ID                      uint64              `gorm:"primary_key;autoIncrement" json:"id"`
	CreatedAt               time.Time           `gorm:"type:timestamp;default:current_timestamp" json:"created_at"`
	UpdatedAt               time.Time           `gorm:"type:timestamp;default:current_timestamp" json:"updated_at"`
	FirstName               string              `gorm:"type:varchar(255)" json:"first_name"`
	LastName                string              `gorm:"type:varchar(255)" json:"last_name"`
	Description             string              `gorm:"type:text" json:"description"`
	LinkedInIdentifier      string              `gorm:"type:varchar(255);index:idx_linkedin_identifier" json:"linkedin_identifier"`
	LinkedInAlias           string              `gorm:"type:varchar(255);index:idx_linkedin_alias" json:"linkedin_alias"`
	WorkEmail               string              `gorm:"type:varchar(255);index:idx_work_email" json:"work_email,omitempty"`
	PersonalEmail           string              `gorm:"type:varchar(255);index:idx_personal_email" json:"personal_email,omitempty"`
	JobTitle                string              `gorm:"type:varchar(255)" json:"job_title"`
	JobStartedAt            *time.Time          `gorm:"type:timestamp;null" json:"job_started_at,omitempty"`
	JobEndedAt              *time.Time          `gorm:"type:timestamp;null" json:"job_ended_at,omitempty"`
	PrimaryDomain           string              `gorm:"type:varchar(255);index:idx_primary_domain" json:"primary_domain"`
	LocationText            string              `gorm:"column:location_text;type:varchar(1000)" json:"location"`
	ProfilePhotoExternalUrl string              `gorm:"type:varchar(1000)" json:"profile_photo_external_url,omitempty"`
	ProfilePhotoPath        string              `gorm:"column:profile_photo_path;type:varchar(2000)" json:"profilePhotoPath"`
	DownloadStatus          enum.DownloadStatus `gorm:"column:download_status;type:varchar(55);default:'NOT_STARTED'" json:"downloadStatus"`
	PhoneNumber             string              `gorm:"column:phone_number;type:varchar(50)" json:"phone_number,omitempty"`
	DataFetchedAt           *time.Time          `gorm:"column:data_fetched_at;type:timestamp" json:"dataFetchedAt,omitempty"`
	SyncedToNeoAt           *time.Time          `gorm:"column:synced_to_neo_at;type:timestamp" json:"syncedToNeoAt"`

	// Enrichment fields
	BetterContactRequestedAt     *time.Time `gorm:"column:bettercontact_requested_at;type:timestamp" json:"betterContactRequestedAt"`
	BetterContactSetAt           *time.Time `gorm:"column:bettercontact_set_at;type:timestamp" json:"betterContactSetAt"`
	BetterContactRequestId       string     `gorm:"column:bettercontact_request_id;type:varchar(100)" json:"betterContactRequestId,omitempty"`
	BetterContactCheckResponseAt *time.Time `gorm:"column:bettercontact_check_response_at;type:timestamp" json:"betterContactCheckResponseAt"`
}

func (GlobalContact) GetFullName

func (g GlobalContact) GetFullName() string

func (GlobalContact) GetProfilePhotoUrl

func (g GlobalContact) GetProfilePhotoUrl(cdnPrefix string) string

func (GlobalContact) TableName

func (GlobalContact) TableName() string

TableName specifies the table name for the GlobalContact entity

type GlobalOrganization

type GlobalOrganization struct {
	ID            uint64    `gorm:"primary_key;autoIncrement" json:"id"`
	Name          string    `gorm:"column:name;type:varchar(255)" json:"name"`
	PrimaryDomain string    `` /* 128-byte string literal not displayed */
	OtherDomains  string    `gorm:"column:other_domains;type:text" json:"otherDomains"`
	CreatedAt     time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt     time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	Active        bool      `gorm:"column:active;type:boolean;default:false" json:"active"`

	Description   string `gorm:"column:description;type:text" json:"description"`
	Website       string `gorm:"column:website;type:varchar(255)" json:"website"`
	YearFounded   int    `gorm:"column:year_founded" json:"yearFounded"`
	EmployeeCount int64  `gorm:"column:employee_count" json:"employeeCount"`

	LinkedInUrl   string `gorm:"column:linkedin;type:varchar(255)" json:"linkedin"`
	LinkedInAlias string `gorm:"column:linkedin_alias;type:varchar(255)" json:"linkedinAlias"`

	OtherSocials pq.StringArray `gorm:"column:other_socials;type:text[]" json:"otherSocials"`

	IconUrl            string              `gorm:"column:icon_url;type:varchar(2000)" json:"iconUrl"`
	LogoUrl            string              `gorm:"column:logo_url;type:varchar(2000)" json:"logoUrl"`
	IconPath           string              `gorm:"column:icon_path;type:varchar(2000)" json:"iconPath"`
	LogoPath           string              `gorm:"column:logo_path;type:varchar(2000)" json:"logoPath"`
	DownloadStatus     enum.DownloadStatus `gorm:"column:download_status;type:varchar(55);default:'NOT_STARTED'" json:"downloadStatus"` // deprecated
	DownloadStatusIcon enum.DownloadStatus `gorm:"column:download_status_icon;type:varchar(55);default:'NOT_STARTED'" json:"downloadStatusIcon"`

	// not used yet
	Market string `gorm:"column:market;type:text" json:"market"`

	CountryA2 string `gorm:"column:country_a2;type:varchar(2)" json:"countryA2"`
	Region    string `gorm:"column:region;type:varchar(255)" json:"region"`
	City      string `gorm:"column:city;type:varchar(255)" json:"city"`

	IndustryNaicsCode    string     `gorm:"column:industry_naics_code;type:varchar(255)" json:"industryNaicsCode"`
	IndustryNaicsName    string     `gorm:"column:industry_naics_name;type:varchar(255)" json:"industryNaicsName"`
	IndustrySetAt        *time.Time `gorm:"column:industry_set_at;type:timestamp" json:"industrySetAt"`
	IndustryRequestedAt  *time.Time `gorm:"column:industry_requested_at;type:timestamp" json:"industryRequestedAt"`
	IndustryRequestCount int        `gorm:"column:industry_request_count" json:"industryRequestCount"`

	DescriptionSetAt        *time.Time `gorm:"column:description_set_at;type:timestamp" json:"descriptionSetAt"`
	DescriptionRequestedAt  *time.Time `gorm:"column:description_requested_at;type:timestamp" json:"descriptionRequestedAt"`
	DescriptionRequestCount int        `gorm:"column:description_request_count" json:"descriptionRequestCount"`
	SourceDescription1      string     `gorm:"column:source_description_1;type:text" json:"sourceDescription1"`
	SourceDescription2      string     `gorm:"column:source_description_2;type:text" json:"sourceDescription2"`
	SourceDescription3      string     `gorm:"column:source_description_3;type:text" json:"sourceDescription3"`
	SourceDescription4      string     `gorm:"column:source_description_4;type:text" json:"sourceDescription4"`
	SourceDescription5      string     `gorm:"column:source_description_5;type:text" json:"sourceDescription5"`

	NameSetAt        *time.Time `gorm:"column:name_set_at;type:timestamp" json:"nameSetAt"`
	NameRequestedAt  *time.Time `gorm:"column:name_requested_at;type:timestamp" json:"nameRequestedAt"`
	NameRequestCount int        `gorm:"column:name_request_count" json:"nameRequestCount"`

	SyncedToNeoAt *time.Time `gorm:"column:synced_to_neo_at;type:timestamp" json:"syncedToNeoAt"`

	ScrapedStatus enum.ScrapeStatus `gorm:"column:scrape_status;type:varchar(55);default:'NOT_SCRAPED'" json:"scrapeStatus"`
	ScrapeAttempt int               `gorm:"column:scrape_attempt;type:int;default:0" json:"scrapeAttempt"`
	ScrapedAt     *time.Time        `gorm:"column:scraped_at;type:timestamp" json:"scrapedAt"`
}

func (GlobalOrganization) TableName

func (GlobalOrganization) TableName() string

TableName sets the name of the table for GORM

type GlobalOrganizationWebsiteToProcess

type GlobalOrganizationWebsiteToProcess struct {
	ID          uint64    `gorm:"primary_key;autoIncrement" json:"id"`
	Website     string    `gorm:"column:website;type:varchar(255)" json:"website"`
	CreatedAt   time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	ProcessedAt time.Time `gorm:"column:processed_at;type:timestamp" json:"processedAt"`
	Processed   bool      `gorm:"column:processed;type:boolean" json:"processed"`
	Notes       string    `gorm:"column:notes;type:text" json:"notes"`
}

func (GlobalOrganizationWebsiteToProcess) TableName

TableName sets the name of the table for GORM

type IPDataResponseBody

type IPDataResponseBody struct {
	StatusCode    int     `json:"status_code"`
	Message       string  `json:"message"`
	Ip            string  `json:"ip"`
	City          string  `json:"city"`
	Region        string  `json:"region"`
	RegionCode    string  `json:"region_code"`
	RegionType    string  `json:"region_type"`
	CountryName   string  `json:"country_name"`
	CountryCode   string  `json:"country_code"`
	ContinentName string  `json:"continent_name"`
	ContinentCode string  `json:"continent_code"`
	Latitude      float64 `json:"latitude"`
	Longitude     float64 `json:"longitude"`
	Asn           struct {
		Asn    string `json:"asn"`
		Name   string `json:"name"`
		Domain string `json:"domain"`
		Route  string `json:"route"`
		Type   string `json:"type"`
	} `json:"asn"`
	Carrier *struct {
		Name string `json:"name"`
		Mcc  string `json:"mcc"`
		Mnc  string `json:"mnc"`
	} `json:"carrier"`
	TimeZone struct {
		Name        string    `json:"name"`
		Abbr        string    `json:"abbr"`
		Offset      string    `json:"offset"`
		IsDst       bool      `json:"is_dst"`
		CurrentTime time.Time `json:"current_time"`
	} `json:"time_zone"`
	Threat struct {
		IsTor           bool          `json:"is_tor"`
		IsVpn           bool          `json:"is_vpn"`
		IsIcloudRelay   bool          `json:"is_icloud_relay"`
		IsProxy         bool          `json:"is_proxy"`
		IsDatacenter    bool          `json:"is_datacenter"`
		IsAnonymous     bool          `json:"is_anonymous"`
		IsKnownAttacker bool          `json:"is_known_attacker"`
		IsKnownAbuser   bool          `json:"is_known_abuser"`
		IsThreat        bool          `json:"is_threat"`
		IsBogon         bool          `json:"is_bogon"`
		Blocklists      []interface{} `json:"blocklists"`
	} `json:"threat"`
	Count string `json:"count"`
}

type IngestEmailImportState

type IngestEmailImportState struct {
	ID        uuid.UUID                    `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	Tenant    string                       `gorm:"size:255;not null;uniqueIndex:uq_one_state_per_tenant_and_user"`
	Username  string                       `gorm:"size:255;not null;uniqueIndex:uq_one_state_per_tenant_and_user"`
	Provider  string                       `gorm:"size:255;not null;uniqueIndex:uq_one_state_per_tenant_and_user"`
	Period    IngestEmailImportStatePeriod `gorm:"size:50;not null;uniqueIndex:uq_one_state_per_tenant_and_user"`
	StartDate *time.Time                   `gorm:""`
	StopDate  *time.Time                   `gorm:""`
	Active    bool                         `gorm:"not null"`
	Cursor    string                       `gorm:"size:255;not null"`
}

func (IngestEmailImportState) TableName

func (IngestEmailImportState) TableName() string

type IngestEmailImportStatePeriod

type IngestEmailImportStatePeriod string
const (
	REAL_TIME           IngestEmailImportStatePeriod = "REAL_TIME"
	HISTORY             IngestEmailImportStatePeriod = "HISTORY" // this is not used in DB. this is used just in code to trigger the import for the other states
	LAST_WEEK           IngestEmailImportStatePeriod = "LAST_WEEK"
	LAST_3_MONTHS       IngestEmailImportStatePeriod = "LAST_3_MONTHS"
	LAST_YEAR           IngestEmailImportStatePeriod = "LAST_YEAR"
	OLDER_THAN_ONE_YEAR IngestEmailImportStatePeriod = "OLDER_THAN_ONE_YEAR"
)

type IngestEmailMessage

type IngestEmailMessage struct {
	Id        string    `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp"`

	Error *string                 `gorm:"column:error;type:text"`
	State IngestEmailMessageState `gorm:"size:255;not null;"`

	Tenant   string `gorm:"size:255;not null;index:idx_ingest_raw_email"`
	Provider string `gorm:"size:255;not null;index:idx_ingest_raw_email"`
	Username string `gorm:"size:255;not null;index:idx_ingest_raw_email"`

	//Email message data
	SentAt time.Time `gorm:"column:sent_at;type:timestamp;"`

	From        string `gorm:"type:text"`
	To          string `gorm:"type:text"`
	Cc          string `gorm:"type:text"`
	Bcc         string `gorm:"type:text"`
	Subject     string
	TextContent string `gorm:"type:text"`
	HtmlContent string `gorm:"type:text"`

	//Values taken from providers
	MessageId          string `gorm:"size:255;not null;index:idx_ingest_raw_email"`
	ProviderMessageId  string `gorm:"size:255;not null;"`
	ProviderThreadId   string `gorm:"size:255;not null;"`
	ProviderInReplyTo  string `gorm:"type:text"`
	ProviderReferences string `gorm:"type:text"`

	Headers string `gorm:"type:text"`
}

func (IngestEmailMessage) TableName

func (IngestEmailMessage) TableName() string

type IngestEmailMessageState

type IngestEmailMessageState string
const (
	IngestEmailMessageStateError       IngestEmailMessageState = "ERROR"
	IngestEmailMessageStatePending     IngestEmailMessageState = "PENDING"
	IngestEmailMessageStateSentToAgent IngestEmailMessageState = "SENT_TO_AGENT"
	IngestEmailMessageStateIngested    IngestEmailMessageState = "INGESTED"
	IngestEmailMessageStateFiltered    IngestEmailMessageState = "FILTERED"
)

type InvoiceNumberEntity

type InvoiceNumberEntity struct {
	InvoiceNumber string    `gorm:"column:invoice_number;size:16;primaryKey"`
	Tenant        string    `gorm:"column:tenant;size:50"`
	CreatedDate   time.Time `gorm:"default:current_timestamp"`
	Attempts      int       `gorm:"column:attempts"`
}

func (InvoiceNumberEntity) TableName

func (InvoiceNumberEntity) TableName() string

type JSONConfig

type JSONConfig json.RawMessage

JSONConfig type for handling the config JSON field

func (*JSONConfig) Scan

func (j *JSONConfig) Scan(value any) error

func (JSONConfig) Value

func (j JSONConfig) Value() (driver.Value, error)

type JSONMap

type JSONMap map[string]interface{}

JSONMap is a helper type for JSONB columns that automatically unmarshals into a map[string]interface{}.

func (*JSONMap) Scan

func (j *JSONMap) Scan(src interface{}) error

Scan implements the sql.Scanner interface.

func (JSONMap) Value

func (j JSONMap) Value() (driver.Value, error)

Value implements the driver.Valuer interface.

type Listener

type Listener struct {
	ID                string                  `gorm:"primaryKey;type:varchar(32)" json:"id"`
	Tenant            string                  `gorm:"column:tenant;type:varchar(255)" json:"tenant"`
	Position          int                     `gorm:"column:position;type:integer" json:"order"`
	AgentID           string                  `gorm:"column:agent_id;type:varchar(32);not null" json:"agentId"`
	Name              string                  `gorm:"column:name;type:varchar(255);not null" json:"name"`
	Type              enum.AgentListenerEvent `gorm:"column:type;type:varchar(50);not null" json:"type"`
	Error             string                  `gorm:"column:error;type:varchar(255)" json:"error"`
	Active            bool                    `gorm:"column:active;type:boolean" json:"active"`
	CreatedAt         time.Time               `gorm:"column:created_at;autoCreateTime" json:"createdAt"`
	UpdatedAt         *time.Time              `gorm:"column:updated_at;autoUpdateTime" json:"updatedAt"`
	ConfigHandlerImpl `gorm:"embedded"`
}

func (*Listener) BeforeCreate

func (l *Listener) BeforeCreate(*gorm.DB) error

func (Listener) TableName

func (Listener) TableName() string

type Location

type Location struct {
	CityName     string `json:"cityName"`
	RegionName   string `json:"regionName"`
	PostalCode   string `json:"postalCode"`
	StreetName   string `json:"streetName"`
	StreetNumber string `json:"streetNumber"`
	Country      struct {
		Name string `json:"name"`
		Iso2 string `json:"iso2"`
		Iso3 string `json:"iso3"`
	} `json:"country"`
	RawLocation string // To store the raw string value if the location is a single string
}

Define a custom type for Location

func (*Location) UnmarshalJSON

func (l *Location) UnmarshalJSON(data []byte) error

Implement the UnmarshalJSON method for Location

type MagicLink struct {
	ID        string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`

	Email string `gorm:"column:email;type:varchar(255);NOT NULL" json:"email"`
	Code  string `gorm:"column:code;type:varchar(255);NOT NULL" json:"code"`
	Url   string `gorm:"column:url;type:varchar(255);NOT NULL" json:"url"`
}

func (MagicLink) TableName

func (MagicLink) TableName() string

type MailstackBuyRequest

type MailstackBuyRequest struct {
	ID        string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	Tenant    string    `gorm:"column:tenant;type:varchar(255);NOT NULL" json:"tenant"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp" json:"updatedAt"`

	Domains   string `gorm:"column:domains;type:text" json:"domains"`
	Usernames string `gorm:"column:usernames;type:text" json:"usernames"`

	PaymentIntentId string `gorm:"column:payment_intent_id;type:varchar(255)" json:"paymentIntentId"`

	Status MailstackBuyRequestStatus `gorm:"column:status;type:varchar(50)" json:"status"`
}

func (MailstackBuyRequest) TableName

func (MailstackBuyRequest) TableName() string

type MailstackBuyRequestDomain

type MailstackBuyRequestDomain struct {
	ID        string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	Tenant    string    `gorm:"column:tenant;type:varchar(255);NOT NULL" json:"tenant"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp" json:"updatedAt"`

	MailstackBuyRequestId string `gorm:"column:mailstack_buy_request_id;type:uuid;NOT NULL" json:"mailstackBuyRequestId"`
	Domain                string `gorm:"column:domain;type:varchar(255)" json:"domain"`
	RedirectWebsite       string `gorm:"column:redirect_website;type:varchar(255)" json:"redirectWebsite"`

	Status MailstackBuyRequestDomainStatus `gorm:"column:status;type:varchar(50)" json:"status"`
}

func (MailstackBuyRequestDomain) TableName

func (MailstackBuyRequestDomain) TableName() string

type MailstackBuyRequestDomainStatus

type MailstackBuyRequestDomainStatus string
const (
	MailstackBuyRequestDomainStatusPendingProvisioning  MailstackBuyRequestDomainStatus = "PENDING_PROVISIONING"
	MailstackBuyRequestDomainStatusPendingConfiguration MailstackBuyRequestDomainStatus = "PENDING_CONFIGURATION"
	MailstackBuyRequestDomainStatusCompleted            MailstackBuyRequestDomainStatus = "COMPLETED"
	MailstackBuyRequestDomainStatusFailed               MailstackBuyRequestDomainStatus = "FAILED"
)

type MailstackBuyRequestStatus

type MailstackBuyRequestStatus string
const (
	MailstackBuyRequestStatusPending   MailstackBuyRequestStatus = "PENDING"
	MailstackBuyRequestStatusCompleted MailstackBuyRequestStatus = "COMPLETED"
	MailstackBuyRequestStatusFailed    MailstackBuyRequestStatus = "FAILED"
)

type MeetingBookedEvent

type MeetingBookedEvent struct {
	ID                    string    `gorm:"column:id;type:varchar(25);primaryKey" json:"id"`
	Tenant                string    `gorm:"column:tenant;size:255;not null;primaryKey" json:"tenant"`
	CreatedAt             time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt             time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	MeetingBookingEventID string    `gorm:"column:meeting_booking_event_id;type:varchar(21);not null" json:"meetingBookingEventId"`
	HostCalendarID        string    `gorm:"column:host_calendar_id;size:255" json:"hostCalendarId"`
	HostEmail             string    `gorm:"column:host_email;size:255;not null" json:"hostEmail"`
	HostName              string    `gorm:"column:host_name;type:text" json:"hostName"`
	ClientEmail           string    `gorm:"column:client_email;size:255;not null" json:"clientEmail"`
	ClientName            string    `gorm:"column:client_name;type:text;not null" json:"clientName"`
	ClientPhone           string    `gorm:"column:client_phone;type:text;not null" json:"clientPhone"`
	ClientReason          string    `gorm:"column:client_reason;type:text" json:"clientReason"`
	StartTime             time.Time `gorm:"column:start_time;type:timestamp;not null" json:"startTime"`
	EndTime               time.Time `gorm:"column:end_time;type:timestamp;not null" json:"endTime"`
	DurationMins          int64     `gorm:"column:duration_mins;not null" json:"durationMins"`
	NylasResponse         string    `gorm:"column:nylas_response;type:text;not null" json:"nylasResponse"`
	NylasEventID          string    `gorm:"column:nylas_event_id;type:varchar(255)" json:"nylasEventId"`
	Canceled              bool      `gorm:"column:canceled;type:boolean;not null;default:false" json:"canceled"`
}

func (*MeetingBookedEvent) BeforeCreate

func (u *MeetingBookedEvent) BeforeCreate(tx *gorm.DB) error

BeforeCreate hook to ensure ID has the correct prefix and validate

func (*MeetingBookedEvent) BeforeUpdate

func (u *MeetingBookedEvent) BeforeUpdate(tx *gorm.DB) error

BeforeUpdate hook to update the UpdatedAt timestamp and validate

func (MeetingBookedEvent) TableName

func (MeetingBookedEvent) TableName() string

type MeetingBookingEvent

type MeetingBookingEvent struct {
	ID        string    `gorm:"column:id;type:varchar(21);primaryKey" json:"id"`
	Tenant    string    `gorm:"column:tenant;size:255;not null;primaryKey" json:"tenant"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`

	Title             string      `gorm:"column:title;size:255;not null" json:"title"`
	DurationMins      int64       `gorm:"column:duration_mins;not null;default:30" json:"durationMins"`
	Description       string      `gorm:"column:description;type:text;not null;default:''" json:"description"`
	ParticipantEmails StringArray `gorm:"column:participant_emails;type:text[];not null;default:'{}'" json:"participantEmails"`

	BookingFormNameEnabled   bool `gorm:"column:booking_form_name_enabled;default:false" json:"bookingFormNameEnabled"`
	BookingFormEmailEnabled  bool `gorm:"column:booking_form_email_enabled;default:false" json:"bookingFormEmailEnabled"`
	BookingFormPhoneEnabled  bool `gorm:"column:booking_form_phone_enabled;default:false" json:"bookingFormPhoneEnabled"`
	BookingFormPhoneRequired bool `gorm:"column:booking_form_phone_required;default:false" json:"bookingFormPhoneRequired"`

	BookOptionEnabled                   bool  `gorm:"column:book_option_enabled;not null;default:false" json:"bookOptionEnabled"`
	BookOptionBufferBetweenMeetingsMins int64 `gorm:"column:book_option_buffer_between_meetings_mins;not null;default:0" json:"bookOptionBufferBetweenMeetingsMins"`
	BookOptionDaysInAdvance             int64 `gorm:"column:book_option_days_in_advance;not null;default:0" json:"bookOptionDaysInAdvance"`
	BookOptionMinNoticeMins             int64 `gorm:"column:book_option_min_notice_mins;not null;default:0" json:"bookOptionMinNoticeMins"`

	EmailNotificationEnabled        bool                                `gorm:"column:email_notification_enabled;not null;default:true" json:"emailNotificationEnabled"`
	Location                        string                              `gorm:"column:location;size:255;not null;default:''" json:"location"`
	AssignmentMethod                enum.MeetingBookingAssignmentMethod `gorm:"column:assignment_method;size:255;not null;default:''" json:"assignmentMethod"`
	BookingConfirmationRedirectLink string                              `gorm:"column:booking_confirmation_redirect_link;size:255;not null;default:''" json:"bookingConfirmationRedirectLink"`
}

func (*MeetingBookingEvent) BeforeCreate

func (u *MeetingBookingEvent) BeforeCreate(tx *gorm.DB) error

BeforeCreate hook to ensure ID has the correct prefix and validate

func (*MeetingBookingEvent) BeforeUpdate

func (u *MeetingBookingEvent) BeforeUpdate(tx *gorm.DB) error

BeforeUpdate hook to update the UpdatedAt timestamp and validate

func (MeetingBookingEvent) TableName

func (MeetingBookingEvent) TableName() string

type NoConfig

type NoConfig struct{}

type NylasGrant

type NylasGrant struct {
	ID                   string    `gorm:"primaryKey;type:varchar(22)" json:"id"`
	Tenant               string    `gorm:"column:tenant;type:varchar(255);NOT NULL;index:idx_nylas_account_tenant_email,unique" json:"tenant"`
	Email                string    `gorm:"column:email;type:varchar(255);NOT NULL;index:idx_nylas_account_tenant_email,unique" json:"email"`
	UserId               string    `gorm:"column:user_id;type:varchar(255);NOT NULL" json:"userId"`
	NylasGrantId         string    `gorm:"column:nylas_grant_id;type:varchar(255);NOT NULL" json:"nylasGrantId"`
	NylasProvider        string    `gorm:"column:nylas_provider;type:varchar(50);NOT NULL;index:idx_nylas_account_tenant_email,unique" json:"provider"`
	CreatedAt            time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt            time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	NylasConnectResponse string    `gorm:"column:nylas_connect_response;type:text" json:"nylasConnectResponse"`
}

func (*NylasGrant) BeforeCreate

func (n *NylasGrant) BeforeCreate(tx *gorm.DB) error

func (NylasGrant) TableName

func (NylasGrant) TableName() string

type NylasGrantResponse

type NylasGrantResponse struct {
	RequestID string `json:"request_id"`
	Data      struct {
		ID             string   `json:"id"`
		GrantStatus    string   `json:"grant_status"`
		Provider       string   `json:"provider"`
		Scope          []string `json:"scope"`
		State          string   `json:"state"`
		Email          string   `json:"email"`
		Name           string   `json:"name"`
		IP             string   `json:"ip"`
		UserAgent      string   `json:"user_agent"`
		CreatedAt      int64    `json:"created_at"`
		UpdatedAt      int64    `json:"updated_at"`
		IDToken        string   `json:"id_token"`
		ProviderUserID string   `json:"provider_user_id"`
		Blocked        bool     `json:"blocked"`
	} `json:"data"`
}

type OAuthTokenEntity

type OAuthTokenEntity struct {
	Provider                  string    `gorm:"primaryKey;autoIncrement:false;index:idx_primary;column:provider;size:255;not null"`
	TenantName                string    `gorm:"primaryKey;autoIncrement:false;index:idx_primary;column:tenant_name;size:255;not null"`
	EmailAddress              string    `gorm:"primaryKey;autoIncrement:false;index:idx_primary;column:email_address;size:255;not null"`
	Scope                     string    `gorm:"column:scope;type:text"`
	UserId                    string    `gorm:"column:user_id;size:255;not null"`
	PlayerIdentityId          string    `gorm:"column:player_identity_id;size:255;not null"`
	AccessToken               string    `gorm:"column:access_token;type:text"`
	RefreshToken              string    `gorm:"column:refresh_token;type:text"`
	IdToken                   string    `gorm:"column:id_token;type:text"`
	ExpiresAt                 time.Time `gorm:"column:expires_at;type:timestamp;"`
	NeedsManualRefresh        bool      `gorm:"column:needs_manual_refresh;default:false;"`
	GmailSyncEnabled          bool      `gorm:"column:gmail_sync_enabled;default:false;"`
	GoogleCalendarSyncEnabled bool      `gorm:"column:google_calendar_sync_enabled;default:false;"`
}

func (*OAuthTokenEntity) HasCalendarReadScope

func (o *OAuthTokenEntity) HasCalendarReadScope() bool

func (*OAuthTokenEntity) HasCalendarWriteScope

func (o *OAuthTokenEntity) HasCalendarWriteScope() bool

func (*OAuthTokenEntity) Scopes

func (o *OAuthTokenEntity) Scopes() []string

func (OAuthTokenEntity) TableName

func (OAuthTokenEntity) TableName() string

type OrganizationWebsiteHostingPlatform

type OrganizationWebsiteHostingPlatform struct {
	ID         string    `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	UrlPattern string    `gorm:"size:255;NOT NULL"`
	CreatedAt  time.Time `gorm:"default:CURRENT_TIMESTAMP"`
}

func (OrganizationWebsiteHostingPlatform) TableName

type OutboxEvent

type OutboxEvent struct {
	ID           string              `gorm:"column:id;primaryKey;type:varchar(50);"`
	EventType    enums.NatsEventType `gorm:"column:event_type;type:varchar(100);index;not null"`
	EntityID     string              `gorm:"column:entity;type:varchar(50)" json:"entityId"`
	Publisher    string              `gorm:"column:publisher;type:varchar(50);index;not null" json:"publisher"`
	Tenant       string              `gorm:"column:tenant;type:varchar(50);not null" json:"tenant"`
	SessionID    string              `gorm:"column:session_id;type:varchar(50)" json:"sessionId"`
	Payload      []byte              `gorm:"column:payload;type:bytea;not null"`
	Status       OutboxStatus        `gorm:"column:status;type:varchar(20);index;not null"`
	CreatedAt    time.Time           `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	ProcessedAt  *time.Time          `gorm:"column:processed_at;"`                  // When the event was processed
	RetryCount   int                 `gorm:"column:retry_count;type:int;default:0"` // For error handling
	ErrorMessage string              `gorm:"column:error_message;type:text;"`       // Last error message if failed
	LockUntil    *time.Time          `gorm:"column:lock_until;index"`               // For distributed processing
}

func (*OutboxEvent) BeforeCreate

func (o *OutboxEvent) BeforeCreate(tx *gorm.DB) error

func (OutboxEvent) TableName

func (OutboxEvent) TableName() string

type OutboxStatus

type OutboxStatus string
const (
	OutboxPending    OutboxStatus = "pending"
	OutboxProcessing OutboxStatus = "processing"
	OutboxCompleted  OutboxStatus = "completed"
	OutboxFailed     OutboxStatus = "failed"
)

type PersonalEmailProvider

type PersonalEmailProvider struct {
	ID             uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	ProviderName   string    `gorm:"size:255;not null;"`
	ProviderDomain string    `gorm:"size:255;not null;index:idx_provider_domain"`
	CreatedAt      time.Time `gorm:"default:CURRENT_TIMESTAMP"`
}

func (PersonalEmailProvider) TableName

func (PersonalEmailProvider) TableName() string

type PersonalIntegration

type PersonalIntegration struct {
	ID         uint64    `gorm:"primary_key;autoIncrement:true" json:"id"`
	TenantName string    `gorm:"column:tenant_name;type:varchar(255);NOT NULL" json:"tenantName" binding:"required"`
	Name       string    `gorm:"column:name;type:varchar(255);NOT NULL" json:"name" binding:"required"`
	Email      string    `gorm:"column:email;type:varchar(255);NOT NULL" json:"email" binding:"required"`
	Secret     string    `gorm:"column:key;type:varchar(255);NOT NULL;index:idx_key,unique" json:"key" binding:"required"`
	Active     bool      `gorm:"column:active;type:boolean;DEFAULT:true" json:"active"`
	CreatedAt  time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt  time.Time `gorm:"column:updated_at;type:timestamp" json:"updatedAt"`
}

func (PersonalIntegration) TableName

func (PersonalIntegration) TableName() string

func (PersonalIntegration) UniqueIndex

func (PersonalIntegration) UniqueIndex() [][]string

type PostmarkApiKey

type PostmarkApiKey struct {
	ID         uint64    `gorm:"primary_key;autoIncrement:true" json:"id"`
	TenantName string    `gorm:"column:tenant_name;type:varchar(255);NOT NULL" json:"tenantName" binding:"required"`
	Key        string    `gorm:"column:key;type:varchar(255);NOT NULL;index:idx_key,unique" json:"key" binding:"required"`
	CreatedAt  time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt  time.Time `gorm:"column:updated_at;type:timestamp" json:"updatedAt"`
}

func (PostmarkApiKey) TableName

func (PostmarkApiKey) TableName() string

type QuickbooksSettingsEntity

type QuickbooksSettingsEntity struct {
	Id                    uuid.UUID  `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	Tenant                string     `gorm:"index:idx_tenant_uk;size:255;not null"`
	CreatedAt             *time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp"`
	UpdatedAt             *time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp"`
	RealmId               string     `gorm:"column:realm_id;"`
	AccessToken           string     `gorm:"column:access_token;type:text;"`
	AccessTokenExpiresIn  int        `gorm:"column:access_expires_in;"`
	AccessTokenExpiresAt  time.Time  `gorm:"column:access_token_expires_at;type:timestamp"`
	RefreshToken          string     `gorm:"column:refresh_token;type:text;"`
	RefreshTokenExpiresIn int        `gorm:"column:refresh_token_expires_in;"`
	RefreshTokenExpiresAt time.Time  `gorm:"column:refresh_token_expires_at;type:timestamp"`
	RefreshTokenExpired   bool       `gorm:"column:refresh_token_expired;"`
	SalesAccountId        string     `gorm:"column:sales_account_id;"`
}

func (QuickbooksSettingsEntity) TableName

func (QuickbooksSettingsEntity) TableName() string

type ScrapInFlow

type ScrapInFlow string
const (
	ScrapInFlowPersonSearch   ScrapInFlow = "PERSON_SEARCH"
	ScrapInFlowPersonProfile  ScrapInFlow = "PERSON_PROFILE"
	ScrapInFlowCompanySearch  ScrapInFlow = "COMPANY_SEARCH"
	ScrapInFlowCompanyProfile ScrapInFlow = "COMPANY_PROFILE"
)

type ScrapInResponseBody

type ScrapInResponseBody struct {
	Success       bool                   `json:"success"`
	Email         string                 `json:"email"`
	EmailType     string                 `json:"emailType"`
	CreditsLeft   int                    `json:"credits_left"`
	RateLimitLeft int                    `json:"rate_limit_left"`
	Person        *ScrapinPersonDetails  `json:"person,omitempty"`
	Company       *ScrapinCompanyDetails `json:"company,omitempty"`
}

ScrapInResponseBody is getting serialized in the Data field

type ScrapedWebpage

type ScrapedWebpage struct {
	ID             uint64               `gorm:"primary_key;autoIncrement" json:"id"`
	PrimaryDomain  string               `` /* 128-byte string literal not displayed */
	Url            string               `gorm:"column:url;type:text;uniqueIndex:idx_unique_url" json:"url"`
	Content        string               `gorm:"column:content;type:text" json:"content"`
	Links          pq.StringArray       `gorm:"column:links;type:text[]" json:"links"`
	Category       enum.WebpageCategory `gorm:"column:category;type:varchar(55)" json:"category"`
	Topics         pq.StringArray       `gorm:"column:topics;type:text[]" json:"topics"`
	CreatedAt      time.Time            `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt      time.Time            `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	Error          string               `gorm:"column:error;type:varchar(255)" json:"error"`
	LinksCheckedAt *time.Time           `gorm:"column:links_checked_at;type:timestamp" json:"linksCheckedAt"`
}

func (ScrapedWebpage) TableName

func (ScrapedWebpage) TableName() string

type ScrapinCompanyDetails

type ScrapinCompanyDetails struct {
	LinkedInId         string `json:"linkedInId"`
	Name               string `json:"name"`
	UniversalName      string `json:"universalName"`
	LinkedInUrl        string `json:"linkedInUrl"`
	EmployeeCount      int    `json:"employeeCount"`
	EmployeeCountRange struct {
		Start int `json:"start"`
		End   int `json:"end"`
	} `json:"employeeCountRange"`
	WebsiteUrl    string      `json:"websiteUrl"`
	Tagline       interface{} `json:"tagline"` // Can be null, so use interface{}
	Description   string      `json:"description"`
	Industry      string      `json:"industry"`
	Phone         interface{} `json:"phone"` // Can be null, so use interface{}
	Specialities  []string    `json:"specialities"`
	FollowerCount int         `json:"followerCount"`
	Headquarter   struct {
		City           string      `json:"city"`
		Country        string      `json:"country"`
		PostalCode     string      `json:"postalCode"`
		GeographicArea string      `json:"geographicArea"`
		Street1        string      `json:"street1"`
		Street2        interface{} `json:"street2"` // Can be null, so use interface{}
	} `json:"headquarter"`
	FoundedOn struct {
		Year int `json:"year"`
	}
}

func (ScrapinCompanyDetails) GetEmployeeCount

func (c ScrapinCompanyDetails) GetEmployeeCount() int64

func (ScrapinCompanyDetails) HeadquarterIsEmpty

func (c ScrapinCompanyDetails) HeadquarterIsEmpty() bool

type ScrapinPersonDetails

type ScrapinPersonDetails struct {
	PublicIdentifier   string `json:"publicIdentifier"`
	LinkedInIdentifier string `json:"linkedInIdentifier"`
	LinkedInUrl        string `json:"linkedInUrl"`
	FirstName          string `json:"firstName"`
	LastName           string `json:"lastName"`
	Headline           string `json:"headline"`
	Location           string `json:"location"`
	Summary            string `json:"summary"`
	PhotoUrl           string `json:"photoUrl"`
	CreationDate       struct {
		Month int `json:"month"`
		Year  int `json:"year"`
	} `json:"creationDate"`
	FollowerCount int `json:"followerCount"`
	Positions     struct {
		PositionsCount  int                      `json:"positionsCount"`
		PositionHistory []ScrapinPositionHistory `json:"positionHistory"`
	} `json:"positions"`
	Schools struct {
		EducationsCount  int `json:"educationsCount"`
		EducationHistory []struct {
			DegreeName   string      `json:"degreeName"`
			FieldOfStudy string      `json:"fieldOfStudy"`
			Description  interface{} `json:"description"` // Can be null, so use interface{}
			LinkedInUrl  string      `json:"linkedInUrl"`
			SchoolLogo   string      `json:"schoolLogo"`
			SchoolName   string      `json:"schoolName"`
			StartEndDate struct {
				Start struct {
					Month *int `json:"month"` // Can be null, so use pointer
					Year  *int `json:"year"`  // Can be null, so use pointer
				} `json:"start"`
				End struct {
					Month *int `json:"month"` // Can be null, so use pointer
					Year  *int `json:"year"`  // Can be null, so use pointer
				} `json:"end"`
			} `json:"startEndDate"`
		} `json:"educationHistory"`
	} `json:"schools"`
	Skills    []interface{} `json:"skills"`    // Can be empty, so use interface{}
	Languages []interface{} `json:"languages"` // Can be empty, so use interface{}
}

type ScrapinPositionHistory

type ScrapinPositionHistory struct {
	Title        string `json:"title"`
	CompanyName  string `json:"companyName"`
	Description  string `json:"description"`
	StartEndDate struct {
		Start *struct {
			Month int `json:"month"`
			Year  int `json:"year"`
		} `json:"start"`
		End *struct {
			Month int `json:"month"`
			Year  int `json:"year"`
		} `json:"end"`
	} `json:"startEndDate"`
	LinkedInUrl string `json:"linkedInUrl"`
	LinkedInId  string `json:"linkedInId"`
}

func OrderPositionsByEndDate

func OrderPositionsByEndDate(positions []ScrapinPositionHistory) []ScrapinPositionHistory

OrderPositionsByEndDate sorts positions by end date ascending, with current positions at the end

func (ScrapinPositionHistory) GetEndMonth

func (p ScrapinPositionHistory) GetEndMonth() int

GetEndMonth returns the end month or 12 for current positions

func (ScrapinPositionHistory) GetEndYear

func (p ScrapinPositionHistory) GetEndYear() int

GetEndYear returns the end year or max int32 for current positions

func (ScrapinPositionHistory) IsCurrentPosition

func (p ScrapinPositionHistory) IsCurrentPosition() bool

IsCurrentPosition returns true if the position has no end date

type ScrubbyStatus

type ScrubbyStatus string
const (
	ScrubbyStatusPending ScrubbyStatus = "pending"
	ScrubbyStatusValid   ScrubbyStatus = "Valid"
	ScrubbyStatusInvalid ScrubbyStatus = "Invalid"

	ScrubbyStatusLowercasePending ScrubbyStatus = "pending"
	ScrubbyStatusLowercaseValid   ScrubbyStatus = "valid"
	ScrubbyStatusLowercaseInvalid ScrubbyStatus = "invalid"
)

type SkuEntity

type SkuEntity struct {
	ID        string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	Tenant    string    `gorm:"column:tenant;type:varchar(255);not null" json:"tenant" binding:"required"`
	Type      SkuType   `gorm:"column:sku_type;type:varchar(255);not null" json:"type" binding:"required"`
	Name      string    `gorm:"column:name;type:varchar(255);not null" json:"name" binding:"required"`
	Price     float64   `gorm:"column:price;type:decimal(10,2);not null" json:"price" binding:"required"`
	Archived  bool      `gorm:"column:archived;type:boolean;default:false" json:"archived"`

	QuickbooksId string `gorm:"column:quickbooks_id;type:varchar(255)" json:"quickbooksId"`
}

func (SkuEntity) TableName

func (SkuEntity) TableName() string

type SkuType

type SkuType string
const (
	SkuTypeSubscription SkuType = "SUBSCRIPTION"
	SkuTypeOneTime      SkuType = "ONE_TIME"
)

func (SkuType) String

func (s SkuType) String() string

type SlackChannel

type SlackChannel struct {
	ID             uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	Source         string    `gorm:"column:source;type:varchar(255);"`
	CreatedAt      time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp"`
	UpdatedAt      time.Time `gorm:"column:updated_at;type:timestamp"`
	TenantName     string    `gorm:"column:tenant_name;type:varchar(255);NOT NULL"`
	ChannelId      string    `gorm:"column:channel_id;type:varchar(255);NOT NULL"`
	ChannelName    string    `gorm:"column:channel_name;type:varchar(255);"`
	OrganizationId *string   `gorm:"column:organization_id;type:varchar(255);"`
}

func (SlackChannel) TableName

func (SlackChannel) TableName() string

func (SlackChannel) UniqueIndex

func (SlackChannel) UniqueIndex() [][]string

type SlackChannelNotification

type SlackChannelNotification struct {
	ID        uuid.UUID                        `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	CreatedAt time.Time                        `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp"`
	UpdatedAt time.Time                        `gorm:"column:updated_at;type:timestamp"`
	Tenant    string                           `gorm:"column:tenant;type:varchar(255);NOT NULL"`
	ChannelId string                           `gorm:"column:channel_id;type:varchar(255);NOT NULL"`
	Workflow  SlackChannelNotificationWorkflow `gorm:"column:workflow;type:varchar(255);"`
}

send notifications to slack channels tenants can configure this for particular workflows

func (SlackChannelNotification) TableName

func (SlackChannelNotification) TableName() string

func (SlackChannelNotification) UniqueIndex

func (SlackChannelNotification) UniqueIndex() [][]string

type SlackChannelNotificationWorkflow

type SlackChannelNotificationWorkflow string
const (
	SlackChannelNotificationWorkflowWebsiteVisit   SlackChannelNotificationWorkflow = "REVEAL-AI-WEBSITE-VISIT"
	SlackChannelNotificationWorkflowMailstackReply SlackChannelNotificationWorkflow = "MAILSTACK-REPLY"
)

type SlackSettingsEntity

type SlackSettingsEntity struct {
	Id           uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	TenantName   string    `gorm:"index:idx_tenant_uk;size:255;not null"`
	CreatedAt    time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt    time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	AppId        string    `gorm:"size:255;"`
	AuthedUserId string    `gorm:"size:255;"`
	Scope        string    `gorm:"type:text;"`
	TokenType    string    `gorm:"size:255;"`
	AccessToken  string    `gorm:"size:255;"`
	BotUserId    string    `gorm:"size:255;"`
	TeamId       string    `gorm:"size:255;"`
}

func (SlackSettingsEntity) TableName

func (SlackSettingsEntity) TableName() string

type SnitcherResponseBody

type SnitcherResponseBody struct {
	Fuzzy   bool   `json:"fuzzy"`
	Domain  string `json:"domain"`
	Type    string `json:"type"`
	Company *struct {
		Name          string      `json:"name"`
		Domain        string      `json:"domain"`
		Website       string      `json:"website"`
		Industry      string      `json:"industry"`
		FoundedYear   interface{} `json:"founded_year"`
		EmployeeRange string      `json:"employee_range"`
		AnnualRevenue interface{} `json:"annual_revenue"`
		TotalFunding  interface{} `json:"total_funding"`
		Location      Location    `json:"location"`
		Description   string      `json:"description"`
		Phone         string      `json:"phone"`
		Geo           struct {
			Country      string  `json:"country"`
			CountryCode  string  `json:"country_code"`
			State        string  `json:"state"`
			StateCode    *string `json:"state_code"`
			PostalCode   *string `json:"postal_code"`
			City         string  `json:"city"`
			Street       *string `json:"street"`
			StreetNumber *string `json:"street_number"`
		} `json:"geo"`
		Profiles *struct {
			Crunchbase *struct {
				Handle string      `json:"handle"`
				Url    interface{} `json:"url"`
			} `json:"crunchbase"`
			Linkedin *struct {
				Handle string `json:"handle"`
				Url    string `json:"url"`
			} `json:"linkedin"`
			Facebook *struct {
				Handle string `json:"handle"`
				Url    string `json:"url"`
			} `json:"facebook"`
			Twitter *struct {
				Handle string `json:"handle"`
				Url    string `json:"url"`
			} `json:"twitter"`
			Instagram *struct {
				Handle string      `json:"handle"`
				Url    interface{} `json:"url"`
			} `json:"instagram"`
			Youtube *struct {
				Handle string      `json:"handle"`
				Url    interface{} `json:"url"`
			} `json:"youtube"`
		} `json:"profiles"`
	} `json:"company"`
	GeoIP struct {
		Country     string `json:"country"`
		CountryCode string `json:"country_code"`
		City        string `json:"city"`
		State       string `json:"state"`
	} `json:"geoIP"`
}

func (SnitcherResponseBody) HasLocation

func (location SnitcherResponseBody) HasLocation() bool

func (SnitcherResponseBody) HasRawLocation

func (location SnitcherResponseBody) HasRawLocation() bool

func (SnitcherResponseBody) LocationToString

func (location SnitcherResponseBody) LocationToString() string

type StatsApiCalls

type StatsApiCalls struct {
	ID        uint64    `gorm:"primary_key;autoIncrement:true" json:"id"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	Tenant    string    `gorm:"column:tenant;type:varchar(255);NOT NULL;index:idx_stats_api_calls_unique,unique" json:"tenant"`
	Api       string    `gorm:"column:api;type:varchar(255);NOT NULL;index:idx_stats_api_calls_unique,unique" json:"api"`
	Day       time.Time `gorm:"column:day;type:date;NOT NULL;index:idx_stats_api_calls_unique,unique" json:"day"`
	Calls     uint64    `gorm:"column:calls;type:bigint;NOT NULL" json:"calls"`
}

func (StatsApiCalls) TableName

func (StatsApiCalls) TableName() string

type StringArray

type StringArray []string

func (*StringArray) Scan

func (a *StringArray) Scan(value interface{}) error

func (StringArray) Value

func (a StringArray) Value() (driver.Value, error)

type TableIdType

type TableIdType string
const (
	TableIDTypeOrganizations                  TableIdType = "ORGANIZATIONS"
	TableIDTypeCustomers                      TableIdType = "CUSTOMERS"
	TableIDTypeUpcomingInvoices               TableIdType = "UPCOMING_INVOICES"
	TableIDTypePastInvoices                   TableIdType = "PAST_INVOICES"
	TableIDTypeContacts                       TableIdType = "CONTACTS"
	TableIDTypeContactsForTargetOrganizations TableIdType = "CONTACTS_FOR_TARGET_ORGANIZATIONS"
	TableIDTypeOpportunities                  TableIdType = "OPPORTUNITIES"
	TableIDTypeOpportunitiesRecords           TableIdType = "OPPORTUNITIES_RECORDS"
	TableIDTypeContracts                      TableIdType = "CONTRACTS"
	TableIDTypeFlowActions                    TableIdType = "FLOW_ACTIONS"
	TableIDTypeFlowContacts                   TableIdType = "FLOW_CONTACTS"
	TableIDTypeTasks                          TableIdType = "TASKS"
)

type TableViewDefinition

type TableViewDefinition struct {
	ID             uint64    `gorm:"primary_key;autoIncrement:true" json:"id"`
	CreatedAt      time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt      time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	Tenant         string    `gorm:"column:tenant;type:varchar(255);NOT NULL" json:"tenant"`
	UserId         string    `gorm:"column:user_id;type:varchar(255)" json:"userId"`
	TableId        string    `gorm:"column:table_id;type:varchar(255);NOT NULL;DEFAULT:''" json:"tableId"`
	TableType      string    `gorm:"column:table_type;type:varchar(255);NOT NULL" json:"tableType"`
	Name           string    `gorm:"column:table_name;type:varchar(255);NOT NULL" json:"tableName"`
	Order          int       `gorm:"column:position;type:int;NOT NULL" json:"order"`
	Icon           string    `gorm:"column:icon;type:varchar(255)" json:"icon"`
	Filters        string    `gorm:"column:filters;type:text" json:"filters"`
	DefaultFilters string    `gorm:"column:default_filters;type:text" json:"defaultFilters"`
	Sorting        string    `gorm:"column:sorting;type:text" json:"sorting"`
	ColumnsJson    string    `gorm:"column:columns;type:text" json:"columns"`
	IsPreset       bool      `gorm:"column:is_preset;type:boolean;NOT NULL;DEFAULT:false" json:"isPreset"`
	IsShared       bool      `gorm:"column:is_shared;type:boolean;NOT NULL;DEFAULT:false" json:"isShared"`
}

func (TableViewDefinition) TableName

func (TableViewDefinition) TableName() string

type TableViewType

type TableViewType string
const (
	TableViewTypeOrganizations TableViewType = "ORGANIZATIONS"
	TableViewTypeInvoices      TableViewType = "INVOICES"
	TableViewTypeContacts      TableViewType = "CONTACTS"
	TableViewTypeOpportunities TableViewType = "OPPORTUNITIES"
	TableViewTypeContracts     TableViewType = "CONTRACTS"
	TableViewTypeFlow          TableViewType = "FLOW"
	TableViewTypeTasks         TableViewType = "TASKS"
)

type Tenant

type Tenant struct {
	Name          string    `gorm:"primary_key;type:varchar(255);NOT NULL" json:"name"`
	CreatedAt     time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt     time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp" json:"updatedAt"`
	HashID        string    `gorm:"column:tenant_hash;type:varchar(25)" json:"hashID"`
	CompanyReport string    `gorm:"column:company_report;type:text" json:"companyReport"`
}

func (Tenant) TableName

func (Tenant) TableName() string

type TenantSettings

type TenantSettings struct {
	ID         string `gorm:"primary_key;type:uuid;default:gen_random_uuid()"`
	TenantName string `gorm:"column:tenant_name;type:varchar(255);NOT NULL" binding:"required"`

	SmartSheetId          *string `gorm:"column:smart_sheet_id;type:varchar(255);" binding:"required"`
	SmartSheetAccessToken *string `gorm:"column:smart_sheet_access_token;type:varchar(255);"  binding:"required"`

	JiraAPIToken *string `gorm:"column:jira_api_token;type:varchar(255);" binding:"required"`
	JiraDomain   *string `gorm:"column:jira_domain;type:varchar(255);" binding:"required"`
	JiraEmail    *string `gorm:"column:jira_email;type:varchar(255);" binding:"required"`

	TrelloAPIToken *string `gorm:"column:trello_api_token;type:varchar(255);" binding:"required"`
	TrelloAPIKey   *string `gorm:"column:trello_api_key;type:varchar(255);"  binding:"required"`

	AhaAPIUrl *string `gorm:"column:aha_api_url;type:varchar(255);"  binding:"required"`
	AhaAPIKey *string `gorm:"column:aha_api_key;type:varchar(255);"  binding:"required"`

	AirtablePersonalAccessToken *string `gorm:"column:airtable_personal_access_token;type:varchar(255);"  binding:"required"`

	AmplitudeAPIKey    *string `gorm:"column:amplitude_api_key;type:varchar(255);"  binding:"required"`
	AmplitudeSecretKey *string `gorm:"column:amplitude_secret_key;type:varchar(255);" binding:"required"`

	AsanaAccessToken *string `gorm:"column:asana_access_token;type:varchar(255);"  binding:"required"`

	BatonAPIKey *string `gorm:"column:baton_api_key;type:varchar(255);"  binding:"required"`

	BabelforceRegionEnvironment *string `gorm:"column:babelforce_region_environment;type:varchar(255);"  binding:"required"`
	BabelforceAccessKeyId       *string `gorm:"column:babelforce_access_key_id;type:varchar(255);"  binding:"required"`
	BabelforceAccessToken       *string `gorm:"column:babelforce_access_token;type:varchar(255);" binding:"required"`

	BigQueryServiceAccountKey *string `gorm:"column:bigquery_service_account_key;type:varchar(255);" binding:"required"`

	BraintreePublicKey   *string `gorm:"column:braintree_public_key;type:varchar(255);" binding:"required"`
	BraintreePrivateKey  *string `gorm:"column:braintree_private_key;type:varchar(255);"  binding:"required"`
	BraintreeEnvironment *string `gorm:"column:braintree_environment;type:varchar(255);"  binding:"required"`
	BraintreeMerchantId  *string `gorm:"column:braintree_merchant_id;type:varchar(255);"  binding:"required"`

	CallRailAccount  *string `gorm:"column:callrail_account;type:varchar(255);" binding:"required"`
	CallRailApiToken *string `gorm:"column:callrail_api_token;type:varchar(255);"  binding:"required"`

	ChargebeeApiKey         *string `gorm:"column:chargebee_api_key;type:varchar(255);" binding:"required"`
	ChargebeeProductCatalog *string `gorm:"column:chargebee_product_catalog;type:varchar(255);" binding:"required"`

	ChargifyApiKey *string `gorm:"column:chargify_api_key;type:varchar(255);" binding:"required"`
	ChargifyDomain *string `gorm:"column:chargify_domain;type:varchar(255);" binding:"required"`

	ClickUpApiKey *string `gorm:"column:clickup_api_key;type:varchar(255);" binding:"required"`

	CloseComApiKey *string `gorm:"column:closecom_api_key;type:varchar(255);" binding:"required"`

	CodaAuthToken  *string `gorm:"column:coda_auth_token;type:varchar(255);" binding:"required"`
	CodaDocumentId *string `gorm:"column:coda_document_id;type:varchar(255);" binding:"required"`

	ConfluenceApiToken   *string `gorm:"column:confluence_api_token;type:varchar(255);" binding:"required"`
	ConfluenceDomain     *string `gorm:"column:confluence_domain;type:varchar(255);" binding:"required"`
	ConfluenceLoginEmail *string `gorm:"column:confluence_login_email;type:varchar(255);" binding:"required"`

	CourierApiKey *string `gorm:"column:courier_api_key;type:varchar(255);" binding:"required"`

	CustomerIoApiKey *string `gorm:"column:customerio_api_key;type:varchar(255);" binding:"required"`

	DatadogApiKey         *string `gorm:"column:datadog_api_key;type:varchar(255);" binding:"required"`
	DatadogApplicationKey *string `gorm:"column:datadog_application_key;type:varchar(255);" binding:"required"`

	DelightedApiKey *string `gorm:"column:delighted_api_key;type:varchar(255);" binding:"required"`

	DixaApiToken *string `gorm:"column:dixa_api_token;type:varchar(255);" binding:"required"`

	DriftApiToken *string `gorm:"column:drift_api_token;type:varchar(255);" binding:"required"`

	EmailOctopusApiKey *string `gorm:"column:emailoctopus_api_key;type:varchar(255);" binding:"required"`

	FacebookMarketingAccessToken *string `gorm:"column:facebook_marketing_access_token;type:varchar(255);"  binding:"required"`

	FastbillApiKey    *string `gorm:"column:fastbill_api_key;type:varchar(255);" binding:"required"`
	FastbillProjectId *string `gorm:"column:fastbill_project_id;type:varchar(255);" binding:"required"`

	FlexportApiKey *string `gorm:"column:flexport_api_key;type:varchar(255);" binding:"required"`

	FreshcallerApiKey *string `gorm:"column:freshcaller_api_key;type:varchar(255);" binding:"required"`

	FreshdeskApiKey *string `gorm:"column:freshdesk_api_key;type:varchar(255);" binding:"required"`
	FreshdeskDomain *string `gorm:"column:freshdesk_domain;type:varchar(255);" binding:"required"`

	FreshsalesApiKey *string `gorm:"column:freshsales_api_key;type:varchar(255);" binding:"required"`
	FreshsalesDomain *string `gorm:"column:freshsales_domain;type:varchar(255);" binding:"required"`

	FreshserviceApiKey *string `gorm:"column:freshservice_api_key;type:varchar(255);" binding:"required"`
	FreshserviceDomain *string `gorm:"column:freshservice_domain;type:varchar(255);" binding:"required"`

	GenesysRegion       *string `gorm:"column:genesys_region;type:varchar(255);" binding:"required"`
	GenesysClientId     *string `gorm:"column:genesys_client_id;type:varchar(255);" binding:"required"`
	GenesysClientSecret *string `gorm:"column:genesys_client_secret;type:varchar(255);" binding:"required"`

	GitHubAccessToken *string `gorm:"column:github_access_token;type:varchar(255);" binding:"required"`

	GitLabAccessToken *string `gorm:"column:gitlab_access_token;type:varchar(255);" binding:"required"`

	GoCardlessAccessToken *string `gorm:"column:gocardless_access_token;type:varchar(255);" binding:"required"`
	GoCardlessEnvironment *string `gorm:"column:gocardless_environment;type:varchar(255);" binding:"required"`
	GoCardlessVersion     *string `gorm:"column:gocardless_version;type:varchar(255);" binding:"required"`

	GongApiKey *string `gorm:"column:gong_api_key;type:varchar(255);" binding:"required"`

	HarvestAccountId   *string `gorm:"column:harvest_account_id;type:varchar(255);" binding:"required"`
	HarvestAccessToken *string `gorm:"column:harvest_access_token;type:varchar(255);" binding:"required"`

	InsightlyApiToken *string `gorm:"column:insightly_api_token;type:varchar(255);" binding:"required"`

	InstagramAccessToken *string `gorm:"column:instagram_access_token;type:varchar(255);" binding:"required"`

	InstatusApiKey *string `gorm:"column:instatus_api_key;type:varchar(255);" binding:"required"`

	IntercomAccessToken *string `gorm:"column:intercom_access_token;type:varchar(255);" binding:"required"`

	KlaviyoApiKey *string `gorm:"column:klaviyo_api_key;type:varchar(255);" binding:"required"`

	KustomerApiToken *string `gorm:"column:kustomer_api_token;type:varchar(255);" binding:"required"`

	LookerClientId     *string `gorm:"column:looker_client_id;type:varchar(255);" binding:"required"`
	LookerClientSecret *string `gorm:"column:looker_client_secret;type:varchar(255);" binding:"required"`
	LookerDomain       *string `gorm:"column:looker_domain;type:varchar(255);" binding:"required"`

	MailchimpApiKey *string `gorm:"column:mailchimp_api_key;type:varchar(255);" binding:"required"`

	MailjetEmailApiKey    *string `gorm:"column:mailjet_email_api_key;type:varchar(255);" binding:"required"`
	MailjetEmailApiSecret *string `gorm:"column:mailjet_email_api_secret;type:varchar(255);" binding:"required"`

	MarketoClientId     *string `gorm:"column:marketo_client_id;type:varchar(255);" binding:"required"`
	MarketoClientSecret *string `gorm:"column:marketo_client_secret;type:varchar(255);" binding:"required"`
	MarketoDomainUrl    *string `gorm:"column:marketo_domain_url;type:varchar(255);" binding:"required"`

	MicrosoftTeamsTenantId     *string `gorm:"column:microsoft_teams_tenant_id;type:varchar(255);" binding:"required"`
	MicrosoftTeamsClientId     *string `gorm:"column:microsoft_teams_client_id;type:varchar(255);" binding:"required"`
	MicrosoftTeamsClientSecret *string `gorm:"column:microsoft_teams_client_secret;type:varchar(255);" binding:"required"`

	MondayApiToken *string `gorm:"column:monday_api_token;type:varchar(255);" binding:"required"`

	NotionInternalAccessToken *string `gorm:"column:notion_internal_access_token;type:varchar(255);" binding:"required"`
	NotionPublicAccessToken   *string `gorm:"column:notion_public_access_token;type:varchar(255);" binding:"required"`
	NotionPublicClientId      *string `gorm:"column:notion_public_client_id;type:varchar(255);" binding:"required"`
	NotionPublicClientSecret  *string `gorm:"column:notion_public_client_secret;type:varchar(255);" binding:"required"`

	OracleNetsuiteAccountId      *string `gorm:"column:oracle_netsuite_account_id;type:varchar(255);" binding:"required"`
	OracleNetsuiteConsumerKey    *string `gorm:"column:oracle_netsuite_consumer_key;type:varchar(255);" binding:"required"`
	OracleNetsuiteConsumerSecret *string `gorm:"column:oracle_netsuite_consumer_secret;type:varchar(255);" binding:"required"`
	OracleNetsuiteTokenId        *string `gorm:"column:oracle_netsuite_token_id;type:varchar(255);" binding:"required"`
	OracleNetsuiteTokenSecret    *string `gorm:"column:oracle_netsuite_token_secret;type:varchar(255);" binding:"required"`

	OrbApiKey *string `gorm:"column:orb_api_key;type:varchar(255);" binding:"required"`

	OrbitApiKey *string `gorm:"column:orbit_api_key;type:varchar(255);" binding:"required"`

	PagerDutyApikey *string `gorm:"column:pager_duty_apikey;type:varchar(255);" binding:"required"`

	PaypalTransactionClientId *string `gorm:"column:paypal_transaction_client_id;type:varchar(255);" binding:"required"`
	PaypalTransactionSecret   *string `gorm:"column:paypal_transaction_secret;type:varchar(255);" binding:"required"`

	PaystackSecretKey      *string `gorm:"column:paystack_secret_key;type:varchar(255);" binding:"required"`
	PaystackLookbackWindow *string `gorm:"column:paystack_lookback_window;type:varchar(255);" binding:"required"`

	PendoApiToken *string `gorm:"column:pendo_api_token;type:varchar(255);" binding:"required"`

	PipedriveApiToken *string `gorm:"column:pipedrive_api_token;type:varchar(255);" binding:"required"`

	PlaidAccessToken *string `gorm:"column:plaid_access_token;type:varchar(255);" binding:"required"`

	PlausibleApiKey *string `gorm:"column:plausible_api_key;type:varchar(255);" binding:"required"`
	PlausibleSiteId *string `gorm:"column:plausible_site_id;type:varchar(255);" binding:"required"`

	PostHogApiKey  *string `gorm:"column:post_hog_api_key;type:varchar(255);" binding:"required"`
	PostHogBaseUrl *string `gorm:"column:post_hog_base_url;type:varchar(255);" binding:"required"`

	QualarooApiKey   *string `gorm:"column:qualaroo_api_key;type:varchar(255);" binding:"required"`
	QualarooApiToken *string `gorm:"column:qualaroo_api_token;type:varchar(255);" binding:"required"`

	QuickBooksClientId     *string `gorm:"column:quick_books_client_id;type:varchar(255);" binding:"required"`
	QuickBooksClientSecret *string `gorm:"column:quick_books_client_secret;type:varchar(255);" binding:"required"`
	QuickBooksRealmId      *string `gorm:"column:quick_books_realm_id;type:varchar(255);" binding:"required"`
	QuickBooksRefreshToken *string `gorm:"column:quick_books_refresh_token;type:varchar(255);" binding:"required"`

	RechargeApiToken *string `gorm:"column:recharge_api_token;type:varchar(255);" binding:"required"`

	RecruiteeCompanyId *string `gorm:"column:recruitee_company_id;type:varchar(255);" binding:"required"`
	RecruiteeApiKey    *string `gorm:"column:recruitee_api_key;type:varchar(255);" binding:"required"`

	RecurlyApiKey *string `gorm:"column:recurly_api_key;type:varchar(255);" binding:"required"`

	RetentlyApiToken *string `gorm:"column:retently_api_token;type:varchar(255);" binding:"required"`

	SalesloftApiKey *string `gorm:"column:salesloft_api_key;type:varchar(255);" binding:"required"`

	SendgridApiKey *string `gorm:"column:sendgrid_api_key;type:varchar(255);" binding:"required"`

	SentryProject             *string `gorm:"column:sentry_project;type:varchar(255);" binding:"required"`
	SentryHost                *string `gorm:"column:sentry_host;type:varchar(255);" binding:"required"`
	SentryAuthenticationToken *string `gorm:"column:sentry_authentication_token;type:varchar(255);" binding:"required"`
	SentryOrganization        *string `gorm:"column:sentry_organization;type:varchar(255);" binding:"required"`

	SlackApiToken       *string `gorm:"column:slack_api_token;type:varchar(255);" binding:"required"`
	SlackChannelFilter  *string `gorm:"column:slack_channel_filter;type:varchar(255);" binding:"required"`
	SlackLookbackWindow *string `gorm:"column:slack_lookback_window;type:varchar(255);" binding:"required"`

	StripeAccountId *string `gorm:"column:stripe_account_id;type:varchar(255);" binding:"required"`
	StripeSecretKey *string `gorm:"column:stripe_secret_key;type:varchar(255);" binding:"required"`

	SurveySparrowAccessToken *string `gorm:"column:survey_sparrow_access_token;type:varchar(255);" binding:"required"`

	SurveyMonkeyAccessToken *string `gorm:"column:survey_monkey_access_token;type:varchar(255);" binding:"required"`

	TalkdeskApiKey *string `gorm:"column:talkdesk_api_key;type:varchar(255);" binding:"required"`

	TikTokAccessToken *string `gorm:"column:tik_tok_access_token;type:varchar(255);" binding:"required"`

	TodoistApiToken *string `gorm:"column:todoist_api_token;type:varchar(255);" binding:"required"`

	TypeformApiToken *string `gorm:"column:typeform_api_token;type:varchar(255);" binding:"required"`

	VittallyApiKey *string `gorm:"column:vittally_api_key;type:varchar(255);" binding:"required"`

	WrikeAccessToken *string `gorm:"column:wrike_access_token;type:varchar(255);" binding:"required"`
	WrikeHostUrl     *string `gorm:"column:wrike_host_url;type:varchar(255);" binding:"required"`

	XeroClientId     *string `gorm:"column:xero_client_id;type:varchar(255);" binding:"required"`
	XeroClientSecret *string `gorm:"column:xero_client_secret;type:varchar(255);" binding:"required"`
	XeroTenantId     *string `gorm:"column:xero_tenant_id;type:varchar(255);" binding:"required"`
	XeroScopes       *string `gorm:"column:xero_scopes;type:varchar(255);" binding:"required"`

	ZendeskAPIKey     *string `gorm:"column:zendesk_api_key;type:varchar(255);" binding:"required"`
	ZendeskSubdomain  *string `gorm:"column:zendesk_subdomain;type:varchar(255);" binding:"required"`
	ZendeskAdminEmail *string `gorm:"column:zendesk_admin_email;type:varchar(255);" binding:"required"`

	ZendeskChatSubdomain *string `gorm:"column:zendesk_chat_subdomain;type:varchar(255);" binding:"required"`
	ZendeskChatAccessKey *string `gorm:"column:zendesk_chat_access_key;type:varchar(255);" binding:"required"`

	ZendeskTalkSubdomain *string `gorm:"column:zendesk_talk_subdomain;type:varchar(255);" binding:"required"`
	ZendeskTalkAccessKey *string `gorm:"column:zendesk_talk_access_key;type:varchar(255);" binding:"required"`

	ZendeskSellApiToken *string `gorm:"column:zendesk_sell_api_token;type:varchar(255);" binding:"required"`

	ZendeskSunshineSubdomain *string `gorm:"column:zendesk_sunshine_subdomain;type:varchar(255);" binding:"required"`
	ZendeskSunshineApiToken  *string `gorm:"column:zendesk_sunshine_api_token;type:varchar(255);" binding:"required"`
	ZendeskSunshineEmail     *string `gorm:"column:zendesk_sunshine_email;type:varchar(255);" binding:"required"`

	ZenefitsToken *string `gorm:"column:zenefits_token;type:varchar(255);" binding:"required"`

	MixpanelUsername        *string `gorm:"column:mixpanel_username;type:varchar(255);" binding:"required"`
	MixpanelSecret          *string `gorm:"column:mixpanel_secret;type:varchar(255);" binding:"required"`
	MixpanelProjectId       *string `gorm:"column:mixpanel_project_id;type:varchar(255);" binding:"required"`
	MixpanelProjectSecret   *string `gorm:"column:mixpanel_project_secret;type:varchar(255);" binding:"required"`
	MixpanelProjectTimezone *string `gorm:"column:mixpanel_project_timezone;type:varchar(255);" binding:"required"`
	MixpanelRegion          *string `gorm:"column:mixpanel_region;type:varchar(255);" binding:"required"`

	LinkedInCredential   *string `gorm:"column:linkedin_credential;type:varchar(255)" binding:"required" json:"linkedInCredential"`
	LinkedInCredentialIV *string `gorm:"column:linkedin_credential_iv;type:varchar(32)"`
	LinkedInPassword     *string `gorm:"column:linkedin_password;type:varchar(255)" binding:"required" json:"linkedInPassword"`
	LinkedInPasswordIV   *string `gorm:"column:linkedin_password_iv;type:varchar(32)"`
}

func (TenantSettings) TableName

func (TenantSettings) TableName() string

type TenantSettingsEmailExclusion

type TenantSettingsEmailExclusion struct {
	ID             uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	Tenant         string    `gorm:"size:255;not null;"`
	ExcludeSubject *string   `gorm:"size:255;"`
	ExcludeBody    *string   `gorm:"size:255;"`
}

func (TenantSettingsEmailExclusion) TableName

type TenantSettingsOpportunityStage

type TenantSettingsOpportunityStage struct {
	ID        string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	Tenant    string    `gorm:"column:tenant;type:varchar(255);NOT NULL" json:"tenant"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp" json:"updatedAt"`

	Visible        bool   `gorm:"column:visible;value:boolean;NOT NULL" json:"visible"`
	Value          string `gorm:"column:val;value:varchar(255);NOT NULL" json:"value"`
	Order          int    `gorm:"column:idx;type:int;NOT NULL" json:"order"`
	Label          string `gorm:"column:label;type:varchar(255);NOT NULL" json:"label"`
	LikelihoodRate int64  `gorm:"column:likelihood_rate;type:int;NOT NULL;DEFAULT:0" json:"likelihoodRate"`
}

func (TenantSettingsOpportunityStage) TableName

type TenantWebhook

type TenantWebhook struct {
	// tenant, event, webhook, api key
	ID              uint64    `gorm:"primary_key;autoIncrement:true" json:"id"`
	TenantName      string    `gorm:"column:tenant_name;type:varchar(255);NOT NULL" json:"tenantName" binding:"required"`
	CreatedAt       time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt       time.Time `gorm:"column:updated_at;type:timestamp" json:"updatedAt"`
	WebhookUrl      string    `gorm:"column:webhook_url;type:varchar(255);NOT NULL" json:"webhook" binding:"required"`
	ApiKey          string    `gorm:"column:api_key;type:varchar(255);NOT NULL" json:"apiKey" binding:"required"`
	Event           string    `gorm:"column:event;type:varchar(255);NOT NULL" json:"event" binding:"required"`
	AuthHeaderName  string    `gorm:"column:auth_header_name;type:varchar(255)" json:"authHeaderName"`
	AuthHeaderValue string    `gorm:"column:auth_header_value;type:varchar(255)" json:"authHeaderValue"`
	// data for notifying user if webhook fails
	UserId        string `gorm:"column:user_id;type:varchar(255)" json:"userId"`
	UserFirstName string `gorm:"column:user_first_name;type:varchar(255)" json:"userFirstName"`
	UserLastName  string `gorm:"column:user_last_name;type:varchar(255)" json:"userLastName"`
	UserEmail     string `gorm:"column:user_email;type:varchar(255)" json:"userEmail"`
}

func (TenantWebhook) TableName

func (TenantWebhook) TableName() string

func (TenantWebhook) UniqueIndex

func (TenantWebhook) UniqueIndex() [][]string

type TenantWebhookApiKey

type TenantWebhookApiKey struct {
	ID        uint64    `gorm:"primary_key;autoIncrement:true" json:"id"`
	Tenant    string    `gorm:"column:tenant_name;type:varchar(255);NOT NULL" json:"tenantName" binding:"required"`
	Key       string    `gorm:"column:key;type:varchar(255);NOT NULL;index:tenant_webhook_api_keys_uk,unique" json:"key" binding:"required"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp" json:"createdAt"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp" json:"updatedAt"`
	Enabled   bool      `gorm:"column:enabled;type:boolean;DEFAULT:true" json:"enabled"`
}

func (TenantWebhookApiKey) TableName

func (TenantWebhookApiKey) TableName() string

type TrueInboxResponseBody

type TrueInboxResponseBody struct {
	Email            string `json:"email"`
	Status           string `json:"status"`
	Result           string `json:"result"`
	ConfidenceScore  int    `json:"confidenceScore"`
	SmtpProvider     string `json:"smtpProvider"`
	MailDisposable   bool   `json:"mailDisposable"`
	MailAcceptAll    bool   `json:"mailAcceptAll"`
	Free             bool   `json:"free"`
	TotalCredits     int    `json:"total_credits"`
	CreditsUsed      int    `json:"credits_used"`
	CreditsRemaining int    `json:"credits_remaining"`
}

type UserCalendarAvailability

type UserCalendarAvailability struct {
	ID        string    `gorm:"type:varchar(21);primaryKey"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;DEFAULT:current_timestamp"`
	Tenant    string    `gorm:"size:255;not null;uniqueIndex:idx_tenant_email"`
	Email     string    `gorm:"size:255;not null;uniqueIndex:idx_tenant_email"`
	Timezone  string    `gorm:"size:50;not null"` // e.g., "America/New_York"

	// One field for each day of the week
	Monday    DayAvailability `gorm:"type:jsonb"`
	Tuesday   DayAvailability `gorm:"type:jsonb"`
	Wednesday DayAvailability `gorm:"type:jsonb"`
	Thursday  DayAvailability `gorm:"type:jsonb"`
	Friday    DayAvailability `gorm:"type:jsonb"`
	Saturday  DayAvailability `gorm:"type:jsonb"`
	Sunday    DayAvailability `gorm:"type:jsonb"`
}

UserCalendarAvailability represents a user's available hours for calendar bookings

func (*UserCalendarAvailability) BeforeCreate

func (u *UserCalendarAvailability) BeforeCreate(tx *gorm.DB) error

BeforeCreate hook to ensure ID has the correct prefix and validate

func (*UserCalendarAvailability) BeforeUpdate

func (u *UserCalendarAvailability) BeforeUpdate(tx *gorm.DB) error

BeforeUpdate hook to update the UpdatedAt timestamp and validate

func (UserCalendarAvailability) TableName

func (UserCalendarAvailability) TableName() string

func (*UserCalendarAvailability) Validate

func (u *UserCalendarAvailability) Validate() error

Validate performs validation on the UserCalendarAvailability entity

type UserWorkingSchedule

type UserWorkingSchedule struct {
	ID        uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;DEFAULT:current_timestamp"`
	Tenant    string    `gorm:"size:255;not null;"`

	UserId    string `gorm:"type:varchar(255);not null"`
	DayRange  string `gorm:"type:varchar(7);not null"` // E.g., "Mon-Fri" or "Thu-Fri"
	StartHour string `gorm:"type:varchar(5);not null"` // E.g., 09:00
	EndHour   string `gorm:"type:varchar(5);not null"` // E.g., 18:00
}

func (UserWorkingSchedule) TableName

func (UserWorkingSchedule) TableName() string

type WebSession

type WebSession struct {
	ID                    string          `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	Tenant                string          `gorm:"column:tenant;type:varchar(255);index:idx_tenant" json:"tenant"`
	IP                    string          `gorm:"column:ip;type:varchar(255);index:idx_ip" json:"ip"`
	VisitorID             string          `gorm:"column:visitor_id;type:varchar(255);index:idx_visitor_id" json:"visitorId"`
	Hostname              string          `gorm:"column:hostname;type:varchar(255);" json:"hostname"`
	Domain                *string         `gorm:"column:domain;type:varchar(255);index:idx_domain" json:"domain"`
	OrganizationId        *string         `gorm:"column:organization_id;varchar(255);index:idx_organization_id" json:"organizationId"`
	Email                 *string         `gorm:"column:email;varchar(255);index:idx_email" json:"email"`
	EmailType             *enum.EmailType `gorm:"column:email_type;varchar(255)" json:"emailType"`
	Referrer              *string         `gorm:"column:referrer;type:text;" json:"referrer"`
	QueryParams           *string         `gorm:"column:query_params;type:text;" json:"queryParams"`
	UniquePageViews       pq.StringArray  `gorm:"column:unique_page_views;type:text[];" json:"uniquePageViews"`
	StartTime             time.Time       `gorm:"column:start_time;type:timestamp;" json:"startTime"`
	LastEventType         string          `gorm:"column:last_event_type;type:varchar(255);" json:"lastEventType"`
	LastActivity          time.Time       `gorm:"column:last_activity;type:timestamp;" json:"lastActivity"`
	EndTime               *time.Time      `gorm:"column:end_time;type:timestamp;" json:"endTime"`
	IsActive              bool            `gorm:"column:is_active;type:boolean;default:true" json:"isActive"`
	DetectedExit          bool            `gorm:"column:detected_exit;type:boolean;default:false" json:"detectedExit"`
	PublishedEvent        bool            `gorm:"column:published_event;type:boolean;default:false" json:"publishedEvent"`
	SentSlackNotification *time.Time      `gorm:"column:sent_slack_notification;type:timestamp;" json:"sentSlackNotification"`
	CreatedAt             time.Time       `gorm:"default:CURRENT_TIMESTAMP" json:"createdAt"`
	UpdatedAt             *time.Time      `gorm:"column:updated_at;autoUpdateTime" json:"updatedAt"`
}

func (WebSession) TableName

func (WebSession) TableName() string

type WebSessionPageVisit

type WebSessionPageVisit struct {
	ID             string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	SessionID      string    `gorm:"column:session_id;type:uuid;" json:"sessionId"`
	Url            string    `gorm:"column:url;type:varchar(255);" json:"url"`
	Referer        string    `gorm:"column:referer;type:varchar(1000);" json:"referer"`
	EntryTimestamp time.Time `gorm:"column:entry_timestamp;type:timestamp;" json:"entryTimestamp"`
	ExitTimestamp  time.Time `gorm:"column:exit_timestamp;type:timestamp;" json:"exitTimestamp"`
	Hostname       string    `gorm:"column:hostname;type:varchar(255);" json:"hostname"`
	Pathname       string    `gorm:"column:pathname;type:varchar(255);" json:"pathname"`
}

func (WebSessionPageVisit) TableName

func (WebSessionPageVisit) TableName() string

type WebTrackerEvents

type WebTrackerEvents struct {
	ID        string    `gorm:"primary_key;type:uuid;default:gen_random_uuid()" json:"id"`
	Tenant    string    `gorm:"column:tenant;type:varchar(255);" json:"tenant"`
	SessionID string    `gorm:"column:session_id;type:uuid;" json:"sessionId"`
	VisitorID string    `gorm:"column:visitor_id;type:varchar(255);NOT NULL;" json:"visitorId"`
	IP        string    `gorm:"column:ip;type:varchar(255);" json:"ip" `
	EventType string    `gorm:"column:event_type;type:varchar(255);" json:"eventType"`
	EventData string    `gorm:"column:event_data;type:text;" json:"eventData"`
	Timestamp time.Time `gorm:"column:timestamp;type:timestamp;" json:"timestamp"`

	Href             string `gorm:"column:href;type:varchar(1000);" json:"href"`
	Origin           string `gorm:"column:origin;type:varchar(255);" json:"origin"`
	Search           string `gorm:"column:search;type:varchar(1000);" json:"search"`
	Hostname         string `gorm:"column:hostname;type:varchar(255);" json:"hostname"`
	Pathname         string `gorm:"column:pathname;type:varchar(255);" json:"pathname"`
	Referrer         string `gorm:"column:referrer;type:varchar(2000);" json:"referrer"`
	UserAgent        string `gorm:"column:user_agent;type:text;" json:"userAgent"`
	Language         string `gorm:"column:language;type:varchar(255);" json:"language"`
	CookiesEnabled   bool   `gorm:"column:cookies_enabled;type:boolean;" json:"cookiesEnabled"`
	ScreenResolution string `gorm:"column:screen_resolution;type:varchar(255);" json:"screenResolution"`

	CreatedAt time.Time `gorm:"default:CURRENT_TIMESTAMP"`
}

func (WebTrackerEvents) Referer

func (e WebTrackerEvents) Referer() string

func (WebTrackerEvents) TableName

func (WebTrackerEvents) TableName() string

func (WebTrackerEvents) VisitorEmail

func (e WebTrackerEvents) VisitorEmail() (string, error)

type Webhooks

type Webhooks struct {
	ID            uint64     `gorm:"primaryKey;autoIncrement" json:"id"`
	Tenant        string     `gorm:"column:tenant;type:varchar(255);not null;index" json:"tenant" binding:"required"`
	CreatedAt     time.Time  `gorm:"column:created_at;autoCreateTime" json:"createdAt"`
	UpdatedAt     *time.Time `gorm:"column:updated_at;autoUpdateTime" json:"updatedAt"`
	WebhookPath   string     `gorm:"column:webhook_path;type:varchar(255);not null" json:"webhookPath" binding:"required"`
	Integration   string     `gorm:"column:integration;type:varchar(255);index" json:"integration"`
	RotationCount int        `gorm:"column:rotation_count;type:integer" json:"rotationCount"`
	Secret        string     `gorm:"column:secret;type:varchar(255);not null" json:"secret" binding:"required"`
	Enabled       bool       `gorm:"column:enabled;type:boolean;default:true" json:"enabled"`
}

func (*Webhooks) IsActive

func (fw *Webhooks) IsActive() bool

func (Webhooks) TableName

func (Webhooks) TableName() string

func (Webhooks) UniqueIndex

func (Webhooks) UniqueIndex() [][]string

func (*Webhooks) Validate

func (fw *Webhooks) Validate() error

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL