form

package
v0.1.6 Latest Latest
Warning

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

Go to latest
Published: Jul 28, 2025 License: MIT Imports: 11 Imported by: 0

Documentation

Overview

Package form provides form-related domain services and business logic. It includes form creation, validation, submission handling, and related operations.

Package form provides form submission handling and related domain logic. It includes submission validation, processing, and data management.

Index

Constants

View Source
const (
	// DefaultTimeout is the default timeout for form operations
	DefaultTimeout = 30 * time.Second
)

Variables

View Source
var ErrFormSchemaNotFound = errors.New("form schema not found")

ErrFormSchemaNotFound is returned when a form schema cannot be found

Functions

This section is empty.

Types

type Repository added in v0.1.5

type Repository interface {
	// Form operations
	CreateForm(ctx context.Context, form *model.Form) error
	GetFormByID(ctx context.Context, id string) (*model.Form, error)
	ListForms(ctx context.Context, userID string) ([]*model.Form, error)
	UpdateForm(ctx context.Context, form *model.Form) error
	DeleteForm(ctx context.Context, id string) error
	GetFormsByStatus(ctx context.Context, status string) ([]*model.Form, error)

	// Form submission operations
	CreateSubmission(ctx context.Context, submission *model.FormSubmission) error
	GetSubmissionByID(ctx context.Context, id string) (*model.FormSubmission, error)
	ListSubmissions(ctx context.Context, formID string) ([]*model.FormSubmission, error)
	UpdateSubmission(ctx context.Context, submission *model.FormSubmission) error
	DeleteSubmission(ctx context.Context, id string) error
	GetByFormID(ctx context.Context, formID string) ([]*model.FormSubmission, error)
	GetByFormIDPaginated(
		ctx context.Context,
		formID string,
		params common.PaginationParams,
	) (*common.PaginationResult, error)
	GetByFormAndUser(ctx context.Context, formID, userID string) (*model.FormSubmission, error)
	GetSubmissionsByStatus(ctx context.Context, status model.SubmissionStatus) ([]*model.FormSubmission, error)
}

Repository defines the interface for form data access

type Service

type Service interface {
	CreateForm(ctx context.Context, form *model.Form) error
	UpdateForm(ctx context.Context, form *model.Form) error
	DeleteForm(ctx context.Context, formID string) error
	GetForm(ctx context.Context, formID string) (*model.Form, error)
	ListForms(ctx context.Context, userID string) ([]*model.Form, error)
	SubmitForm(ctx context.Context, submission *model.FormSubmission) error
	GetFormSubmission(ctx context.Context, submissionID string) (*model.FormSubmission, error)
	ListFormSubmissions(ctx context.Context, formID string) ([]*model.FormSubmission, error)
	UpdateFormState(ctx context.Context, formID, state string) error
	TrackFormAnalytics(ctx context.Context, formID, eventType string) error
}

Service defines the interface for form-related business logic

func NewService

func NewService(repository Repository, eventBus events.EventBus, logger logging.Logger) Service

NewService creates a new form service

type SubmissionRepository added in v0.1.5

type SubmissionRepository interface {
	repository.Repository[*model.FormSubmission]
	// GetByFormID retrieves all submissions for a form
	GetByFormID(ctx context.Context, formID string) ([]*model.FormSubmission, error)
	// GetByFormIDPaginated retrieves paginated submissions for a form
	GetByFormIDPaginated(
		ctx context.Context,
		formID string,
		params common.PaginationParams,
	) (*common.PaginationResult, error)
	// GetByFormAndUser retrieves a submission by form ID and user ID
	GetByFormAndUser(
		ctx context.Context,
		formID string,
		userID string,
	) (*model.FormSubmission, error)
	// GetSubmissionsByStatus retrieves submissions by status
	GetSubmissionsByStatus(
		ctx context.Context,
		status model.SubmissionStatus,
		params common.PaginationParams,
	) (*common.PaginationResult, error)
	// CreateSubmission creates a new form submission
	CreateSubmission(ctx context.Context, submission *model.FormSubmission) error
	// UpdateSubmission updates an existing form submission
	UpdateSubmission(ctx context.Context, submission *model.FormSubmission) error
	// DeleteSubmission deletes a form submission
	DeleteSubmission(ctx context.Context, id string) error
}

SubmissionRepository defines the interface for form submission storage

Directories

Path Synopsis
Package event defines domain events and event interfaces for form-related actions.
Package event defines domain events and event interfaces for form-related actions.
Package form provides form-related domain events and event handling functionality for managing form lifecycle and state changes.
Package form provides form-related domain events and event handling functionality for managing form lifecycle and state changes.
Package model contains domain models and error definitions for forms.
Package model contains domain models and error definitions for forms.

Jump to

Keyboard shortcuts

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