diff --git a/README.md b/README.md index e603c5a..5bd9ca8 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,7 @@ graph TD You will need: * **Docker & Docker Compose** (Required for Database) - * **Go 1.23+** (Required for Backend) + * **Go 1.25+** (Required for Backend) * **Node.js 20+ & pnpm** (Required for Frontend) * **Make** (Required for running commands) diff --git a/go-b2b-starter/Dockerfile b/go-b2b-starter/Dockerfile index c7ab810..4cc4309 100644 --- a/go-b2b-starter/Dockerfile +++ b/go-b2b-starter/Dockerfile @@ -1,5 +1,5 @@ # Builder stage -FROM golang:1.23.7-alpine3.20 AS builder +FROM golang:1.25-alpine3.20 AS builder WORKDIR /app diff --git a/go-b2b-starter/src/api/example_documents/handler.go b/go-b2b-starter/src/api/example_documents/handler.go index 155aab0..f7f4878 100644 --- a/go-b2b-starter/src/api/example_documents/handler.go +++ b/go-b2b-starter/src/api/example_documents/handler.go @@ -129,7 +129,6 @@ func (h *Handler) ListDocuments(c *gin.Context) { c.JSON(http.StatusOK, response) } -// DeleteDocument deletes a document // @Summary Delete document // @Description Deletes a document and its associated file // @Tags Documents diff --git a/go-b2b-starter/src/api/organizations/account_handler.go b/go-b2b-starter/src/api/organizations/account_handler.go index d93e385..c4f62cc 100644 --- a/go-b2b-starter/src/api/organizations/account_handler.go +++ b/go-b2b-starter/src/api/organizations/account_handler.go @@ -180,7 +180,6 @@ func (h *AccountHandler) UpdateAccount(c *gin.Context) { response.Success(c, http.StatusOK, account) } -// DeleteAccount deletes an account func (h *AccountHandler) DeleteAccount(c *gin.Context) { reqCtx := auth.GetRequestContext(c) if reqCtx == nil { @@ -244,7 +243,6 @@ func (h *AccountHandler) UpdateAccountLastLogin(c *gin.Context) { response.Success(c, http.StatusOK, account) } -// CheckAccountPermission checks account permissions func (h *AccountHandler) CheckAccountPermission(c *gin.Context) { reqCtx := auth.GetRequestContext(c) if reqCtx == nil { diff --git a/go-b2b-starter/src/api/organizations/member_handler.go b/go-b2b-starter/src/api/organizations/member_handler.go index 2118867..dd759fe 100644 --- a/go-b2b-starter/src/api/organizations/member_handler.go +++ b/go-b2b-starter/src/api/organizations/member_handler.go @@ -218,7 +218,6 @@ func (h *MemberHandler) GetProfile(c *gin.Context) { response.Success(c, http.StatusOK, profile) } -// DeleteMember deletes an organization member. // @Summary Delete organization member // @Description Removes a member from the organization (deletes from both Stytch and internal database). Only admins can delete members. // @Tags auth @@ -287,7 +286,6 @@ func (h *MemberHandler) DeleteMember(c *gin.Context) { response.Success(c, http.StatusNoContent, nil) } -// CheckEmail checks if an email exists in the system // @Summary Check if email exists // @Description Checks if an email exists in any organization. Returns 200 OK (empty response) if exists, 404 Not Found if doesn't exist. This is a public endpoint used during login flow. // @Tags auth diff --git a/go-b2b-starter/src/api/organizations/provider.go b/go-b2b-starter/src/api/organizations/provider.go index ab52e6d..2d2e5cb 100644 --- a/go-b2b-starter/src/api/organizations/provider.go +++ b/go-b2b-starter/src/api/organizations/provider.go @@ -12,7 +12,6 @@ type Provider struct { container *dig.Container } -// NewProvider creates a new organization API provider func NewProvider(container *dig.Container) *Provider { return &Provider{ container: container, diff --git a/go-b2b-starter/src/api/provider.go b/go-b2b-starter/src/api/provider.go index ca4df89..8b7e8c8 100644 --- a/go-b2b-starter/src/api/provider.go +++ b/go-b2b-starter/src/api/provider.go @@ -24,7 +24,6 @@ type moduleRoutes struct { CognitiveRoutes *cognitiveAPI.Routes } -// Init initializes the API by setting up dependencies and registering routes // 1. Sets up all module dependencies // 2. Registers API routes and handlers // 3. Registers tools routes and handlers diff --git a/go-b2b-starter/src/api/rbac/handler.go b/go-b2b-starter/src/api/rbac/handler.go index 95f00f6..ad7d50c 100644 --- a/go-b2b-starter/src/api/rbac/handler.go +++ b/go-b2b-starter/src/api/rbac/handler.go @@ -15,7 +15,6 @@ type Handler struct { service auth.RBACService } -// NewHandler creates a new RBAC handler func NewHandler(service auth.RBACService) *Handler { return &Handler{ service: service, diff --git a/go-b2b-starter/src/api/rbac/provider.go b/go-b2b-starter/src/api/rbac/provider.go index 28f94c7..a6f9714 100644 --- a/go-b2b-starter/src/api/rbac/provider.go +++ b/go-b2b-starter/src/api/rbac/provider.go @@ -12,7 +12,6 @@ type Provider struct { container *dig.Container } -// NewProvider creates a new RBAC provider func NewProvider(container *dig.Container) *Provider { return &Provider{ container: container, diff --git a/go-b2b-starter/src/api/rbac/routes.go b/go-b2b-starter/src/api/rbac/routes.go index 0e62df7..d9703d3 100644 --- a/go-b2b-starter/src/api/rbac/routes.go +++ b/go-b2b-starter/src/api/rbac/routes.go @@ -11,7 +11,6 @@ type Routes struct { handler *Handler } -// NewRoutes creates a new Routes instance func NewRoutes(handler *Handler) *Routes { return &Routes{ handler: handler, diff --git a/go-b2b-starter/src/app/billing/app/services/module.go b/go-b2b-starter/src/app/billing/app/services/module.go index b3f0c63..4777037 100644 --- a/go-b2b-starter/src/app/billing/app/services/module.go +++ b/go-b2b-starter/src/app/billing/app/services/module.go @@ -14,7 +14,6 @@ import ( // Module handles dependency injection for billing services type Module struct{} -// NewModule creates a new services module func NewModule() *Module { return &Module{} } diff --git a/go-b2b-starter/src/app/billing/app/services/subscription_service_dec.go b/go-b2b-starter/src/app/billing/app/services/subscription_service_dec.go index 631b3a4..95aa9ce 100644 --- a/go-b2b-starter/src/app/billing/app/services/subscription_service_dec.go +++ b/go-b2b-starter/src/app/billing/app/services/subscription_service_dec.go @@ -77,7 +77,6 @@ type billingService struct { logger logger.Logger } -// NewBillingService creates a new billing service func NewBillingService( repo domain.SubscriptionRepository, orgAdapter domain.OrganizationAdapter, diff --git a/go-b2b-starter/src/app/billing/cmd/init.go b/go-b2b-starter/src/app/billing/cmd/init.go index 1b8b250..65fcd45 100644 --- a/go-b2b-starter/src/app/billing/cmd/init.go +++ b/go-b2b-starter/src/app/billing/cmd/init.go @@ -4,7 +4,6 @@ import ( "go.uber.org/dig" ) -// Init initializes the billing module. // // The billing module handles subscription lifecycle management with Polar.sh: // - Webhook processing for subscription events diff --git a/go-b2b-starter/src/app/billing/infra/adapters/status_provider.go b/go-b2b-starter/src/app/billing/infra/adapters/status_provider.go index e15841a..09169d2 100644 --- a/go-b2b-starter/src/app/billing/infra/adapters/status_provider.go +++ b/go-b2b-starter/src/app/billing/infra/adapters/status_provider.go @@ -17,7 +17,6 @@ type StatusProviderAdapter struct { service services.BillingService } -// NewStatusProviderAdapter creates a new StatusProviderAdapter. func NewStatusProviderAdapter(service services.BillingService) paywall.SubscriptionStatusProvider { return &StatusProviderAdapter{service: service} } diff --git a/go-b2b-starter/src/app/billing/infra/polar/polar_adapter.go b/go-b2b-starter/src/app/billing/infra/polar/polar_adapter.go index 1eb9d78..a739c17 100644 --- a/go-b2b-starter/src/app/billing/infra/polar/polar_adapter.go +++ b/go-b2b-starter/src/app/billing/infra/polar/polar_adapter.go @@ -17,7 +17,6 @@ type polarAdapter struct { client *polarpkg.Client } -// NewPolarAdapter creates a new Polar API adapter func NewPolarAdapter(client *polarpkg.Client) *polarAdapter { return &polarAdapter{ client: client, diff --git a/go-b2b-starter/src/app/billing/infra/repositories/organization_adapter.go b/go-b2b-starter/src/app/billing/infra/repositories/organization_adapter.go index 454c0d9..858a3eb 100644 --- a/go-b2b-starter/src/app/billing/infra/repositories/organization_adapter.go +++ b/go-b2b-starter/src/app/billing/infra/repositories/organization_adapter.go @@ -13,7 +13,6 @@ type organizationAdapter struct { orgStore adapters.OrganizationStore } -// NewOrganizationAdapter creates a new organization adapter func NewOrganizationAdapter(orgStore adapters.OrganizationStore) domain.OrganizationAdapter { return &organizationAdapter{ orgStore: orgStore, diff --git a/go-b2b-starter/src/app/billing/infra/repositories/subscription_repository.go b/go-b2b-starter/src/app/billing/infra/repositories/subscription_repository.go index e1987f8..4741e73 100644 --- a/go-b2b-starter/src/app/billing/infra/repositories/subscription_repository.go +++ b/go-b2b-starter/src/app/billing/infra/repositories/subscription_repository.go @@ -17,7 +17,6 @@ type subscriptionRepository struct { store adapters.SubscriptionStore } -// NewSubscriptionRepository creates a new subscription repository func NewSubscriptionRepository(store adapters.SubscriptionStore) domain.SubscriptionRepository { return &subscriptionRepository{ store: store, diff --git a/go-b2b-starter/src/app/example_cognitive/app/services/document_listener.go b/go-b2b-starter/src/app/example_cognitive/app/services/document_listener.go index c943f94..3de5a47 100644 --- a/go-b2b-starter/src/app/example_cognitive/app/services/document_listener.go +++ b/go-b2b-starter/src/app/example_cognitive/app/services/document_listener.go @@ -9,7 +9,6 @@ type documentListener struct { embeddingService EmbeddingService } -// NewDocumentListener creates a new document listener func NewDocumentListener( embeddingService EmbeddingService, ) DocumentListener { diff --git a/go-b2b-starter/src/app/example_cognitive/app/services/embedding_service.go b/go-b2b-starter/src/app/example_cognitive/app/services/embedding_service.go index 7c175ca..f997f46 100644 --- a/go-b2b-starter/src/app/example_cognitive/app/services/embedding_service.go +++ b/go-b2b-starter/src/app/example_cognitive/app/services/embedding_service.go @@ -21,7 +21,6 @@ type embeddingService struct { textVectorizer domain.TextVectorizer } -// NewEmbeddingService creates a new embedding service func NewEmbeddingService( embeddingRepo domain.EmbeddingRepository, textVectorizer domain.TextVectorizer, diff --git a/go-b2b-starter/src/app/example_cognitive/app/services/rag_service.go b/go-b2b-starter/src/app/example_cognitive/app/services/rag_service.go index 3b46477..a5d8f97 100644 --- a/go-b2b-starter/src/app/example_cognitive/app/services/rag_service.go +++ b/go-b2b-starter/src/app/example_cognitive/app/services/rag_service.go @@ -26,7 +26,6 @@ type ragService struct { assistantProvider domain.AssistantProvider } -// NewRAGService creates a new RAG service func NewRAGService( chatRepo domain.ChatRepository, embeddingRepo domain.EmbeddingRepository, diff --git a/go-b2b-starter/src/app/example_cognitive/cmd/init.go b/go-b2b-starter/src/app/example_cognitive/cmd/init.go index b44cc89..b39270f 100644 --- a/go-b2b-starter/src/app/example_cognitive/cmd/init.go +++ b/go-b2b-starter/src/app/example_cognitive/cmd/init.go @@ -12,7 +12,6 @@ import ( "github.com/moasq/go-b2b-starter/pkg/eventbus" ) -// Init initializes the cognitive module func Init(container *dig.Container) error { module := cognitive.NewModule(container) if err := module.RegisterDependencies(); err != nil { diff --git a/go-b2b-starter/src/app/example_cognitive/domain/entity.go b/go-b2b-starter/src/app/example_cognitive/domain/entity.go index 1d8f75f..d1f3c13 100644 --- a/go-b2b-starter/src/app/example_cognitive/domain/entity.go +++ b/go-b2b-starter/src/app/example_cognitive/domain/entity.go @@ -42,7 +42,6 @@ type ChatSession struct { UpdatedAt time.Time `json:"updated_at"` } -// GetID returns the chat session's database ID func (s *ChatSession) GetID() int32 { return s.ID } @@ -69,7 +68,6 @@ type ChatMessage struct { CreatedAt time.Time `json:"created_at"` } -// GetID returns the chat message's database ID func (m *ChatMessage) GetID() int32 { return m.ID } @@ -88,12 +86,10 @@ func (m *ChatMessage) Validate() error { return nil } -// IsUserMessage checks if the message is from the user func (m *ChatMessage) IsUserMessage() bool { return m.Role == ChatRoleUser } -// IsAssistantMessage checks if the message is from the assistant func (m *ChatMessage) IsAssistantMessage() bool { return m.Role == ChatRoleAssistant } diff --git a/go-b2b-starter/src/app/example_cognitive/infra/ai/text_vectorizer.go b/go-b2b-starter/src/app/example_cognitive/infra/ai/text_vectorizer.go index 4edb769..7dcc228 100644 --- a/go-b2b-starter/src/app/example_cognitive/infra/ai/text_vectorizer.go +++ b/go-b2b-starter/src/app/example_cognitive/infra/ai/text_vectorizer.go @@ -13,7 +13,6 @@ type openAITextVectorizer struct { llmClient llmdomain.LLMClient } -// NewTextVectorizer creates a new TextVectorizer implementation func NewTextVectorizer(llmClient llmdomain.LLMClient) domain.TextVectorizer { return &openAITextVectorizer{llmClient: llmClient} } diff --git a/go-b2b-starter/src/app/example_cognitive/infra/repositories/chat_repository.go b/go-b2b-starter/src/app/example_cognitive/infra/repositories/chat_repository.go index 06828ea..f743a47 100644 --- a/go-b2b-starter/src/app/example_cognitive/infra/repositories/chat_repository.go +++ b/go-b2b-starter/src/app/example_cognitive/infra/repositories/chat_repository.go @@ -13,7 +13,6 @@ type chatRepository struct { store adapters.ChatStore } -// NewChatRepository creates a new chat repository func NewChatRepository(store adapters.ChatStore) domain.ChatRepository { return &chatRepository{store: store} } diff --git a/go-b2b-starter/src/app/example_cognitive/infra/repositories/embedding_repository.go b/go-b2b-starter/src/app/example_cognitive/infra/repositories/embedding_repository.go index 2e2fec2..4bd625e 100644 --- a/go-b2b-starter/src/app/example_cognitive/infra/repositories/embedding_repository.go +++ b/go-b2b-starter/src/app/example_cognitive/infra/repositories/embedding_repository.go @@ -14,7 +14,6 @@ type embeddingRepository struct { store adapters.EmbeddingStore } -// NewEmbeddingRepository creates a new embedding repository func NewEmbeddingRepository(store adapters.EmbeddingStore) domain.EmbeddingRepository { return &embeddingRepository{store: store} } diff --git a/go-b2b-starter/src/app/example_cognitive/module.go b/go-b2b-starter/src/app/example_cognitive/module.go index 2421895..7a75904 100644 --- a/go-b2b-starter/src/app/example_cognitive/module.go +++ b/go-b2b-starter/src/app/example_cognitive/module.go @@ -16,7 +16,6 @@ type Module struct { container *dig.Container } -// NewModule creates a new cognitive module func NewModule(container *dig.Container) *Module { return &Module{ container: container, diff --git a/go-b2b-starter/src/app/example_documents/app/services/document_service.go b/go-b2b-starter/src/app/example_documents/app/services/document_service.go index f1d5b1f..e06f9cd 100644 --- a/go-b2b-starter/src/app/example_documents/app/services/document_service.go +++ b/go-b2b-starter/src/app/example_documents/app/services/document_service.go @@ -25,7 +25,6 @@ type documentService struct { logger logger.Logger } -// NewDocumentService creates a new document service func NewDocumentService( docRepo domain.DocumentRepository, fileService filedomain.FileService, diff --git a/go-b2b-starter/src/app/example_documents/cmd/init.go b/go-b2b-starter/src/app/example_documents/cmd/init.go index 91bc6de..447ae60 100644 --- a/go-b2b-starter/src/app/example_documents/cmd/init.go +++ b/go-b2b-starter/src/app/example_documents/cmd/init.go @@ -6,7 +6,6 @@ import ( "github.com/moasq/go-b2b-starter/app/example_documents" ) -// Init initializes the documents module func Init(container *dig.Container) error { module := documents.NewModule(container) return module.RegisterDependencies() diff --git a/go-b2b-starter/src/app/example_documents/domain/entity.go b/go-b2b-starter/src/app/example_documents/domain/entity.go index 16de9d1..e7ba7d3 100644 --- a/go-b2b-starter/src/app/example_documents/domain/entity.go +++ b/go-b2b-starter/src/app/example_documents/domain/entity.go @@ -30,7 +30,6 @@ type Document struct { UpdatedAt time.Time `json:"updated_at"` } -// GetID returns the document's database ID func (d *Document) GetID() int32 { return d.ID } @@ -52,17 +51,14 @@ func (d *Document) Validate() error { return nil } -// IsProcessed checks if the document has been processed func (d *Document) IsProcessed() bool { return d.Status == DocumentStatusProcessed } -// IsPending checks if the document is pending processing func (d *Document) IsPending() bool { return d.Status == DocumentStatusPending } -// HasText checks if the document has extracted text func (d *Document) HasText() bool { return d.ExtractedText != "" } diff --git a/go-b2b-starter/src/app/example_documents/domain/events/document_events.go b/go-b2b-starter/src/app/example_documents/domain/events/document_events.go index 95228c4..0a95c5e 100644 --- a/go-b2b-starter/src/app/example_documents/domain/events/document_events.go +++ b/go-b2b-starter/src/app/example_documents/domain/events/document_events.go @@ -23,7 +23,6 @@ type DocumentUploaded struct { ExtractedText string `json:"extracted_text"` } -// NewDocumentUploaded creates a new DocumentUploaded event func NewDocumentUploaded(documentID, organizationID, fileAssetID int32, title, extractedText string) *DocumentUploaded { return &DocumentUploaded{ BaseEvent: eventbus.BaseEvent{ @@ -48,7 +47,6 @@ type DocumentProcessed struct { EmbeddingID int32 `json:"embedding_id"` } -// NewDocumentProcessed creates a new DocumentProcessed event func NewDocumentProcessed(documentID, organizationID, embeddingID int32) *DocumentProcessed { return &DocumentProcessed{ BaseEvent: eventbus.BaseEvent{ @@ -71,7 +69,6 @@ type DocumentFailed struct { Error string `json:"error"` } -// NewDocumentFailed creates a new DocumentFailed event func NewDocumentFailed(documentID, organizationID int32, err string) *DocumentFailed { return &DocumentFailed{ BaseEvent: eventbus.BaseEvent{ diff --git a/go-b2b-starter/src/app/example_documents/infra/repositories/document_repository.go b/go-b2b-starter/src/app/example_documents/infra/repositories/document_repository.go index 2682564..f7a02bb 100644 --- a/go-b2b-starter/src/app/example_documents/infra/repositories/document_repository.go +++ b/go-b2b-starter/src/app/example_documents/infra/repositories/document_repository.go @@ -14,7 +14,6 @@ type documentRepository struct { store adapters.DocumentStore } -// NewDocumentRepository creates a new document repository func NewDocumentRepository(store adapters.DocumentStore) domain.DocumentRepository { return &documentRepository{store: store} } diff --git a/go-b2b-starter/src/app/example_documents/module.go b/go-b2b-starter/src/app/example_documents/module.go index 90a0533..91199e2 100644 --- a/go-b2b-starter/src/app/example_documents/module.go +++ b/go-b2b-starter/src/app/example_documents/module.go @@ -18,7 +18,6 @@ type Module struct { container *dig.Container } -// NewModule creates a new documents module func NewModule(container *dig.Container) *Module { return &Module{ container: container, diff --git a/go-b2b-starter/src/app/organizations/app/services/member_service_impl.go b/go-b2b-starter/src/app/organizations/app/services/member_service_impl.go index 6ad04f6..1747d29 100644 --- a/go-b2b-starter/src/app/organizations/app/services/member_service_impl.go +++ b/go-b2b-starter/src/app/organizations/app/services/member_service_impl.go @@ -44,7 +44,6 @@ type memberService struct { logger loggerDomain.Logger } -// NewMemberService creates a new instance of the member service. func NewMemberService( authOrgRepo domain.AuthOrganizationRepository, authMemberRepo domain.AuthMemberRepository, @@ -531,7 +530,6 @@ func (s *memberService) DeleteOrganizationMember( return nil } -// CheckEmailExists checks if an email exists in the system // Returns true if email is found in any organization, false otherwise func (s *memberService) CheckEmailExists(ctx context.Context, email string) (bool, error) { // Validate email format diff --git a/go-b2b-starter/src/app/organizations/app/services/organization_service.go b/go-b2b-starter/src/app/organizations/app/services/organization_service.go index 36a1360..d9d544d 100644 --- a/go-b2b-starter/src/app/organizations/app/services/organization_service.go +++ b/go-b2b-starter/src/app/organizations/app/services/organization_service.go @@ -12,7 +12,6 @@ type organizationService struct { accountRepo domain.AccountRepository } -// NewOrganizationService creates a new organization service func NewOrganizationService(orgRepo domain.OrganizationRepository, accountRepo domain.AccountRepository) OrganizationService { return &organizationService{ orgRepo: orgRepo, diff --git a/go-b2b-starter/src/app/organizations/cmd/init.go b/go-b2b-starter/src/app/organizations/cmd/init.go index 86117bc..abb2715 100644 --- a/go-b2b-starter/src/app/organizations/cmd/init.go +++ b/go-b2b-starter/src/app/organizations/cmd/init.go @@ -6,7 +6,6 @@ import ( "github.com/moasq/go-b2b-starter/app/organizations" ) -// Init initializes the organizations module func Init(container *dig.Container) error { module := organizations.NewModule(container) return module.RegisterDependencies() diff --git a/go-b2b-starter/src/app/organizations/domain/entity.go b/go-b2b-starter/src/app/organizations/domain/entity.go index 66c6092..19d5436 100644 --- a/go-b2b-starter/src/app/organizations/domain/entity.go +++ b/go-b2b-starter/src/app/organizations/domain/entity.go @@ -39,7 +39,6 @@ type OrganizationContext struct { AccountRole string `json:"account_role"` } -// GetID returns the organization's database ID. // Implements auth.OrganizationEntity interface. func (o *Organization) GetID() int32 { return o.ID @@ -59,7 +58,6 @@ func (o *Organization) Validate() error { return nil } -// GetID returns the account's database ID. // Implements auth.AccountEntity interface. func (a *Account) GetID() int32 { return a.ID diff --git a/go-b2b-starter/src/app/organizations/domain/errors.go b/go-b2b-starter/src/app/organizations/domain/errors.go index 507fe82..bc1e43e 100644 --- a/go-b2b-starter/src/app/organizations/domain/errors.go +++ b/go-b2b-starter/src/app/organizations/domain/errors.go @@ -81,7 +81,6 @@ func (e *OrganizationError) Unwrap() error { return e.Cause } -// NewOrganizationError creates a new organization error func NewOrganizationError(errorType, message string, orgID *int32, cause error) *OrganizationError { return &OrganizationError{ Type: errorType, @@ -108,7 +107,6 @@ func (e *AccountError) Unwrap() error { return e.Cause } -// NewAccountError creates a new account error func NewAccountError(errorType, message string, accountID, orgID *int32, cause error) *AccountError { return &AccountError{ Type: errorType, diff --git a/go-b2b-starter/src/app/organizations/infra/repositories/account_repository.go b/go-b2b-starter/src/app/organizations/infra/repositories/account_repository.go index b90a2ba..c567ddd 100644 --- a/go-b2b-starter/src/app/organizations/infra/repositories/account_repository.go +++ b/go-b2b-starter/src/app/organizations/infra/repositories/account_repository.go @@ -17,7 +17,6 @@ type accountRepository struct { orgStore adapters.OrganizationStore } -// NewAccountRepository creates a new account repository func NewAccountRepository(accountStore adapters.AccountStore, orgStore adapters.OrganizationStore) domain.AccountRepository { return &accountRepository{ accountStore: accountStore, diff --git a/go-b2b-starter/src/app/organizations/infra/repositories/organization_repository.go b/go-b2b-starter/src/app/organizations/infra/repositories/organization_repository.go index 0be4d87..2f1215e 100644 --- a/go-b2b-starter/src/app/organizations/infra/repositories/organization_repository.go +++ b/go-b2b-starter/src/app/organizations/infra/repositories/organization_repository.go @@ -16,7 +16,6 @@ type organizationRepository struct { orgStore adapters.OrganizationStore } -// NewOrganizationRepository creates a new organization repository func NewOrganizationRepository(orgStore adapters.OrganizationStore) domain.OrganizationRepository { return &organizationRepository{ orgStore: orgStore, diff --git a/go-b2b-starter/src/app/organizations/module.go b/go-b2b-starter/src/app/organizations/module.go index d74d799..3e258df 100644 --- a/go-b2b-starter/src/app/organizations/module.go +++ b/go-b2b-starter/src/app/organizations/module.go @@ -16,7 +16,6 @@ type Module struct { container *dig.Container } -// NewModule creates a new organization module func NewModule(container *dig.Container) *Module { return &Module{ container: container, diff --git a/go-b2b-starter/src/main/cmd/root.go b/go-b2b-starter/src/main/cmd/root.go index c29879e..fa2a05e 100644 --- a/go-b2b-starter/src/main/cmd/root.go +++ b/go-b2b-starter/src/main/cmd/root.go @@ -10,7 +10,6 @@ import ( ) func Execute() { - // Load environment variables from app.env file if err := godotenv.Load("app.env"); err != nil { log.Printf("Warning: Error loading app.env file: %v", err) } diff --git a/go-b2b-starter/src/pkg/auth/adapters/stytch/adapter.go b/go-b2b-starter/src/pkg/auth/adapters/stytch/adapter.go index 42bbcd8..769f535 100644 --- a/go-b2b-starter/src/pkg/auth/adapters/stytch/adapter.go +++ b/go-b2b-starter/src/pkg/auth/adapters/stytch/adapter.go @@ -60,8 +60,6 @@ type StytchAuthAdapter struct { // Ensure StytchAuthAdapter implements auth.AuthProvider. var _ auth.AuthProvider = (*StytchAuthAdapter)(nil) -// NewStytchAuthAdapter creates a new Stytch authentication adapter. -// // It initializes the Stytch client, JWKS cache, and RBAC policy service. // Returns an error if configuration or client initialization fails. func NewStytchAuthAdapter( diff --git a/go-b2b-starter/src/pkg/auth/adapters/stytch/config.go b/go-b2b-starter/src/pkg/auth/adapters/stytch/config.go index 0301565..a91c9ac 100644 --- a/go-b2b-starter/src/pkg/auth/adapters/stytch/config.go +++ b/go-b2b-starter/src/pkg/auth/adapters/stytch/config.go @@ -144,7 +144,6 @@ func (c *Config) Validate() error { return nil } -// NewConfigFromExisting creates a new Config from the existing stytch.Config type. // This allows gradual migration from the old config type. func NewConfigFromExisting(projectID, secret, env, baseURL, jwksURL string, sessionDurationMinutes int32, disableVerification bool, apiTimeout time.Duration) *Config { return &Config{ diff --git a/go-b2b-starter/src/pkg/auth/adapters/stytch/jwks_cache.go b/go-b2b-starter/src/pkg/auth/adapters/stytch/jwks_cache.go index cc9f4c7..9b3f41e 100644 --- a/go-b2b-starter/src/pkg/auth/adapters/stytch/jwks_cache.go +++ b/go-b2b-starter/src/pkg/auth/adapters/stytch/jwks_cache.go @@ -53,7 +53,6 @@ type serializedPublicKey struct { E string `json:"e"` // Exponent (base64url encoded) } -// NewJWKSCache creates a new JWKS cache manager. func NewJWKSCache(jwksURL string, redisClient redis.Client, logger logger.Logger) *JWKSCache { return &JWKSCache{ jwksURL: jwksURL, diff --git a/go-b2b-starter/src/pkg/auth/adapters/stytch/jwt_parser.go b/go-b2b-starter/src/pkg/auth/adapters/stytch/jwt_parser.go index 1ae23eb..928d0ba 100644 --- a/go-b2b-starter/src/pkg/auth/adapters/stytch/jwt_parser.go +++ b/go-b2b-starter/src/pkg/auth/adapters/stytch/jwt_parser.go @@ -14,7 +14,6 @@ import ( // before signature verification. type JWTParser struct{} -// NewJWTParser creates a new JWT parser. func NewJWTParser() *JWTParser { return &JWTParser{} } diff --git a/go-b2b-starter/src/pkg/auth/adapters/stytch/mock_adapter.go b/go-b2b-starter/src/pkg/auth/adapters/stytch/mock_adapter.go index 727936e..7f8a6a7 100644 --- a/go-b2b-starter/src/pkg/auth/adapters/stytch/mock_adapter.go +++ b/go-b2b-starter/src/pkg/auth/adapters/stytch/mock_adapter.go @@ -21,7 +21,6 @@ type MockAuthAdapter struct { // Ensure MockAuthAdapter implements auth.AuthProvider. var _ auth.AuthProvider = (*MockAuthAdapter)(nil) -// NewMockAuthAdapter creates a new mock auth adapter for development. func NewMockAuthAdapter(log logger.Logger) *MockAuthAdapter { return &MockAuthAdapter{ logger: log, diff --git a/go-b2b-starter/src/pkg/auth/adapters/stytch/rbac_policy.go b/go-b2b-starter/src/pkg/auth/adapters/stytch/rbac_policy.go index 7cbc21a..9297a1d 100644 --- a/go-b2b-starter/src/pkg/auth/adapters/stytch/rbac_policy.go +++ b/go-b2b-starter/src/pkg/auth/adapters/stytch/rbac_policy.go @@ -31,7 +31,6 @@ type RBACPolicyService struct { logger logger.Logger } -// NewRBACPolicyService creates a new RBAC policy service. func NewRBACPolicyService(client *b2bstytchapi.API, redisClient redis.Client, logger logger.Logger) *RBACPolicyService { return &RBACPolicyService{ client: client, diff --git a/go-b2b-starter/src/pkg/auth/adapters/stytch/token_verifier.go b/go-b2b-starter/src/pkg/auth/adapters/stytch/token_verifier.go index 856c2e1..baddd95 100644 --- a/go-b2b-starter/src/pkg/auth/adapters/stytch/token_verifier.go +++ b/go-b2b-starter/src/pkg/auth/adapters/stytch/token_verifier.go @@ -29,7 +29,6 @@ type TokenVerifier struct { logger logger.Logger } -// NewTokenVerifier creates a new token verifier with two-tier verification. func NewTokenVerifier( client *b2bstytchapi.API, jwksCache *JWKSCache, diff --git a/go-b2b-starter/src/pkg/auth/cmd/init.go b/go-b2b-starter/src/pkg/auth/cmd/init.go index 44d6ef0..d0e9cf9 100644 --- a/go-b2b-starter/src/pkg/auth/cmd/init.go +++ b/go-b2b-starter/src/pkg/auth/cmd/init.go @@ -12,7 +12,6 @@ import ( "go.uber.org/dig" ) -// Init initializes the auth module and registers core dependencies. // // This sets up: // - stytch.Config diff --git a/go-b2b-starter/src/pkg/auth/middleware.go b/go-b2b-starter/src/pkg/auth/middleware.go index 72baf22..06b43df 100644 --- a/go-b2b-starter/src/pkg/auth/middleware.go +++ b/go-b2b-starter/src/pkg/auth/middleware.go @@ -63,8 +63,6 @@ type Middleware struct { config *MiddlewareConfig } -// NewMiddleware creates a new auth middleware instance. -// // Parameters: // - provider: The auth provider for token verification (e.g., Stytch adapter) // - orgResolver: Resolves org by provider ID (optional, required for RequireOrganization) diff --git a/go-b2b-starter/src/pkg/auth/rbac.go b/go-b2b-starter/src/pkg/auth/rbac.go index 747cea9..6d37c38 100644 --- a/go-b2b-starter/src/pkg/auth/rbac.go +++ b/go-b2b-starter/src/pkg/auth/rbac.go @@ -393,7 +393,6 @@ type RBACService interface { // defaultRBACService implements the RBACService interface type defaultRBACService struct{} -// NewRBACService creates a new RBAC service func NewRBACService() RBACService { return &defaultRBACService{} } diff --git a/go-b2b-starter/src/pkg/db/postgres/adapter_impl/cognitive_store.go b/go-b2b-starter/src/pkg/db/postgres/adapter_impl/cognitive_store.go index 4cd0e2b..2d742a0 100644 --- a/go-b2b-starter/src/pkg/db/postgres/adapter_impl/cognitive_store.go +++ b/go-b2b-starter/src/pkg/db/postgres/adapter_impl/cognitive_store.go @@ -12,7 +12,6 @@ type embeddingStore struct { store sqlc.Store } -// NewEmbeddingStore creates a new embedding store func NewEmbeddingStore(store sqlc.Store) adapters.EmbeddingStore { return &embeddingStore{store: store} } @@ -46,7 +45,6 @@ type chatStore struct { store sqlc.Store } -// NewChatStore creates a new chat store func NewChatStore(store sqlc.Store) adapters.ChatStore { return &chatStore{store: store} } diff --git a/go-b2b-starter/src/pkg/db/postgres/adapter_impl/document_store.go b/go-b2b-starter/src/pkg/db/postgres/adapter_impl/document_store.go index 5a4531f..1e72fc2 100644 --- a/go-b2b-starter/src/pkg/db/postgres/adapter_impl/document_store.go +++ b/go-b2b-starter/src/pkg/db/postgres/adapter_impl/document_store.go @@ -12,7 +12,6 @@ type documentStore struct { store sqlc.Store } -// NewDocumentStore creates a new document store func NewDocumentStore(store sqlc.Store) adapters.DocumentStore { return &documentStore{store: store} } diff --git a/go-b2b-starter/src/pkg/db/postgres/adapter_impl/file_asset_store.go b/go-b2b-starter/src/pkg/db/postgres/adapter_impl/file_asset_store.go index fbab225..a777c9d 100644 --- a/go-b2b-starter/src/pkg/db/postgres/adapter_impl/file_asset_store.go +++ b/go-b2b-starter/src/pkg/db/postgres/adapter_impl/file_asset_store.go @@ -13,7 +13,6 @@ type fileAssetStore struct { store sqlc.Store } -// NewFileAssetStore creates a new file asset store wrapper func NewFileAssetStore(store sqlc.Store) adapters.FileAssetStore { return &fileAssetStore{ store: store, diff --git a/go-b2b-starter/src/pkg/db/postgres/adapter_impl/organization_store.go b/go-b2b-starter/src/pkg/db/postgres/adapter_impl/organization_store.go index 3e1a8e8..718b505 100644 --- a/go-b2b-starter/src/pkg/db/postgres/adapter_impl/organization_store.go +++ b/go-b2b-starter/src/pkg/db/postgres/adapter_impl/organization_store.go @@ -13,7 +13,6 @@ type organizationStore struct { store sqlc.Store } -// NewOrganizationStore creates a new organization store func NewOrganizationStore(store sqlc.Store) adapters.OrganizationStore { return &organizationStore{store: store} } @@ -63,7 +62,6 @@ type accountStore struct { store sqlc.Store } -// NewAccountStore creates a new account store func NewAccountStore(store sqlc.Store) adapters.AccountStore { return &accountStore{store: store} } diff --git a/go-b2b-starter/src/pkg/db/postgres/adapter_impl/subscription_store.go b/go-b2b-starter/src/pkg/db/postgres/adapter_impl/subscription_store.go index fcc2dbb..80e7d26 100644 --- a/go-b2b-starter/src/pkg/db/postgres/adapter_impl/subscription_store.go +++ b/go-b2b-starter/src/pkg/db/postgres/adapter_impl/subscription_store.go @@ -12,7 +12,6 @@ type subscriptionStore struct { store sqlc.Store } -// NewSubscriptionStore creates a new subscription store func NewSubscriptionStore(store sqlc.Store) adapters.SubscriptionStore { return &subscriptionStore{store: store} } diff --git a/go-b2b-starter/src/pkg/db/postgres/postgres_manager.go b/go-b2b-starter/src/pkg/db/postgres/postgres_manager.go index 47896ef..f50b8d2 100644 --- a/go-b2b-starter/src/pkg/db/postgres/postgres_manager.go +++ b/go-b2b-starter/src/pkg/db/postgres/postgres_manager.go @@ -23,7 +23,6 @@ type PostgresManager struct { connPool *pgxpool.Pool } -// NewPostgresManager creates a new PostgresManager func NewPostgresManager(config Config, connPool *pgxpool.Pool) *PostgresManager { return &PostgresManager{ config: config, diff --git a/go-b2b-starter/src/pkg/db/postgres/sqlc/gen/store.go b/go-b2b-starter/src/pkg/db/postgres/sqlc/gen/store.go index c252f08..a3126e7 100644 --- a/go-b2b-starter/src/pkg/db/postgres/sqlc/gen/store.go +++ b/go-b2b-starter/src/pkg/db/postgres/sqlc/gen/store.go @@ -19,7 +19,6 @@ type SQLStore struct { *Queries } -// NewStore creates a new store func NewStore(connPool *pgxpool.Pool) Store { return &SQLStore{ connPool: connPool, diff --git a/go-b2b-starter/src/pkg/eventbus/bus.go b/go-b2b-starter/src/pkg/eventbus/bus.go index eb06145..641ce85 100644 --- a/go-b2b-starter/src/pkg/eventbus/bus.go +++ b/go-b2b-starter/src/pkg/eventbus/bus.go @@ -27,7 +27,6 @@ type InMemoryEventBus struct { closed bool } -// NewInMemoryEventBus creates a new in-memory event bus func NewInMemoryEventBus(middleware ...EventMiddleware) EventBus { return &InMemoryEventBus{ subscribers: make(map[string][]EventHandler[Event]), diff --git a/go-b2b-starter/src/pkg/eventbus/cmd/init.go b/go-b2b-starter/src/pkg/eventbus/cmd/init.go index 15d5ad6..ea1a0a1 100644 --- a/go-b2b-starter/src/pkg/eventbus/cmd/init.go +++ b/go-b2b-starter/src/pkg/eventbus/cmd/init.go @@ -2,7 +2,6 @@ package cmd import "go.uber.org/dig" -// Init initializes the event bus dependencies func Init(container *dig.Container) error { if err := ProvideEventBus(container); err != nil { return err diff --git a/go-b2b-starter/src/pkg/file_manager/internal/infra/r2_repository.go b/go-b2b-starter/src/pkg/file_manager/internal/infra/r2_repository.go index 20f2f3f..0715a58 100644 --- a/go-b2b-starter/src/pkg/file_manager/internal/infra/r2_repository.go +++ b/go-b2b-starter/src/pkg/file_manager/internal/infra/r2_repository.go @@ -22,7 +22,6 @@ type r2Repository struct { bucketName string } -// NewR2Repository creates a new Cloudflare R2 repository using AWS SDK v2 func NewR2Repository(cfg *fileconfig.Config) (domain.R2Repository, error) { // Create custom AWS config for R2 r2Cfg, err := config.LoadDefaultConfig(context.Background(), @@ -74,7 +73,6 @@ func (r *r2Repository) ensureBucket(ctx context.Context) error { return nil } -// UploadObject uploads a file to R2 func (r *r2Repository) UploadObject(ctx context.Context, objectKey string, content io.Reader, size int64, contentType string) error { _, err := r.client.PutObject(ctx, &s3.PutObjectInput{ Bucket: aws.String(r.bucketName), @@ -105,7 +103,6 @@ func (r *r2Repository) DownloadObject(ctx context.Context, objectKey string) (io return result.Body, nil } -// DeleteObject deletes a file from R2 func (r *r2Repository) DeleteObject(ctx context.Context, objectKey string) error { _, err := r.client.DeleteObject(ctx, &s3.DeleteObjectInput{ Bucket: aws.String(r.bucketName), diff --git a/go-b2b-starter/src/pkg/llm/infra/openai_client.go b/go-b2b-starter/src/pkg/llm/infra/openai_client.go index 3116103..8624d3d 100644 --- a/go-b2b-starter/src/pkg/llm/infra/openai_client.go +++ b/go-b2b-starter/src/pkg/llm/infra/openai_client.go @@ -52,7 +52,6 @@ type CircuitBreaker struct { resetTimeout time.Duration } -// NewCircuitBreaker creates a new circuit breaker func NewCircuitBreaker(maxFailures int, resetTimeout time.Duration) *CircuitBreaker { return &CircuitBreaker{ maxFailures: maxFailures, diff --git a/go-b2b-starter/src/pkg/paywall/middleware.go b/go-b2b-starter/src/pkg/paywall/middleware.go index ab52eb5..3cf3d4b 100644 --- a/go-b2b-starter/src/pkg/paywall/middleware.go +++ b/go-b2b-starter/src/pkg/paywall/middleware.go @@ -45,8 +45,6 @@ type Middleware struct { config *MiddlewareConfig } -// NewMiddleware creates a new subscription middleware instance. -// // Parameters: // - provider: The subscription status provider (implements SubscriptionStatusProvider) // - config: Middleware configuration (optional, uses defaults if nil) diff --git a/go-b2b-starter/src/pkg/polar/client.go b/go-b2b-starter/src/pkg/polar/client.go index a1ac4a5..02e7ea0 100644 --- a/go-b2b-starter/src/pkg/polar/client.go +++ b/go-b2b-starter/src/pkg/polar/client.go @@ -19,7 +19,6 @@ type Client struct { debug bool } -// NewClient creates a new Polar HTTP client func NewClient(config *Config) (*Client, error) { if err := config.Validate(); err != nil { return nil, fmt.Errorf("invalid configuration: %w", err) diff --git a/go-b2b-starter/src/pkg/polar/cmd/init.go b/go-b2b-starter/src/pkg/polar/cmd/init.go index 25097a9..433e269 100644 --- a/go-b2b-starter/src/pkg/polar/cmd/init.go +++ b/go-b2b-starter/src/pkg/polar/cmd/init.go @@ -7,7 +7,6 @@ import ( "go.uber.org/dig" ) -// Init initializes the Polar package and registers dependencies func Init(container *dig.Container) error { // Provide Polar configuration using viper if err := container.Provide(func() (*polar.Config, error) { diff --git a/go-b2b-starter/src/pkg/server/domain/http_server.go b/go-b2b-starter/src/pkg/server/domain/http_server.go index 2814296..a4071d7 100644 --- a/go-b2b-starter/src/pkg/server/domain/http_server.go +++ b/go-b2b-starter/src/pkg/server/domain/http_server.go @@ -24,7 +24,6 @@ type HTTPServer struct { ipProtection *middleware.IPProtection } -// NewHTTPServer creates a new HTTP server instance func NewHTTPServer( config *config.Config, router *gin.Engine, diff --git a/go-b2b-starter/src/pkg/stytch/rbac_policy.go b/go-b2b-starter/src/pkg/stytch/rbac_policy.go index d72fcc9..48c3dba 100644 --- a/go-b2b-starter/src/pkg/stytch/rbac_policy.go +++ b/go-b2b-starter/src/pkg/stytch/rbac_policy.go @@ -26,7 +26,6 @@ type RBACPolicyService struct { logger logger.Logger } -// NewRBACPolicyService creates a new RBAC policy service func NewRBACPolicyService( client *Client, redisClient redis.Client,