database

package
v0.0.0-...-17c065c Latest Latest
Warning

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

Go to latest
Published: Feb 11, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Migration

type Migration struct {
	Version     int
	Description string
	Up          string
	Down        string
}

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 NewSQLiteDB(dbPath string) (*SQLiteDB, error)

func (*SQLiteDB) AddSubmission

func (db *SQLiteDB) AddSubmission(formData map[string]interface{}) (string, error)

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

func (s *SQLiteDB) AddSubscriber(email string) error

AddSubscriber adds a new email or updates the timestamp if it exists.

func (*SQLiteDB) ApplyMigration

func (db *SQLiteDB) ApplyMigration(migration Migration) error

ApplyMigration applies a single migration

func (*SQLiteDB) Close

func (s *SQLiteDB) Close() error

func (*SQLiteDB) GetAppliedMigrations

func (db *SQLiteDB) GetAppliedMigrations() ([]MigrationRecord, error)

GetAppliedMigrations returns all applied migrations

func (*SQLiteDB) GetConnectionStats

func (s *SQLiteDB) GetConnectionStats() map[string]interface{}

GetConnectionStats returns database connection statistics

func (*SQLiteDB) GetMigrationStatus

func (db *SQLiteDB) GetMigrationStatus() (map[string]interface{}, error)

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

func (db *SQLiteDB) GetSubmissionStats() (map[string]int, error)

GetSubmissionStats returns statistics about submissions by status

func (*SQLiteDB) GetSubmissionStatsByFormType

func (db *SQLiteDB) GetSubmissionStatsByFormType() (map[string]map[string]int, error)

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

func (s *SQLiteDB) GetSubscriberStats() (map[string]int, error)

GetSubscriberStats returns statistics about subscribers by status.

func (*SQLiteDB) HealthCheck

func (s *SQLiteDB) HealthCheck() error

HealthCheck performs a comprehensive health check of the database

func (*SQLiteDB) Initialize

func (s *SQLiteDB) Initialize() error

func (*SQLiteDB) InitializeMigrationTable

func (db *SQLiteDB) InitializeMigrationTable() error

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

func (db *SQLiteDB) MarkSubmissionProcessed(id string) error

MarkSubmissionProcessed marks a submission as processed

func (*SQLiteDB) Migrate

func (db *SQLiteDB) Migrate() error

Migrate runs all pending migrations

func (*SQLiteDB) MigrateToVersion

func (db *SQLiteDB) MigrateToVersion(targetVersion int) error

MigrateToVersion migrates to a specific version (up or down)

func (*SQLiteDB) RemoveSubmission

func (db *SQLiteDB) RemoveSubmission(id string) error

RemoveSubmission removes a submission by ID

func (*SQLiteDB) RemoveSubscriber

func (s *SQLiteDB) RemoveSubscriber(email string) error

RemoveSubscriber removes a subscriber by email.

func (*SQLiteDB) RollbackMigration

func (db *SQLiteDB) RollbackMigration(migration Migration) error

RollbackMigration rolls back a single migration

func (*SQLiteDB) UpdateStatus

func (s *SQLiteDB) UpdateStatus(email, status string) error

UpdateStatus updates the status of a subscriber by email.

func (*SQLiteDB) UpdateSubmissionStatus

func (db *SQLiteDB) UpdateSubmissionStatus(id string, status string) error

UpdateSubmissionStatus updates the status of a submission

type SQLiteSubmissionRepository

type SQLiteSubmissionRepository struct {
	// contains filtered or unexported fields
}

SQLiteSubmissionRepository implements SubmissionRepository for SQLite

func (*SQLiteSubmissionRepository) Count

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

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

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

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)

Jump to

Keyboard shortcuts

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