Documentation
¶
Overview ¶
Package models/models.go
Index ¶
- type APIKey
- type ActivityLog
- type AuditLog
- type Base
- type Domain
- type Feature
- type JSONMap
- type NotificationPreference
- type Organization
- type OrganizationSettings
- type PaymentTransaction
- type Permission
- type Report
- type Role
- type Seat
- type SeatStatus
- type Subscription
- type SubscriptionPlan
- type SubscriptionStatus
- type User
- type Workflow
- type WorkflowStep
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type APIKey ¶
type APIKey struct {
Base
UserID uint `json:"user_id"`
OrganizationID uint `json:"organization_id"`
Key string `gorm:"unique" json:"key"`
Name string `json:"name"`
Permissions []string `json:"permissions" gorm:"type:jsonb"`
ExpiresAt time.Time `json:"expires_at"`
LastUsedAt time.Time `json:"last_used_at"`
}
APIKey represents an API key for authentication
type ActivityLog ¶
type ActivityLog struct {
Base
UserID uint `json:"user_id"`
OrganizationID uint `json:"organization_id"`
ActivityType string `json:"activity_type"`
Timestamp time.Time `json:"timestamp"`
Metadata JSONMap `json:"metadata" gorm:"type:jsonb"`
}
ActivityLog represents user activity log
type AuditLog ¶
type AuditLog struct {
Base
UserID uint `json:"user_id"`
Action string `json:"action"`
ResourceType string `json:"resource_type"`
ResourceID uint `json:"resource_id"`
Timestamp time.Time `json:"timestamp"`
Changes JSONMap `json:"changes" gorm:"type:jsonb"`
Organization Organization `gorm:"foreignKey:OrganizationID" json:"organization"`
}
AuditLog represents an audit log entry
type Base ¶
type Base struct {
ID uint `gorm:"primaryKey" json:"id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt gorm.DeletedAt `gorm:"index" json:"deleted_at"`
}
Base contains common fields for all models
type Domain ¶
type Domain struct {
Base
OrganizationID uint `json:"organization_id"`
Domain string `gorm:"unique" json:"domain"`
Verified bool `json:"verified"`
}
Domain represents a custom domain for an organization
type JSONMap ¶
type JSONMap map[string]interface{}
JSONMap is a type for storing JSON data in the database
type NotificationPreference ¶
type NotificationPreference struct {
Base
UserID uint `json:"user_id"`
EmailEnabled bool `json:"email_enabled"`
SMSEnabled bool `json:"sms_enabled"`
InAppEnabled bool `json:"in_app_enabled"`
BillingEmails bool `json:"billing_emails"`
ProductEmails bool `json:"product_emails"`
MarketingEmails bool `json:"marketing_emails"`
}
NotificationPreference represents user notification preferences
type Organization ¶
type Organization struct {
Base
Name string `json:"name"`
Users []User `gorm:"many2many:user_organizations;" json:"users"`
Subscriptions []Subscription `json:"subscriptions"`
SubscriptionPlan SubscriptionPlan `json:"subscription_plan"`
Seats []Seat `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;" json:"seats"`
Domains []Domain `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;" json:"domains"`
Settings OrganizationSettings `gorm:"embedded" json:"settings"`
AuditLogs []AuditLog `json:"audit_logs"`
ActivityLogs []ActivityLog `json:"activity_logs"`
APIKeys []APIKey `json:"api_keys"`
Workflows []Workflow `json:"workflows"`
}
Organization represents a company or group
type OrganizationSettings ¶
type OrganizationSettings struct {
LogoURL string `json:"logo_url"`
ThemeColor string `json:"theme_color"`
}
OrganizationSettings represents the settings for an organization
type PaymentTransaction ¶
type PaymentTransaction struct {
Base
SubscriptionID uint `json:"subscription_id"`
Amount float64 `json:"amount"`
Currency string `json:"currency"`
Status string `json:"status"`
Gateway string `json:"gateway"`
GatewayID string `json:"gateway_id"`
Timestamp time.Time `json:"timestamp"`
}
PaymentTransaction represents a payment transaction
type Permission ¶
Permission represents a specific action or resource access
type Report ¶
type Report struct {
Base
Name string `json:"name"`
Description string `json:"description"`
Query string `json:"query"`
OrganizationID uint `json:"organization_id"`
CreatorID uint `json:"creator_id"`
Schedule string `json:"schedule"`
Recipients []string `json:"recipients" gorm:"type:jsonb"`
LastRunAt time.Time `json:"last_run_at"`
}
Report represents a report definition
type Role ¶
type Role struct {
Base
Name string `json:"name"`
Permissions []Permission `gorm:"many2many:role_permissions;" json:"permissions"`
}
Role defines the access level and permissions for a user
type Seat ¶
type Seat struct {
Base
OrganizationID uint `json:"organization_id"`
UserID uint `json:"user_id"`
Roles []Role `gorm:"many2many:seat_roles;" json:"roles"`
Status SeatStatus `json:"status"`
}
Seat represents a user seat within an organization
type SeatStatus ¶
type SeatStatus string
SeatStatus represents the status of a seat
const ( UserRole = "user" AdminRole = "admin" SeatStatusActive SeatStatus = "active" SeatStatusInactive SeatStatus = "inactive" SeatStatusInvited SeatStatus = "invited" )
type Subscription ¶
type Subscription struct {
Base
OrganizationID uint `json:"organization_id"`
SubscriptionPlan SubscriptionPlan `json:"subscription_plan"`
Status SubscriptionStatus `json:"status"`
StartDate time.Time `json:"start_date"`
EndDate time.Time `json:"end_date"`
Transactions []PaymentTransaction `json:"transactions"`
PaymentMethod string `json:"payment_method"`
LastPaymentDate time.Time `json:"last_payment_date"`
NextBillingDate time.Time `json:"next_billing_date"`
}
Subscription represents a subscription for an organization
func (*Subscription) BeforeCreate ¶
func (s *Subscription) BeforeCreate(tx *gorm.DB) error
BeforeCreate is a GORM hook that runs before creating a new subscription
type SubscriptionPlan ¶
type SubscriptionPlan struct {
Base
Name string `json:"name"`
Description string `json:"description"`
Price float64 `json:"price"`
Currency string `json:"currency"`
Interval string `json:"interval"`
Features []Feature `gorm:"many2many:subscription_plan_features;" json:"features"`
}
SubscriptionPlan represents a subscription plan with pricing and features
type SubscriptionStatus ¶
type SubscriptionStatus string
SubscriptionStatus represents the status of a subscription
const ( SubscriptionStatusActive SubscriptionStatus = "active" SubscriptionStatusInactive SubscriptionStatus = "inactive" SubscriptionStatusTrialing SubscriptionStatus = "trialing" SubscriptionStatusCanceled SubscriptionStatus = "canceled" )
type User ¶
type User struct {
Base
Email string `gorm:"unique" json:"email"`
Password string `json:"-"`
PasswordHash string `json:"-"`
Name string `json:"name"`
Roles []Role `gorm:"many2many:user_roles;" json:"roles"`
Organizations []Organization `gorm:"many2many:user_organizations;" json:"organizations"`
Seats []Seat `json:"seats"`
Permissions []Permission `gorm:"many2many:user_permissions;" json:"permissions"`
VerificationCode string `json:"-"`
Verified bool `json:"verified"`
ActivityLogs []ActivityLog `json:"activity_logs"`
NotificationPrefs NotificationPreference `gorm:"foreignKey:UserID" json:"notification_prefs"`
Locale string `json:"locale"`
Timezone string `json:"timezone"`
Language string `json:"language"`
}
User represents a user in the system
func (*User) BeforeCreate ¶
BeforeCreate is a GORM hook that runs before creating a new user
type Workflow ¶
type Workflow struct {
Base
Name string `json:"name"`
Description string `json:"description"`
Steps []WorkflowStep `json:"steps" gorm:"type:jsonb"`
OrganizationID uint `json:"organization_id"`
CreatorID uint `json:"creator_id"`
Enabled bool `json:"enabled"`
}
Workflow represents a workflow process