Documentation
¶
Index ¶
- type Migration
- type MigrationRecord
- type Repository
- type SQLiteDB
- func (db *SQLiteDB) AddSubmission(formData map[string]interface{}) (string, error)
- func (db *SQLiteDB) AddSubmissionWithMetadata(submission *models.Submission) error
- func (s *SQLiteDB) AddSubscriber(email string) error
- func (db *SQLiteDB) ApplyMigration(migration Migration) error
- func (s *SQLiteDB) Close() error
- func (db *SQLiteDB) GetAppliedMigrations() ([]MigrationRecord, error)
- func (s *SQLiteDB) GetConnectionStats() map[string]interface{}
- func (db *SQLiteDB) GetMigrationStatus() (map[string]interface{}, error)
- func (s *SQLiteDB) GetRepository() *Repository
- func (db *SQLiteDB) GetSubmission(id string) (*models.Submission, error)
- func (db *SQLiteDB) GetSubmissionByEmail(email string, emailField string) (*models.Submission, error)
- func (db *SQLiteDB) GetSubmissionStats() (map[string]int, error)
- func (db *SQLiteDB) GetSubmissionStatsByFormType() (map[string]map[string]int, error)
- func (s *SQLiteDB) GetSubscriber(email string) (*models.Subscriber, error)
- func (s *SQLiteDB) GetSubscriberStats() (map[string]int, error)
- func (s *SQLiteDB) HealthCheck() error
- func (s *SQLiteDB) Initialize() error
- func (db *SQLiteDB) InitializeMigrationTable() error
- func (db *SQLiteDB) ListSubmissions(status string) ([]*models.Submission, error)
- func (db *SQLiteDB) ListSubmissionsByDateRange(startDate, endDate time.Time) ([]*models.Submission, error)
- func (db *SQLiteDB) ListSubmissionsByFormType(formType string) ([]*models.Submission, error)
- func (s *SQLiteDB) ListSubscribers(status string) ([]*models.Subscriber, error)
- func (db *SQLiteDB) MarkSubmissionProcessed(id string) error
- func (db *SQLiteDB) Migrate() error
- func (db *SQLiteDB) MigrateToVersion(targetVersion int) error
- func (db *SQLiteDB) RemoveSubmission(id string) error
- func (s *SQLiteDB) RemoveSubscriber(email string) error
- func (db *SQLiteDB) RollbackMigration(migration Migration) error
- func (s *SQLiteDB) UpdateStatus(email, status string) error
- func (db *SQLiteDB) UpdateSubmissionStatus(id string, status string) error
- type SQLiteSubmissionRepository
- func (r *SQLiteSubmissionRepository) Count(filters SubmissionFilters) (int, error)
- func (r *SQLiteSubmissionRepository) Create(submission *models.Submission) error
- func (r *SQLiteSubmissionRepository) Delete(id string) error
- func (r *SQLiteSubmissionRepository) GetByDateRange(startDate, endDate time.Time) ([]*models.Submission, error)
- func (r *SQLiteSubmissionRepository) GetByEmail(email string, emailField string) (*models.Submission, error)
- func (r *SQLiteSubmissionRepository) GetByFormType(formType string) ([]*models.Submission, error)
- func (r *SQLiteSubmissionRepository) GetByID(id string) (*models.Submission, error)
- func (r *SQLiteSubmissionRepository) GetByStatus(status string) ([]*models.Submission, error)
- func (r *SQLiteSubmissionRepository) GetFormTypes() ([]string, error)
- func (r *SQLiteSubmissionRepository) GetStats() (map[string]int, error)
- func (r *SQLiteSubmissionRepository) GetStatsByDateRange(startDate, endDate time.Time) (map[string]int, error)
- func (r *SQLiteSubmissionRepository) GetStatsByFormType() (map[string]map[string]int, error)
- func (r *SQLiteSubmissionRepository) HealthCheck() error
- func (r *SQLiteSubmissionRepository) List(filters SubmissionFilters) ([]*models.Submission, error)
- func (r *SQLiteSubmissionRepository) MarkProcessed(id string) error
- func (r *SQLiteSubmissionRepository) Update(submission *models.Submission) error
- func (r *SQLiteSubmissionRepository) UpdateStatus(id string, status string) error
- type SQLiteSubscriberRepository
- func (r *SQLiteSubscriberRepository) Add(email string) error
- func (r *SQLiteSubscriberRepository) GetByEmail(email string) (*models.Subscriber, error)
- func (r *SQLiteSubscriberRepository) GetStats() (map[string]int, error)
- func (r *SQLiteSubscriberRepository) HealthCheck() error
- func (r *SQLiteSubscriberRepository) List(status string) ([]*models.Subscriber, error)
- func (r *SQLiteSubscriberRepository) Remove(email string) error
- func (r *SQLiteSubscriberRepository) UpdateStatus(email, status string) error
- type SubmissionFilters
- type SubmissionRepository
- type SubscriberRepository
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Migration ¶
Migration represents a database migration
func GetMigrations ¶
func GetMigrations() []Migration
GetMigrations returns all available migrations in order
type MigrationRecord ¶
type MigrationRecord struct {
Version int `json:"version"`
AppliedAt time.Time `json:"applied_at"`
}
MigrationRecord represents a migration record in the database
type Repository ¶
type Repository struct {
Submissions SubmissionRepository
Subscribers SubscriberRepository
}
Repository aggregates all repository interfaces
func NewRepository ¶
func NewRepository(db *SQLiteDB) *Repository
NewRepository creates a new repository instance
type SQLiteDB ¶
type SQLiteDB struct {
// contains filtered or unexported fields
}
func NewSQLiteDB ¶
func (*SQLiteDB) AddSubmission ¶
AddSubmission adds a new submission to the database
func (*SQLiteDB) AddSubmissionWithMetadata ¶
func (db *SQLiteDB) AddSubmissionWithMetadata(submission *models.Submission) error
AddSubmissionWithMetadata adds a new submission with additional metadata
func (*SQLiteDB) AddSubscriber ¶
AddSubscriber adds a new email or updates the timestamp if it exists.
func (*SQLiteDB) ApplyMigration ¶
ApplyMigration applies a single migration
func (*SQLiteDB) GetAppliedMigrations ¶
func (db *SQLiteDB) GetAppliedMigrations() ([]MigrationRecord, error)
GetAppliedMigrations returns all applied migrations
func (*SQLiteDB) GetConnectionStats ¶
GetConnectionStats returns database connection statistics
func (*SQLiteDB) GetMigrationStatus ¶
GetMigrationStatus returns the current migration status
func (*SQLiteDB) GetRepository ¶
func (s *SQLiteDB) GetRepository() *Repository
GetRepository returns a repository instance for this database
func (*SQLiteDB) GetSubmission ¶
func (db *SQLiteDB) GetSubmission(id string) (*models.Submission, error)
GetSubmission retrieves a submission by ID
func (*SQLiteDB) GetSubmissionByEmail ¶
func (db *SQLiteDB) GetSubmissionByEmail(email string, emailField string) (*models.Submission, error)
GetSubmissionByEmail retrieves a submission by email field
func (*SQLiteDB) GetSubmissionStats ¶
GetSubmissionStats returns statistics about submissions by status
func (*SQLiteDB) GetSubmissionStatsByFormType ¶
GetSubmissionStatsByFormType returns statistics grouped by form type
func (*SQLiteDB) GetSubscriber ¶
func (s *SQLiteDB) GetSubscriber(email string) (*models.Subscriber, error)
GetSubscriber retrieves a subscriber by email. Returns sql.ErrNoRows if not found.
func (*SQLiteDB) GetSubscriberStats ¶
GetSubscriberStats returns statistics about subscribers by status.
func (*SQLiteDB) HealthCheck ¶
HealthCheck performs a comprehensive health check of the database
func (*SQLiteDB) Initialize ¶
func (*SQLiteDB) InitializeMigrationTable ¶
InitializeMigrationTable creates the migrations table if it doesn't exist
func (*SQLiteDB) ListSubmissions ¶
func (db *SQLiteDB) ListSubmissions(status string) ([]*models.Submission, error)
ListSubmissions retrieves all submissions, optionally filtered by status
func (*SQLiteDB) ListSubmissionsByDateRange ¶
func (db *SQLiteDB) ListSubmissionsByDateRange(startDate, endDate time.Time) ([]*models.Submission, error)
ListSubmissionsByDateRange retrieves submissions within a date range
func (*SQLiteDB) ListSubmissionsByFormType ¶
func (db *SQLiteDB) ListSubmissionsByFormType(formType string) ([]*models.Submission, error)
ListSubmissionsByFormType retrieves submissions filtered by form type
func (*SQLiteDB) ListSubscribers ¶
func (s *SQLiteDB) ListSubscribers(status string) ([]*models.Subscriber, error)
ListSubscribers retrieves all subscribers, optionally filtered by status. If status is empty, returns all subscribers.
func (*SQLiteDB) MarkSubmissionProcessed ¶
MarkSubmissionProcessed marks a submission as processed
func (*SQLiteDB) MigrateToVersion ¶
MigrateToVersion migrates to a specific version (up or down)
func (*SQLiteDB) RemoveSubmission ¶
RemoveSubmission removes a submission by ID
func (*SQLiteDB) RemoveSubscriber ¶
RemoveSubscriber removes a subscriber by email.
func (*SQLiteDB) RollbackMigration ¶
RollbackMigration rolls back a single migration
func (*SQLiteDB) UpdateStatus ¶
UpdateStatus updates the status of a subscriber by email.
type SQLiteSubmissionRepository ¶
type SQLiteSubmissionRepository struct {
// contains filtered or unexported fields
}
SQLiteSubmissionRepository implements SubmissionRepository for SQLite
func (*SQLiteSubmissionRepository) Count ¶
func (r *SQLiteSubmissionRepository) Count(filters SubmissionFilters) (int, error)
Count returns the number of submissions matching the filters
func (*SQLiteSubmissionRepository) Create ¶
func (r *SQLiteSubmissionRepository) Create(submission *models.Submission) error
Create adds a new submission to the database
func (*SQLiteSubmissionRepository) Delete ¶
func (r *SQLiteSubmissionRepository) Delete(id string) error
Delete removes a submission by ID
func (*SQLiteSubmissionRepository) GetByDateRange ¶
func (r *SQLiteSubmissionRepository) GetByDateRange(startDate, endDate time.Time) ([]*models.Submission, error)
GetByDateRange retrieves submissions within a date range
func (*SQLiteSubmissionRepository) GetByEmail ¶
func (r *SQLiteSubmissionRepository) GetByEmail(email string, emailField string) (*models.Submission, error)
GetByEmail retrieves a submission by email field
func (*SQLiteSubmissionRepository) GetByFormType ¶
func (r *SQLiteSubmissionRepository) GetByFormType(formType string) ([]*models.Submission, error)
GetByFormType retrieves submissions by form type
func (*SQLiteSubmissionRepository) GetByID ¶
func (r *SQLiteSubmissionRepository) GetByID(id string) (*models.Submission, error)
GetByID retrieves a submission by ID
func (*SQLiteSubmissionRepository) GetByStatus ¶
func (r *SQLiteSubmissionRepository) GetByStatus(status string) ([]*models.Submission, error)
GetByStatus retrieves submissions by status
func (*SQLiteSubmissionRepository) GetFormTypes ¶
func (r *SQLiteSubmissionRepository) GetFormTypes() ([]string, error)
GetFormTypes returns all unique form types
func (*SQLiteSubmissionRepository) GetStats ¶
func (r *SQLiteSubmissionRepository) GetStats() (map[string]int, error)
GetStats returns statistics about submissions by status
func (*SQLiteSubmissionRepository) GetStatsByDateRange ¶
func (r *SQLiteSubmissionRepository) GetStatsByDateRange(startDate, endDate time.Time) (map[string]int, error)
GetStatsByDateRange returns statistics for a date range
func (*SQLiteSubmissionRepository) GetStatsByFormType ¶
func (r *SQLiteSubmissionRepository) GetStatsByFormType() (map[string]map[string]int, error)
GetStatsByFormType returns statistics grouped by form type
func (*SQLiteSubmissionRepository) HealthCheck ¶
func (r *SQLiteSubmissionRepository) HealthCheck() error
HealthCheck verifies the database connection is working
func (*SQLiteSubmissionRepository) List ¶
func (r *SQLiteSubmissionRepository) List(filters SubmissionFilters) ([]*models.Submission, error)
List retrieves submissions with optional filters
func (*SQLiteSubmissionRepository) MarkProcessed ¶
func (r *SQLiteSubmissionRepository) MarkProcessed(id string) error
MarkProcessed marks a submission as processed
func (*SQLiteSubmissionRepository) Update ¶
func (r *SQLiteSubmissionRepository) Update(submission *models.Submission) error
Update updates an existing submission
func (*SQLiteSubmissionRepository) UpdateStatus ¶
func (r *SQLiteSubmissionRepository) UpdateStatus(id string, status string) error
UpdateStatus updates the status of a submission
type SQLiteSubscriberRepository ¶
type SQLiteSubscriberRepository struct {
// contains filtered or unexported fields
}
SQLiteSubscriberRepository implements SubscriberRepository for SQLite
func (*SQLiteSubscriberRepository) Add ¶
func (r *SQLiteSubscriberRepository) Add(email string) error
Add adds a new subscriber or updates the timestamp if it exists
func (*SQLiteSubscriberRepository) GetByEmail ¶
func (r *SQLiteSubscriberRepository) GetByEmail(email string) (*models.Subscriber, error)
GetByEmail retrieves a subscriber by email
func (*SQLiteSubscriberRepository) GetStats ¶
func (r *SQLiteSubscriberRepository) GetStats() (map[string]int, error)
GetStats returns statistics about subscribers by status
func (*SQLiteSubscriberRepository) HealthCheck ¶
func (r *SQLiteSubscriberRepository) HealthCheck() error
HealthCheck verifies the database connection is working
func (*SQLiteSubscriberRepository) List ¶
func (r *SQLiteSubscriberRepository) List(status string) ([]*models.Subscriber, error)
List retrieves all subscribers, optionally filtered by status
func (*SQLiteSubscriberRepository) Remove ¶
func (r *SQLiteSubscriberRepository) Remove(email string) error
Remove removes a subscriber by email
func (*SQLiteSubscriberRepository) UpdateStatus ¶
func (r *SQLiteSubscriberRepository) UpdateStatus(email, status string) error
UpdateStatus updates the status of a subscriber by email
type SubmissionFilters ¶
type SubmissionFilters struct {
Status string
FormType string
Source string
IPAddress string
SessionID string
StartDate *time.Time
EndDate *time.Time
Limit int
Offset int
OrderBy string
OrderDir string // "ASC" or "DESC"
}
SubmissionFilters defines filters for querying submissions
type SubmissionRepository ¶
type SubmissionRepository interface {
// Basic CRUD operations
Create(submission *models.Submission) error
GetByID(id string) (*models.Submission, error)
Update(submission *models.Submission) error
Delete(id string) error
// Query operations
List(filters SubmissionFilters) ([]*models.Submission, error)
Count(filters SubmissionFilters) (int, error)
GetByEmail(email string, emailField string) (*models.Submission, error)
// Status operations
UpdateStatus(id string, status string) error
MarkProcessed(id string) error
GetByStatus(status string) ([]*models.Submission, error)
// Form type operations
GetByFormType(formType string) ([]*models.Submission, error)
GetFormTypes() ([]string, error)
// Date range operations
GetByDateRange(startDate, endDate time.Time) ([]*models.Submission, error)
// Statistics
GetStats() (map[string]int, error)
GetStatsByFormType() (map[string]map[string]int, error)
GetStatsByDateRange(startDate, endDate time.Time) (map[string]int, error)
// Health check
HealthCheck() error
}
SubmissionRepository defines the interface for submission data operations
type SubscriberRepository ¶
type SubscriberRepository interface {
// Basic CRUD operations
Add(email string) error
GetByEmail(email string) (*models.Subscriber, error)
UpdateStatus(email, status string) error
Remove(email string) error
// Query operations
List(status string) ([]*models.Subscriber, error)
GetStats() (map[string]int, error)
// Health check
HealthCheck() error
}
SubscriberRepository defines the interface for subscriber data operations (legacy support)