diff --git a/database/connection.go b/database/connection.go index 4a9a48ce..4f2c052d 100644 --- a/database/connection.go +++ b/database/connection.go @@ -16,7 +16,7 @@ type Connection struct { env *env.Environment } -func MakeConnection(env *env.Environment) (*Connection, error) { +func NewConnection(env *env.Environment) (*Connection, error) { dbEnv := env.DB driver, err := gorm.Open(postgres.Open(dbEnv.GetDSN()), &gorm.Config{}) diff --git a/database/connection_test.go b/database/connection_test.go index b0bad606..453c5d77 100644 --- a/database/connection_test.go +++ b/database/connection_test.go @@ -69,9 +69,9 @@ func setupPostgresConnection(t *testing.T, models ...interface{}) (*database.Con }, } - conn, err := database.MakeConnection(e) + conn, err := database.NewConnection(e) if err != nil { - t.Fatalf("make connection: %v", err) + t.Fatalf("new connection: %v", err) } if len(models) > 0 { diff --git a/database/repository/categories.go b/database/repository/categories.go index 2a5b1195..11a48f7c 100644 --- a/database/repository/categories.go +++ b/database/repository/categories.go @@ -62,7 +62,7 @@ func (c Categories) GetAll(paginate pagination.Paginate) (*pagination.Pagination } paginate.SetNumItems(numItems) - result := pagination.MakePagination[database.Category](categories, paginate) + result := pagination.NewPagination[database.Category](categories, paginate) return result, nil } diff --git a/database/repository/pagination/pagination.go b/database/repository/pagination/pagination.go index c9600c7b..bdfbc809 100644 --- a/database/repository/pagination/pagination.go +++ b/database/repository/pagination/pagination.go @@ -21,7 +21,7 @@ type Pagination[T any] struct { PreviousPage *int `json:"previous_page,omitempty"` } -func MakePagination[T any](data []T, paginate Paginate) *Pagination[T] { +func NewPagination[T any](data []T, paginate Paginate) *Pagination[T] { pSize := float64(paginate.Limit) if pSize <= 0 { pSize = 10 diff --git a/database/repository/pagination/pagination_func_test.go b/database/repository/pagination/pagination_func_test.go index 0743b899..4f36afdd 100644 --- a/database/repository/pagination/pagination_func_test.go +++ b/database/repository/pagination/pagination_func_test.go @@ -2,7 +2,7 @@ package pagination import "testing" -func TestMakePagination(t *testing.T) { +func TestNewPagination(t *testing.T) { p := Paginate{ Page: 2, Limit: 2, @@ -10,7 +10,7 @@ func TestMakePagination(t *testing.T) { p.SetNumItems(5) - result := MakePagination([]int{1, 2}, p) + result := NewPagination([]int{1, 2}, p) if result.TotalPages != 3 { t.Fatalf("expected 3 pages got %d", result.TotalPages) diff --git a/database/repository/posts.go b/database/repository/posts.go index 117a2390..88f88980 100644 --- a/database/repository/posts.go +++ b/database/repository/posts.go @@ -47,7 +47,7 @@ func (p Posts) GetAll(filters queries.PostFilters, paginate pagination.Paginate) } paginate.SetNumItems(numItems) - result := pagination.MakePagination[database.Post](posts, paginate) + result := pagination.NewPagination[database.Post](posts, paginate) return result, nil } diff --git a/database/repository/queries/posts_filters.go b/database/repository/queries/posts_filters.go index ca9e4f11..2be63e52 100644 --- a/database/repository/queries/posts_filters.go +++ b/database/repository/queries/posts_filters.go @@ -35,7 +35,7 @@ func (f PostFilters) GetTag() string { } func (f PostFilters) sanitiseString(seed string) string { - str := portal.MakeStringable(seed) + str := portal.NewStringable(seed) return strings.TrimSpace(str.ToLower()) } diff --git a/database/repository/repository_test.go b/database/repository/repository_test.go index d01cdc20..9c4ace4b 100644 --- a/database/repository/repository_test.go +++ b/database/repository/repository_test.go @@ -65,10 +65,10 @@ func setupDB(t *testing.T) *database.Connection { }, } - conn, err := database.MakeConnection(e) + conn, err := database.NewConnection(e) if err != nil { - t.Fatalf("make connection: %v", err) + t.Fatalf("new connection: %v", err) } t.Cleanup(func() { conn.Close() }) diff --git a/database/repository/testhelpers_test.go b/database/repository/testhelpers_test.go index 83746e14..361d4c2b 100644 --- a/database/repository/testhelpers_test.go +++ b/database/repository/testhelpers_test.go @@ -63,9 +63,9 @@ func newPostgresConnection(t *testing.T, models ...interface{}) *database.Connec }, } - conn, err := database.MakeConnection(e) + conn, err := database.NewConnection(e) if err != nil { - t.Fatalf("make connection: %v", err) + t.Fatalf("new connection: %v", err) } if len(models) > 0 { diff --git a/database/seeder/importer/cmd/main.go b/database/seeder/importer/cmd/main.go index 953f6d96..b525a8a6 100644 --- a/database/seeder/importer/cmd/main.go +++ b/database/seeder/importer/cmd/main.go @@ -25,7 +25,7 @@ func init() { secrets := kernel.Ignite("./.env", portal.GetDefaultValidator()) environment = secrets - sentryHub = kernel.MakeSentry(environment) + sentryHub = kernel.NewSentry(environment) } func main() { @@ -49,8 +49,8 @@ func run(filePath string, environment *env.Environment, sentryHub *portal.Sentry cli.ClearScreen() - dbConnection := kernel.MakeDbConnection(environment) - logs := kernel.MakeLogs(environment) + dbConnection := kernel.NewDbConnection(environment) + logs := kernel.NewLogs(environment) defer sentry.Flush(2 * time.Second) defer logs.Close() diff --git a/database/seeder/importer/runner.go b/database/seeder/importer/runner.go index e296d195..3ddb2ad6 100644 --- a/database/seeder/importer/runner.go +++ b/database/seeder/importer/runner.go @@ -60,7 +60,7 @@ func SeedFromFile(conn *database.Connection, environment *env.Environment, fileP } func prepareDatabase(ctx context.Context, conn *database.Connection, environment *env.Environment) error { - truncate := database.MakeTruncate(conn, environment) + truncate := database.NewTruncate(conn, environment) if err := truncate.Execute(); err != nil { return fmt.Errorf("importer: truncate database: %w", err) diff --git a/database/seeder/importer/runner_test.go b/database/seeder/importer/runner_test.go index 2bea7aa5..e0d28cec 100644 --- a/database/seeder/importer/runner_test.go +++ b/database/seeder/importer/runner_test.go @@ -711,9 +711,9 @@ func setupPostgresConnection(t *testing.T) (*database.Connection, *env.Environme }, } - conn, err := database.MakeConnection(e) + conn, err := database.NewConnection(e) if err != nil { - t.Fatalf("make connection: %v", err) + t.Fatalf("new connection: %v", err) } cleanup := func() { diff --git a/database/seeder/main.go b/database/seeder/main.go index 76cfab60..78d116d1 100644 --- a/database/seeder/main.go +++ b/database/seeder/main.go @@ -20,14 +20,14 @@ func init() { secrets := kernel.Ignite("./.env", portal.GetDefaultValidator()) environment = secrets - sentryHub = kernel.MakeSentry(environment) + sentryHub = kernel.NewSentry(environment) } func main() { cli.ClearScreen() - dbConnection := kernel.MakeDbConnection(environment) - logs := kernel.MakeLogs(environment) + dbConnection := kernel.NewDbConnection(environment) + logs := kernel.NewLogs(environment) defer sentry.Flush(2 * time.Second) defer logs.Close() @@ -35,7 +35,7 @@ func main() { defer kernel.RecoverWithSentry(sentryHub) // [1] --- Create the Seeder Runner. - seeder := seeds.MakeSeeder(dbConnection, environment) + seeder := seeds.NewSeeder(dbConnection, environment) // [2] --- Truncate the db. if err := seeder.TruncateDB(); err != nil { diff --git a/database/seeder/seeds/categories.go b/database/seeder/seeds/categories.go index d56d265d..32ae4b67 100644 --- a/database/seeder/seeds/categories.go +++ b/database/seeder/seeds/categories.go @@ -12,7 +12,7 @@ type CategoriesSeed struct { db *database.Connection } -func MakeCategoriesSeed(db *database.Connection) *CategoriesSeed { +func NewCategoriesSeed(db *database.Connection) *CategoriesSeed { return &CategoriesSeed{ db: db, } diff --git a/database/seeder/seeds/comments.go b/database/seeder/seeds/comments.go index 24bd03af..4409b5d0 100644 --- a/database/seeder/seeds/comments.go +++ b/database/seeder/seeds/comments.go @@ -10,7 +10,7 @@ type CommentsSeed struct { db *database.Connection } -func MakeCommentsSeed(db *database.Connection) *CommentsSeed { +func NewCommentsSeed(db *database.Connection) *CommentsSeed { return &CommentsSeed{ db: db, } diff --git a/database/seeder/seeds/factory.go b/database/seeder/seeds/factory.go index dcaddc26..3d7937d8 100644 --- a/database/seeder/seeds/factory.go +++ b/database/seeder/seeds/factory.go @@ -14,7 +14,7 @@ type Seeder struct { environment *env.Environment } -func MakeSeeder(dbConnection *database.Connection, environment *env.Environment) *Seeder { +func NewSeeder(dbConnection *database.Connection, environment *env.Environment) *Seeder { return &Seeder{ dbConn: dbConnection, environment: environment, @@ -26,7 +26,7 @@ func (s *Seeder) TruncateDB() error { return fmt.Errorf("cannot truncate db at the seeder level") } - truncate := database.MakeTruncate(s.dbConn, s.environment) + truncate := database.NewTruncate(s.dbConn, s.environment) if err := truncate.Execute(); err != nil { panic(err) @@ -36,7 +36,7 @@ func (s *Seeder) TruncateDB() error { } func (s *Seeder) SeedUsers() (database.User, database.User) { - users := MakeUsersSeed(s.dbConn) + users := NewUsersSeed(s.dbConn) UserA, err := users.Create(database.UsersAttrs{ Username: "gocanto", @@ -62,7 +62,7 @@ func (s *Seeder) SeedUsers() (database.User, database.User) { } func (s *Seeder) SeedPosts(UserA, UserB database.User) []database.Post { - posts := MakePostsSeed(s.dbConn) + posts := NewPostsSeed(s.dbConn) timex := time.Now() PostsA, err := posts.CreatePosts(database.PostsAttrs{ @@ -95,7 +95,7 @@ func (s *Seeder) SeedPosts(UserA, UserB database.User) []database.Post { } func (s *Seeder) SeedCategories() []database.Category { - categories := MakeCategoriesSeed(s.dbConn) + categories := NewCategoriesSeed(s.dbConn) result, err := categories.Create(database.CategoriesAttrs{ Slug: fmt.Sprintf("category-slug-%s", uuid.NewString()), @@ -111,7 +111,7 @@ func (s *Seeder) SeedCategories() []database.Category { } func (s *Seeder) SeedTags() []database.Tag { - seed := MakeTagsSeed(s.dbConn) + seed := NewTagsSeed(s.dbConn) tags, err := seed.Create() @@ -123,7 +123,7 @@ func (s *Seeder) SeedTags() []database.Tag { } func (s *Seeder) SeedComments(posts ...database.Post) { - seed := MakeCommentsSeed(s.dbConn) + seed := NewCommentsSeed(s.dbConn) timex := time.Now() var values []database.CommentsAttrs @@ -144,7 +144,7 @@ func (s *Seeder) SeedComments(posts ...database.Post) { } func (s *Seeder) SeedLikes(posts ...database.Post) { - seed := MakeLikesSeed(s.dbConn) + seed := NewLikesSeed(s.dbConn) var values []database.LikesAttrs for _, post := range posts { @@ -166,7 +166,7 @@ func (s *Seeder) SeedPostsCategories(categories []database.Category, posts []dat return } - seed := MakePostCategoriesSeed(s.dbConn) + seed := NewPostCategoriesSeed(s.dbConn) var post database.Post var category database.Category @@ -192,7 +192,7 @@ func (s *Seeder) SeedPostTags(tags []database.Tag, posts []database.Post) { return } - seed := MakePostTagsSeed(s.dbConn) + seed := NewPostTagsSeed(s.dbConn) var post database.Post var label database.Tag @@ -218,7 +218,7 @@ func (s *Seeder) SeedPostViews(posts []database.Post, users ...database.User) { return } - seed := MakePostViewsSeed(s.dbConn) + seed := NewPostViewsSeed(s.dbConn) var values []database.PostViewsAttr @@ -261,7 +261,7 @@ func (s *Seeder) SeedNewsLetters() error { UnsubscribedAt: ¤tTime, } - seed := MakeNewslettersSeed(s.dbConn) + seed := NewNewslettersSeed(s.dbConn) newsletters = append(newsletters, a, b) if err := seed.Create(newsletters); err != nil { diff --git a/database/seeder/seeds/likes.go b/database/seeder/seeds/likes.go index 0f50c731..7f1519fe 100644 --- a/database/seeder/seeds/likes.go +++ b/database/seeder/seeds/likes.go @@ -11,7 +11,7 @@ type LikesSeed struct { db *database.Connection } -func MakeLikesSeed(db *database.Connection) *LikesSeed { +func NewLikesSeed(db *database.Connection) *LikesSeed { return &LikesSeed{ db: db, } diff --git a/database/seeder/seeds/newsletters.go b/database/seeder/seeds/newsletters.go index a5934f59..67f53ded 100644 --- a/database/seeder/seeds/newsletters.go +++ b/database/seeder/seeds/newsletters.go @@ -10,7 +10,7 @@ type NewslettersSeed struct { db *database.Connection } -func MakeNewslettersSeed(db *database.Connection) *NewslettersSeed { +func NewNewslettersSeed(db *database.Connection) *NewslettersSeed { return &NewslettersSeed{ db: db, } diff --git a/database/seeder/seeds/post_categories.go b/database/seeder/seeds/post_categories.go index b1caeb28..9cdcbe66 100644 --- a/database/seeder/seeds/post_categories.go +++ b/database/seeder/seeds/post_categories.go @@ -10,7 +10,7 @@ type PostCategoriesSeed struct { db *database.Connection } -func MakePostCategoriesSeed(db *database.Connection) *PostCategoriesSeed { +func NewPostCategoriesSeed(db *database.Connection) *PostCategoriesSeed { return &PostCategoriesSeed{ db: db, } diff --git a/database/seeder/seeds/post_tags.go b/database/seeder/seeds/post_tags.go index e336b7c6..217949f5 100644 --- a/database/seeder/seeds/post_tags.go +++ b/database/seeder/seeds/post_tags.go @@ -10,7 +10,7 @@ type PostTagsSeed struct { db *database.Connection } -func MakePostTagsSeed(db *database.Connection) *PostTagsSeed { +func NewPostTagsSeed(db *database.Connection) *PostTagsSeed { return &PostTagsSeed{ db: db, } diff --git a/database/seeder/seeds/post_views.go b/database/seeder/seeds/post_views.go index 4562e3ce..da3a4c5f 100644 --- a/database/seeder/seeds/post_views.go +++ b/database/seeder/seeds/post_views.go @@ -10,7 +10,7 @@ type PostViewsSeed struct { db *database.Connection } -func MakePostViewsSeed(db *database.Connection) *PostViewsSeed { +func NewPostViewsSeed(db *database.Connection) *PostViewsSeed { return &PostViewsSeed{ db: db, } diff --git a/database/seeder/seeds/posts.go b/database/seeder/seeds/posts.go index 5dc897d9..0f767fbb 100644 --- a/database/seeder/seeds/posts.go +++ b/database/seeder/seeds/posts.go @@ -11,7 +11,7 @@ type PostsSeed struct { db *database.Connection } -func MakePostsSeed(db *database.Connection) *PostsSeed { +func NewPostsSeed(db *database.Connection) *PostsSeed { return &PostsSeed{ db: db, } diff --git a/database/seeder/seeds/seeder_test.go b/database/seeder/seeds/seeder_test.go index 2ada2684..7f75b7d7 100644 --- a/database/seeder/seeds/seeder_test.go +++ b/database/seeder/seeds/seeder_test.go @@ -61,10 +61,10 @@ func testConnection(t *testing.T, e *env.Environment) *database.Connection { TimeZone: "UTC", } - conn, err := database.MakeConnection(e) + conn, err := database.NewConnection(e) if err != nil { - t.Fatalf("make connection: %v", err) + t.Fatalf("new connection: %v", err) } t.Cleanup(func() { conn.Close() }) @@ -92,7 +92,7 @@ func setupSeeder(t *testing.T) *Seeder { conn := testConnection(t, e) - return MakeSeeder(conn, e) + return NewSeeder(conn, e) } func TestSeederWorkflow(t *testing.T) { diff --git a/database/seeder/seeds/tags.go b/database/seeder/seeds/tags.go index 8acae213..d0940a69 100644 --- a/database/seeder/seeds/tags.go +++ b/database/seeder/seeds/tags.go @@ -12,7 +12,7 @@ type TagsSeed struct { db *database.Connection } -func MakeTagsSeed(db *database.Connection) *TagsSeed { +func NewTagsSeed(db *database.Connection) *TagsSeed { return &TagsSeed{ db: db, } diff --git a/database/seeder/seeds/users.go b/database/seeder/seeds/users.go index ee626ca5..b03dc950 100644 --- a/database/seeder/seeds/users.go +++ b/database/seeder/seeds/users.go @@ -16,14 +16,14 @@ type UsersSeed struct { db *database.Connection } -func MakeUsersSeed(db *database.Connection) *UsersSeed { +func NewUsersSeed(db *database.Connection) *UsersSeed { return &UsersSeed{ db: db, } } func (s UsersSeed) Create(attrs database.UsersAttrs) (database.User, error) { - pass, err := portal.MakePassword("password") + pass, err := portal.NewPassword("password") if err != nil { return database.User{}, fmt.Errorf("failed to generate seed password: %w", err) } diff --git a/database/truncate.go b/database/truncate.go index 00f9da91..a9c3628e 100644 --- a/database/truncate.go +++ b/database/truncate.go @@ -13,7 +13,7 @@ type Truncate struct { env *env.Environment } -func MakeTruncate(db *Connection, env *env.Environment) *Truncate { +func NewTruncate(db *Connection, env *env.Environment) *Truncate { return &Truncate{ database: db, env: env, diff --git a/database/truncate_test.go b/database/truncate_test.go index d803141c..ea23f73f 100644 --- a/database/truncate_test.go +++ b/database/truncate_test.go @@ -20,7 +20,7 @@ func TestTruncateExecuteSkipsMissingTables(t *testing.T) { existing := allTables(false) expectTruncateCalls(t, mock, existing, nil) - truncate := MakeTruncate(conn, &env.Environment{App: env.AppEnvironment{Type: "local"}}) + truncate := NewTruncate(conn, &env.Environment{App: env.AppEnvironment{Type: "local"}}) if err := truncate.Execute(); err != nil { t.Fatalf("Execute unexpected error: %v", err) } @@ -42,7 +42,7 @@ func TestTruncateExecuteSkipsUndefinedRelationErrors(t *testing.T) { expectTruncateCalls(t, mock, existing, execErrors) - truncate := MakeTruncate(conn, &env.Environment{App: env.AppEnvironment{Type: "local"}}) + truncate := NewTruncate(conn, &env.Environment{App: env.AppEnvironment{Type: "local"}}) if err := truncate.Execute(); err != nil { t.Fatalf("Execute unexpected error: %v", err) } @@ -64,7 +64,7 @@ func TestTruncateExecuteAggregatesErrors(t *testing.T) { expectTruncateCalls(t, mock, existing, execErrors) - truncate := MakeTruncate(conn, &env.Environment{App: env.AppEnvironment{Type: "local"}}) + truncate := NewTruncate(conn, &env.Environment{App: env.AppEnvironment{Type: "local"}}) err := truncate.Execute() if err == nil || !regexp.MustCompile(`truncate table users`).MatchString(err.Error()) { t.Fatalf("expected error about users table, got %v", err) @@ -79,7 +79,7 @@ func TestTruncateExecutePanicsInProduction(t *testing.T) { conn, _, sqlDB := newTruncateMockConnection(t) t.Cleanup(func() { _ = sqlDB.Close() }) - truncate := MakeTruncate(conn, &env.Environment{App: env.AppEnvironment{Type: "production"}}) + truncate := NewTruncate(conn, &env.Environment{App: env.AppEnvironment{Type: "production"}}) defer func() { if r := recover(); r == nil { diff --git a/docs/middleware/token_middleware.md b/docs/middleware/token_middleware.md index 32bd877a..d31fd208 100644 --- a/docs/middleware/token_middleware.md +++ b/docs/middleware/token_middleware.md @@ -65,7 +65,7 @@ Main steps: - Logs warnings for missing headers, invalid format, too many failures, account not found, replay detected, signature mismatch. - Errors are generic to clients (HTTP 401 with neutral messages) to avoid leaking details. -Defaults (from MakeTokenMiddleware): +Defaults (from NewTokenMiddleware): - clockSkew: 10m; disallowFuture: true - nonceTTL: 10m; nonceCache: in-memory TTL - rateLimiter: in-memory with 1m window, 10 failures threshold diff --git a/docs/sentry_analysis.md b/docs/sentry_analysis.md index 1e92b6be..a2f99f44 100644 --- a/docs/sentry_analysis.md +++ b/docs/sentry_analysis.md @@ -5,7 +5,7 @@ The current Sentry implementation in this application is **incomplete and ineffective** for properly reporting anomalies. While the basic infrastructure for Sentry is present, it's not actually being used to capture and report errors. ### What's Present: -1. **Basic Initialization**: Sentry is initialized in `MakeSentry()` with a DSN from environment variables. +1. **Basic Initialization**: Sentry is initialized in `NewSentry()` with a DSN from environment variables. 2. **HTTP Handler Creation**: A Sentry HTTP handler is created but never integrated into the request pipeline. 3. **Flush Call**: There's a `sentry.Flush()` call in main.go to ensure events are sent before shutdown. @@ -24,7 +24,7 @@ To properly implement Sentry for effective anomaly reporting: 2. **Add Recovery Middleware**: Create middleware to recover from panics and report them to Sentry. -3. **Report API Errors to Sentry**: Modify the MakeApiHandler function to report errors to Sentry. +3. **Report API Errors to Sentry**: Modify the NewApiHandler function to report errors to Sentry. 4. **Add Context to Sentry Events**: Enrich Sentry events with user and request information. diff --git a/handler/categories.go b/handler/categories.go index 87f45161..8e636405 100644 --- a/handler/categories.go +++ b/handler/categories.go @@ -17,7 +17,7 @@ type CategoriesHandler struct { Categories *repository.Categories } -func MakeCategoriesHandler(categories *repository.Categories) CategoriesHandler { +func NewCategoriesHandler(categories *repository.Categories) CategoriesHandler { return CategoriesHandler{ Categories: categories, } @@ -25,7 +25,7 @@ func MakeCategoriesHandler(categories *repository.Categories) CategoriesHandler func (h *CategoriesHandler) Index(w http.ResponseWriter, r *http.Request) *endpoint.ApiError { result, err := h.Categories.GetAll( - paginate.MakeFrom(r.URL, 5), + paginate.NewFrom(r.URL, 5), ) if err != nil { diff --git a/handler/categories_test.go b/handler/categories_test.go index 41817913..6e5e898f 100644 --- a/handler/categories_test.go +++ b/handler/categories_test.go @@ -16,7 +16,7 @@ import ( ) func TestCategoriesHandlerIndex_Success(t *testing.T) { - conn, author := handlertests.MakeTestDB(t) + conn, author := handlertests.NewTestDB(t) published := time.Now() @@ -54,7 +54,7 @@ func TestCategoriesHandlerIndex_Success(t *testing.T) { t.Fatalf("create link: %v", err) } - h := MakeCategoriesHandler(&repository.Categories{ + h := NewCategoriesHandler(&repository.Categories{ DB: conn, }) diff --git a/handler/education.go b/handler/education.go index a34f9a6c..2a46e118 100644 --- a/handler/education.go +++ b/handler/education.go @@ -13,7 +13,7 @@ type EducationHandler struct { filePath string } -func MakeEducationHandler(filePath string) EducationHandler { +func NewEducationHandler(filePath string) EducationHandler { return EducationHandler{ filePath: filePath, } @@ -28,7 +28,7 @@ func (h EducationHandler) Handle(w http.ResponseWriter, r *http.Request) *endpoi return endpoint.InternalError("could not read education data") } - resp := endpoint.MakeResponseFrom(data.Version, w, r) + resp := endpoint.NewResponseFrom(data.Version, w, r) if resp.HasCache() { resp.RespondWithNotModified() diff --git a/handler/education_test.go b/handler/education_test.go index 729065fe..c8844d71 100644 --- a/handler/education_test.go +++ b/handler/education_test.go @@ -4,7 +4,7 @@ import "testing" func TestEducationHandler(t *testing.T) { runFileHandlerTest(t, fileHandlerTestCase{ - make: func(f string) fileHandler { return MakeEducationHandler(f) }, + make: func(f string) fileHandler { return NewEducationHandler(f) }, endpoint: "/education", fixture: "../storage/fixture/education.json", assert: assertFirstUUID("a0fde63b-016b-4121-959f-18a950b8bc81"), diff --git a/handler/experience.go b/handler/experience.go index b0a6656b..7c7333de 100644 --- a/handler/experience.go +++ b/handler/experience.go @@ -13,7 +13,7 @@ type ExperienceHandler struct { filePath string } -func MakeExperienceHandler(filePath string) ExperienceHandler { +func NewExperienceHandler(filePath string) ExperienceHandler { return ExperienceHandler{ filePath: filePath, } @@ -28,7 +28,7 @@ func (h ExperienceHandler) Handle(w http.ResponseWriter, r *http.Request) *endpo return endpoint.InternalError("could not read experience data") } - resp := endpoint.MakeResponseFrom(data.Version, w, r) + resp := endpoint.NewResponseFrom(data.Version, w, r) if resp.HasCache() { resp.RespondWithNotModified() diff --git a/handler/experience_test.go b/handler/experience_test.go index 38d0fe86..d4eca0bd 100644 --- a/handler/experience_test.go +++ b/handler/experience_test.go @@ -4,7 +4,7 @@ import "testing" func TestExperienceHandler(t *testing.T) { runFileHandlerTest(t, fileHandlerTestCase{ - make: func(f string) fileHandler { return MakeExperienceHandler(f) }, + make: func(f string) fileHandler { return NewExperienceHandler(f) }, endpoint: "/experience", fixture: "../storage/fixture/experience.json", assert: assertFirstUUID("c17a68bc-8832-4d44-b2ed-f9587cf14cd1"), diff --git a/handler/keep_alive.go b/handler/keep_alive.go index b2439299..e8bb0274 100644 --- a/handler/keep_alive.go +++ b/handler/keep_alive.go @@ -15,7 +15,7 @@ type KeepAliveHandler struct { env *env.PingEnvironment } -func MakeKeepAliveHandler(e *env.PingEnvironment) KeepAliveHandler { +func NewKeepAliveHandler(e *env.PingEnvironment) KeepAliveHandler { return KeepAliveHandler{env: e} } @@ -29,7 +29,7 @@ func (h KeepAliveHandler) Handle(w http.ResponseWriter, r *http.Request) *endpoi ) } - resp := endpoint.MakeNoCacheResponse(w, r) + resp := endpoint.NewNoCacheResponse(w, r) now := time.Now().UTC() data := payload.KeepAliveResponse{ diff --git a/handler/keep_alive_db.go b/handler/keep_alive_db.go index 215364e3..689dee19 100644 --- a/handler/keep_alive_db.go +++ b/handler/keep_alive_db.go @@ -17,7 +17,7 @@ type KeepAliveDBHandler struct { db *database.Connection } -func MakeKeepAliveDBHandler(e *env.PingEnvironment, db *database.Connection) KeepAliveDBHandler { +func NewKeepAliveDBHandler(e *env.PingEnvironment, db *database.Connection) KeepAliveDBHandler { return KeepAliveDBHandler{env: e, db: db} } @@ -35,7 +35,7 @@ func (h KeepAliveDBHandler) Handle(w http.ResponseWriter, r *http.Request) *endp return endpoint.LogInternalError("database ping failed", err) } - resp := endpoint.MakeNoCacheResponse(w, r) + resp := endpoint.NewNoCacheResponse(w, r) now := time.Now().UTC() data := payload.KeepAliveResponse{ diff --git a/handler/keep_alive_db_test.go b/handler/keep_alive_db_test.go index da678956..cba8902d 100644 --- a/handler/keep_alive_db_test.go +++ b/handler/keep_alive_db_test.go @@ -14,9 +14,9 @@ import ( ) func TestKeepAliveDBHandler(t *testing.T) { - db, _ := handlertests.MakeTestDB(t) + db, _ := handlertests.NewTestDB(t) e := env.PingEnvironment{Username: "user", Password: "pass"} - h := MakeKeepAliveDBHandler(&e, db) + h := NewKeepAliveDBHandler(&e, db) t.Run("valid credentials", func(t *testing.T) { req := httptest.NewRequest("GET", "/ping-db", nil) diff --git a/handler/keep_alive_test.go b/handler/keep_alive_test.go index 015921d1..a3e616e6 100644 --- a/handler/keep_alive_test.go +++ b/handler/keep_alive_test.go @@ -14,7 +14,7 @@ import ( func TestKeepAliveHandler(t *testing.T) { e := env.PingEnvironment{Username: "user", Password: "pass"} - h := MakeKeepAliveHandler(&e) + h := NewKeepAliveHandler(&e) t.Run("valid credentials", func(t *testing.T) { req := httptest.NewRequest("GET", "/ping", nil) diff --git a/handler/paginate/paginate.go b/handler/paginate/paginate.go index 5251b9a6..c79c8320 100644 --- a/handler/paginate/paginate.go +++ b/handler/paginate/paginate.go @@ -7,7 +7,7 @@ import ( "strings" ) -func MakeFrom(url *url.URL, pageSize int) pagination.Paginate { +func NewFrom(url *url.URL, pageSize int) pagination.Paginate { page := pagination.MinPage values := url.Query() path := strings.TrimSpace((*url).Path) diff --git a/handler/paginate/paginate_test.go b/handler/paginate/paginate_test.go index 54e635fe..15385cc6 100644 --- a/handler/paginate/paginate_test.go +++ b/handler/paginate/paginate_test.go @@ -7,9 +7,9 @@ import ( "github.com/oullin/database/repository/pagination" ) -func TestMakeFrom(t *testing.T) { +func TestNewFrom(t *testing.T) { u, _ := url.Parse("https://example.com/posts?page=2&limit=50") - p := MakeFrom(u, 5) + p := NewFrom(u, 5) if p.Page != 2 { t.Fatalf("page %d", p.Page) @@ -20,7 +20,7 @@ func TestMakeFrom(t *testing.T) { } u2, _ := url.Parse("/categories?page=-1&limit=50") - p2 := MakeFrom(u2, 5) + p2 := NewFrom(u2, 5) if p2.Page != pagination.MinPage || p2.Limit != pagination.CategoriesMaxLimit { t.Fatalf("unexpected %+v", p2) diff --git a/handler/payload/posts.go b/handler/payload/posts.go index a377e863..265cf3e0 100644 --- a/handler/payload/posts.go +++ b/handler/payload/posts.go @@ -46,7 +46,7 @@ func GetPostsFiltersFrom(request IndexRequestBody) queries.PostFilters { } func GetSlugFrom(r *http.Request) string { - str := portal.MakeStringable(r.PathValue("slug")) + str := portal.NewStringable(r.PathValue("slug")) return strings.TrimSpace(str.ToLower()) } diff --git a/handler/posts.go b/handler/posts.go index cb41e782..75c0aed9 100644 --- a/handler/posts.go +++ b/handler/posts.go @@ -19,7 +19,7 @@ type PostsHandler struct { Posts *repository.Posts } -func MakePostsHandler(repo *repository.Posts) PostsHandler { +func NewPostsHandler(repo *repository.Posts) PostsHandler { return PostsHandler{Posts: repo} } @@ -36,7 +36,7 @@ func (h *PostsHandler) Index(w http.ResponseWriter, r *http.Request) *endpoint.A result, err := h.Posts.GetAll( payload.GetPostsFiltersFrom(requestBody), - paginate.MakeFrom(r.URL, 10), + paginate.NewFrom(r.URL, 10), ) if err != nil { diff --git a/handler/posts_test.go b/handler/posts_test.go index d2156c5c..78eeeb82 100644 --- a/handler/posts_test.go +++ b/handler/posts_test.go @@ -43,7 +43,7 @@ func TestPostsHandlerShow_MissingSlug(t *testing.T) { } func TestPostsHandlerIndex_Success(t *testing.T) { - conn, author := handlertests.MakeTestDB(t) + conn, author := handlertests.NewTestDB(t) published := time.Now() post := database.Post{ UUID: uuid.NewString(), @@ -59,7 +59,7 @@ func TestPostsHandlerIndex_Success(t *testing.T) { t.Fatalf("create post: %v", err) } - h := MakePostsHandler(&repository.Posts{ + h := NewPostsHandler(&repository.Posts{ DB: conn, }) @@ -86,7 +86,7 @@ func TestPostsHandlerIndex_Success(t *testing.T) { } func TestPostsHandlerShow_Success(t *testing.T) { - conn, author := handlertests.MakeTestDB(t) + conn, author := handlertests.NewTestDB(t) published := time.Now() post := database.Post{ UUID: uuid.NewString(), @@ -102,7 +102,7 @@ func TestPostsHandlerShow_Success(t *testing.T) { t.Fatalf("create post: %v", err) } - h := MakePostsHandler(&repository.Posts{ + h := NewPostsHandler(&repository.Posts{ DB: conn, }) diff --git a/handler/profile.go b/handler/profile.go index 3762841a..7ce9d85d 100644 --- a/handler/profile.go +++ b/handler/profile.go @@ -13,7 +13,7 @@ type ProfileHandler struct { filePath string } -func MakeProfileHandler(filePath string) ProfileHandler { +func NewProfileHandler(filePath string) ProfileHandler { return ProfileHandler{ filePath: filePath, } @@ -28,7 +28,7 @@ func (h ProfileHandler) Handle(w http.ResponseWriter, r *http.Request) *endpoint return endpoint.InternalError("could not read profile data") } - resp := endpoint.MakeResponseFrom(data.Version, w, r) + resp := endpoint.NewResponseFrom(data.Version, w, r) if resp.HasCache() { resp.RespondWithNotModified() diff --git a/handler/profile_test.go b/handler/profile_test.go index 31d756de..1f2ae6dd 100644 --- a/handler/profile_test.go +++ b/handler/profile_test.go @@ -4,7 +4,7 @@ import "testing" func TestProfileHandler(t *testing.T) { runFileHandlerTest(t, fileHandlerTestCase{ - make: func(f string) fileHandler { return MakeProfileHandler(f) }, + make: func(f string) fileHandler { return NewProfileHandler(f) }, endpoint: "/profile", fixture: "../storage/fixture/profile.json", assert: assertNickname("gus"), diff --git a/handler/projects.go b/handler/projects.go index 044c9e8e..c5ca1177 100644 --- a/handler/projects.go +++ b/handler/projects.go @@ -13,7 +13,7 @@ type ProjectsHandler struct { filePath string } -func MakeProjectsHandler(filePath string) ProjectsHandler { +func NewProjectsHandler(filePath string) ProjectsHandler { return ProjectsHandler{ filePath: filePath, } @@ -28,7 +28,7 @@ func (h ProjectsHandler) Handle(w http.ResponseWriter, r *http.Request) *endpoin return endpoint.InternalError("could not read projects data") } - resp := endpoint.MakeResponseFrom(data.Version, w, r) + resp := endpoint.NewResponseFrom(data.Version, w, r) if resp.HasCache() { resp.RespondWithNotModified() diff --git a/handler/projects_test.go b/handler/projects_test.go index 8111e3e1..62b0f722 100644 --- a/handler/projects_test.go +++ b/handler/projects_test.go @@ -4,7 +4,7 @@ import "testing" func TestProjectsHandler(t *testing.T) { runFileHandlerTest(t, fileHandlerTestCase{ - make: func(f string) fileHandler { return MakeProjectsHandler(f) }, + make: func(f string) fileHandler { return NewProjectsHandler(f) }, endpoint: "/projects", fixture: "../storage/fixture/projects.json", assert: assertFirstUUID("00a0a12e-6af0-4f5a-b96d-3c95cc7c365c"), diff --git a/handler/recommendations.go b/handler/recommendations.go index d2ca1de1..2c495eaf 100644 --- a/handler/recommendations.go +++ b/handler/recommendations.go @@ -13,7 +13,7 @@ type RecommendationsHandler struct { filePath string } -func MakeRecommendationsHandler(filePath string) RecommendationsHandler { +func NewRecommendationsHandler(filePath string) RecommendationsHandler { return RecommendationsHandler{ filePath: filePath, } @@ -28,7 +28,7 @@ func (h RecommendationsHandler) Handle(w http.ResponseWriter, r *http.Request) * return endpoint.InternalError("could not read recommendations data") } - resp := endpoint.MakeResponseFrom(data.Version, w, r) + resp := endpoint.NewResponseFrom(data.Version, w, r) if resp.HasCache() { resp.RespondWithNotModified() diff --git a/handler/recommendations_test.go b/handler/recommendations_test.go index 390c930b..a067170d 100644 --- a/handler/recommendations_test.go +++ b/handler/recommendations_test.go @@ -4,7 +4,7 @@ import "testing" func TestRecommendationsHandler(t *testing.T) { runFileHandlerTest(t, fileHandlerTestCase{ - make: func(f string) fileHandler { return MakeRecommendationsHandler(f) }, + make: func(f string) fileHandler { return NewRecommendationsHandler(f) }, endpoint: "/recommendations", fixture: "../storage/fixture/recommendations.json", assert: assertFirstUUID("0fa21471-c13a-4c8a-83ba-9b5d8782ab72"), diff --git a/handler/signatures.go b/handler/signatures.go index 73d0ea9e..a5f6a506 100644 --- a/handler/signatures.go +++ b/handler/signatures.go @@ -21,7 +21,7 @@ type SignaturesHandler struct { ApiKeys *repository.ApiKeys } -func MakeSignaturesHandler(validator *portal.Validator, ApiKeys *repository.ApiKeys) SignaturesHandler { +func NewSignaturesHandler(validator *portal.Validator, ApiKeys *repository.ApiKeys) SignaturesHandler { return SignaturesHandler{ Validator: validator, ApiKeys: ApiKeys, @@ -66,7 +66,7 @@ func (s *SignaturesHandler) Generate(w http.ResponseWriter, r *http.Request) *en }, } - resp := endpoint.MakeResponseFrom("0.0.1", w, r) + resp := endpoint.NewResponseFrom("0.0.1", w, r) if err = resp.RespondOk(response); err != nil { slog.Error("Error marshaling JSON for signatures response", "error", err) diff --git a/handler/social.go b/handler/social.go index 0b7b59dc..ea53ce45 100644 --- a/handler/social.go +++ b/handler/social.go @@ -13,7 +13,7 @@ type SocialHandler struct { filePath string } -func MakeSocialHandler(filePath string) SocialHandler { +func NewSocialHandler(filePath string) SocialHandler { return SocialHandler{ filePath: filePath, } @@ -28,7 +28,7 @@ func (h SocialHandler) Handle(w http.ResponseWriter, r *http.Request) *endpoint. return endpoint.InternalError("could not read social data") } - resp := endpoint.MakeResponseFrom(data.Version, w, r) + resp := endpoint.NewResponseFrom(data.Version, w, r) if resp.HasCache() { resp.RespondWithNotModified() diff --git a/handler/social_test.go b/handler/social_test.go index d9e7cb06..f6ee22b8 100644 --- a/handler/social_test.go +++ b/handler/social_test.go @@ -4,7 +4,7 @@ import "testing" func TestSocialHandler(t *testing.T) { runFileHandlerTest(t, fileHandlerTestCase{ - make: func(f string) fileHandler { return MakeSocialHandler(f) }, + make: func(f string) fileHandler { return NewSocialHandler(f) }, endpoint: "/social", fixture: "../storage/fixture/social.json", assert: assertFirstUUID("a8a6d3a0-4a8d-4a1f-8a48-3c3b5b6f3a6e"), diff --git a/handler/talks.go b/handler/talks.go index 3ca45fd1..43643784 100644 --- a/handler/talks.go +++ b/handler/talks.go @@ -13,7 +13,7 @@ type TalksHandler struct { filePath string } -func MakeTalksHandler(filePath string) TalksHandler { +func NewTalksHandler(filePath string) TalksHandler { return TalksHandler{ filePath: filePath, } @@ -28,7 +28,7 @@ func (h TalksHandler) Handle(w http.ResponseWriter, r *http.Request) *endpoint.A return endpoint.InternalError("could not read talks data") } - resp := endpoint.MakeResponseFrom(data.Version, w, r) + resp := endpoint.NewResponseFrom(data.Version, w, r) if resp.HasCache() { resp.RespondWithNotModified() diff --git a/handler/talks_test.go b/handler/talks_test.go index dd4aede2..72613a62 100644 --- a/handler/talks_test.go +++ b/handler/talks_test.go @@ -4,7 +4,7 @@ import "testing" func TestTalksHandler(t *testing.T) { runFileHandlerTest(t, fileHandlerTestCase{ - make: func(f string) fileHandler { return MakeTalksHandler(f) }, + make: func(f string) fileHandler { return NewTalksHandler(f) }, endpoint: "/talks", fixture: "../storage/fixture/talks.json", assert: assertFirstUUID("b222d84c-5bbe-4c21-8ba8-a9baa7e5eaa9"), diff --git a/handler/tests/db.go b/handler/tests/db.go index 1e356825..52e419b0 100644 --- a/handler/tests/db.go +++ b/handler/tests/db.go @@ -13,9 +13,9 @@ import ( "github.com/testcontainers/testcontainers-go/modules/postgres" ) -// MakeTestDB starts a PostgreSQL test container, runs migrations, and seeds a default user. +// NewTestDB starts a PostgreSQL test container, runs migrations, and seeds a default user. // It returns the database connection and the created user. -func MakeTestDB(t *testing.T) (*database.Connection, database.User) { +func NewTestDB(t *testing.T) (*database.Connection, database.User) { t.Helper() if _, err := exec.LookPath("docker"); err != nil { @@ -62,9 +62,9 @@ func MakeTestDB(t *testing.T) (*database.Connection, database.User) { }, } - conn, err := database.MakeConnection(e) + conn, err := database.NewConnection(e) if err != nil { - t.Fatalf("make connection: %v", err) + t.Fatalf("new connection: %v", err) } t.Cleanup(func() { conn.Close() }) diff --git a/main.go b/main.go index ab2fa1a9..9b26ff4d 100644 --- a/main.go +++ b/main.go @@ -18,7 +18,7 @@ var app *kernel.App func init() { validate := portal.GetDefaultValidator() secrets := kernel.Ignite("./.env", validate) - application, err := kernel.MakeApp(secrets, validate) + application, err := kernel.NewApp(secrets, validate) if err != nil { panic(fmt.Sprintf("init: Error creating application: %s", err)) diff --git a/metal/cli/accounts/factory.go b/metal/cli/accounts/factory.go index ee7a9352..6b887f43 100644 --- a/metal/cli/accounts/factory.go +++ b/metal/cli/accounts/factory.go @@ -16,8 +16,8 @@ type Handler struct { TokenHandler *auth.TokenHandler } -func MakeHandler(db *database.Connection, env *env.Environment) (*Handler, error) { - tokenHandler, err := auth.MakeTokensHandler( +func NewHandler(db *database.Connection, env *env.Environment) (*Handler, error) { + tokenHandler, err := auth.NewTokensHandler( []byte(env.App.MasterKey), ) diff --git a/metal/cli/accounts/factory_test.go b/metal/cli/accounts/factory_test.go index c91da457..769324ac 100644 --- a/metal/cli/accounts/factory_test.go +++ b/metal/cli/accounts/factory_test.go @@ -7,12 +7,12 @@ import ( "github.com/oullin/metal/cli/clitest" ) -func TestMakeHandler(t *testing.T) { - conn := clitest.MakeTestConnection(t, &database.APIKey{}) - h, err := MakeHandler(conn, clitest.MakeTestEnv()) +func TestNewHandler(t *testing.T) { + conn := clitest.NewTestConnection(t, &database.APIKey{}) + h, err := NewHandler(conn, clitest.NewTestEnv()) if err != nil { - t.Fatalf("make handler: %v", err) + t.Fatalf("new handler: %v", err) } if h.TokenHandler == nil || h.Tokens == nil { @@ -30,12 +30,12 @@ func TestMakeHandler(t *testing.T) { } } -func TestMakeHandlerInvalidKey(t *testing.T) { - conn := clitest.MakeTestConnection(t) - env := clitest.MakeTestEnv() +func TestNewHandlerInvalidKey(t *testing.T) { + conn := clitest.NewTestConnection(t) + env := clitest.NewTestEnv() env.App.MasterKey = "short" - if _, err := MakeHandler(conn, env); err == nil { + if _, err := NewHandler(conn, env); err == nil { t.Fatalf("expected error") } } diff --git a/metal/cli/accounts/handler_test.go b/metal/cli/accounts/handler_test.go index 9ac813a8..3808d2d2 100644 --- a/metal/cli/accounts/handler_test.go +++ b/metal/cli/accounts/handler_test.go @@ -8,11 +8,11 @@ import ( ) func setupAccountHandler(t *testing.T) *Handler { - conn := clitest.MakeTestConnection(t, &database.APIKey{}) - h, err := MakeHandler(conn, clitest.MakeTestEnv()) + conn := clitest.NewTestConnection(t, &database.APIKey{}) + h, err := NewHandler(conn, clitest.NewTestEnv()) if err != nil { - t.Fatalf("make handler: %v", err) + t.Fatalf("new handler: %v", err) } return h diff --git a/metal/cli/clitest/helpers.go b/metal/cli/clitest/helpers.go index 21c41581..ef90e552 100644 --- a/metal/cli/clitest/helpers.go +++ b/metal/cli/clitest/helpers.go @@ -13,7 +13,7 @@ import ( "github.com/testcontainers/testcontainers-go/modules/postgres" ) -func MakeTestConnection(t *testing.T, models ...interface{}) *database.Connection { +func NewTestConnection(t *testing.T, models ...interface{}) *database.Connection { t.Helper() if _, err := exec.LookPath("docker"); err != nil { @@ -60,9 +60,9 @@ func MakeTestConnection(t *testing.T, models ...interface{}) *database.Connectio }, } - conn, err := database.MakeConnection(e) + conn, err := database.NewConnection(e) if err != nil { - t.Fatalf("make connection: %v", err) + t.Fatalf("new connection: %v", err) } t.Cleanup(func() { conn.Close() }) @@ -75,6 +75,6 @@ func MakeTestConnection(t *testing.T, models ...interface{}) *database.Connectio return conn } -func MakeTestEnv() *env.Environment { +func NewTestEnv() *env.Environment { return &env.Environment{App: env.AppEnvironment{MasterKey: uuid.NewString()[:32]}} } diff --git a/metal/cli/clitest/helpers_test.go b/metal/cli/clitest/helpers_test.go index a149fa99..362128ab 100644 --- a/metal/cli/clitest/helpers_test.go +++ b/metal/cli/clitest/helpers_test.go @@ -5,20 +5,20 @@ import ( "testing" ) -func TestMakeTestEnv(t *testing.T) { - env := MakeTestEnv() +func TestNewTestEnv(t *testing.T) { + env := NewTestEnv() if len(env.App.MasterKey) != 32 { t.Fatalf("expected master key length 32, got %d", len(env.App.MasterKey)) } } -func TestMakeTestConnectionSkipsWithoutDocker(t *testing.T) { +func TestNewTestConnectionSkipsWithoutDocker(t *testing.T) { if _, err := exec.LookPath("docker"); err != nil { t.Skip("docker not available") } t.Run("skip", func(t *testing.T) { - MakeTestConnection(t) + NewTestConnection(t) }) } diff --git a/metal/cli/main.go b/metal/cli/main.go index 873d7ec1..ba9b1635 100644 --- a/metal/cli/main.go +++ b/metal/cli/main.go @@ -24,8 +24,8 @@ func init() { secrets := kernel.Ignite("./.env", portal.GetDefaultValidator()) environment = secrets - dbConn = kernel.MakeDbConnection(environment) - sentryHub = kernel.MakeSentry(environment) + dbConn = kernel.NewDbConnection(environment) + sentryHub = kernel.NewSentry(environment) } func main() { @@ -34,7 +34,7 @@ func main() { defer sentry.Flush(2 * time.Second) defer kernel.RecoverWithSentry(sentryHub) - menu := panel.MakeMenu() + menu := panel.NewMenu() for { err := menu.CaptureInput() @@ -114,8 +114,8 @@ func createBlogPost(menu panel.Menu) error { return err } - httpClient := portal.MakeDefaultClient(nil) - handler := posts.MakeHandler(input, httpClient, dbConn) + httpClient := portal.NewDefaultClient(nil) + handler := posts.NewHandler(input, httpClient, dbConn) if _, err = handler.NotParsed(); err != nil { return err @@ -133,7 +133,7 @@ func createNewApiAccount(menu panel.Menu) error { return err } - if handler, err = accounts.MakeHandler(dbConn, environment); err != nil { + if handler, err = accounts.NewHandler(dbConn, environment); err != nil { return err } @@ -153,7 +153,7 @@ func showApiAccount(menu panel.Menu) error { return err } - if handler, err = accounts.MakeHandler(dbConn, environment); err != nil { + if handler, err = accounts.NewHandler(dbConn, environment); err != nil { return err } diff --git a/metal/cli/panel/menu.go b/metal/cli/panel/menu.go index 956d02cf..6ce71212 100644 --- a/metal/cli/panel/menu.go +++ b/metal/cli/panel/menu.go @@ -24,7 +24,7 @@ type Menu struct { var slugPattern = regexp.MustCompile(`^[a-z0-9-]+$`) -func MakeMenu() Menu { +func NewMenu() Menu { menu := Menu{ Reader: bufio.NewReader(os.Stdin), Validator: portal.GetDefaultValidator(), diff --git a/metal/cli/posts/factory.go b/metal/cli/posts/factory.go index 18b4ed79..45780a32 100644 --- a/metal/cli/posts/factory.go +++ b/metal/cli/posts/factory.go @@ -19,7 +19,7 @@ type Handler struct { IsDebugging bool } -func MakeHandler(input *Input, client *portal.Client, db *database.Connection) Handler { +func NewHandler(input *Input, client *portal.Client, db *database.Connection) Handler { tags := &repository.Tags{DB: db} categories := &repository.Categories{DB: db} diff --git a/metal/cli/posts/handler_test.go b/metal/cli/posts/handler_test.go index 7c76935a..00991d73 100644 --- a/metal/cli/posts/handler_test.go +++ b/metal/cli/posts/handler_test.go @@ -28,7 +28,7 @@ func captureOutput(fn func()) string { } func setupPostsHandler(t *testing.T) (*Handler, *database.Connection) { - conn := clitest.MakeTestConnection(t, &database.User{}, &database.Post{}, &database.Category{}, &database.PostCategory{}, &database.Tag{}, &database.PostTag{}) + conn := clitest.NewTestConnection(t, &database.User{}, &database.Post{}, &database.Category{}, &database.PostCategory{}, &database.Tag{}, &database.PostTag{}) user := database.User{ UUID: uuid.NewString(), Username: "jdoe", @@ -56,7 +56,7 @@ func setupPostsHandler(t *testing.T) (*Handler, *database.Connection) { Url: "http://example", } - h := MakeHandler(input, portal.MakeDefaultClient(nil), conn) + h := NewHandler(input, portal.NewDefaultClient(nil), conn) return &h, conn } diff --git a/metal/cli/seo/client.go b/metal/cli/seo/client.go index 0d752ecd..861150d7 100644 --- a/metal/cli/seo/client.go +++ b/metal/cli/seo/client.go @@ -50,14 +50,14 @@ func get[T any](handler func() router.StaticRouteResource, entityName string) (* func (c *Client) GetTalks() (*payload.TalksResponse, error) { return get[payload.TalksResponse](func() router.StaticRouteResource { - return handler.MakeTalksHandler(c.Fixture.GetTalksFile()) + return handler.NewTalksHandler(c.Fixture.GetTalksFile()) }, "talks") } func (c *Client) GetProfile() (*payload.ProfileResponse, error) { c.data.profileOnce.Do(func() { c.data.profile, c.data.profileErr = get[payload.ProfileResponse](func() router.StaticRouteResource { - return handler.MakeProfileHandler(c.Fixture.GetProfileFile()) + return handler.NewProfileHandler(c.Fixture.GetProfileFile()) }, "profile") }) @@ -67,7 +67,7 @@ func (c *Client) GetProfile() (*payload.ProfileResponse, error) { func (c *Client) GetProjects() (*payload.ProjectsResponse, error) { c.data.projectsOnce.Do(func() { c.data.projects, c.data.projectsErr = get[payload.ProjectsResponse](func() router.StaticRouteResource { - return handler.MakeProjectsHandler(c.Fixture.GetProjectsFile()) + return handler.NewProjectsHandler(c.Fixture.GetProjectsFile()) }, "projects") }) @@ -76,14 +76,14 @@ func (c *Client) GetProjects() (*payload.ProjectsResponse, error) { func (c *Client) GetSocial() (*payload.SocialResponse, error) { return get[payload.SocialResponse](func() router.StaticRouteResource { - return handler.MakeSocialHandler(c.Fixture.GetSocialFile()) + return handler.NewSocialHandler(c.Fixture.GetSocialFile()) }, "social") } func (c *Client) GetRecommendations() (*payload.RecommendationsResponse, error) { c.data.recommendationsOnce.Do(func() { c.data.recommendations, c.data.recommendationsErr = get[payload.RecommendationsResponse](func() router.StaticRouteResource { - return handler.MakeRecommendationsHandler(c.Fixture.GetRecommendationsFile()) + return handler.NewRecommendationsHandler(c.Fixture.GetRecommendationsFile()) }, "recommendations") }) @@ -92,13 +92,13 @@ func (c *Client) GetRecommendations() (*payload.RecommendationsResponse, error) func (c *Client) GetExperience() (*payload.ExperienceResponse, error) { return get[payload.ExperienceResponse](func() router.StaticRouteResource { - return handler.MakeExperienceHandler(c.Fixture.GetExperienceFile()) + return handler.NewExperienceHandler(c.Fixture.GetExperienceFile()) }, "experience") } func (c *Client) GetEducation() (*payload.EducationResponse, error) { return get[payload.EducationResponse](func() router.StaticRouteResource { - return handler.MakeEducationHandler(c.Fixture.GetEducationFile()) + return handler.NewEducationHandler(c.Fixture.GetEducationFile()) }, "education") } diff --git a/metal/cli/seo/generator_test.go b/metal/cli/seo/generator_test.go index 54ce609f..da78e1a5 100644 --- a/metal/cli/seo/generator_test.go +++ b/metal/cli/seo/generator_test.go @@ -27,7 +27,7 @@ import ( func newTestValidator(t *testing.T) *portal.Validator { t.Helper() - return portal.MakeValidatorFrom(validator.New(validator.WithRequiredStructEnabled())) + return portal.NewValidatorFrom(validator.New(validator.WithRequiredStructEnabled())) } func TestGeneratorBuildAndExport(t *testing.T) { diff --git a/metal/cli/seo/testhelpers_test.go b/metal/cli/seo/testhelpers_test.go index 7f488688..79a421d3 100644 --- a/metal/cli/seo/testhelpers_test.go +++ b/metal/cli/seo/testhelpers_test.go @@ -102,9 +102,9 @@ func newPostgresConnection(t *testing.T, models ...interface{}) (*database.Conne }, } - conn, err := database.MakeConnection(e) + conn, err := database.NewConnection(e) if err != nil { - t.Fatalf("make connection: %v", err) + t.Fatalf("new connection: %v", err) } if len(models) > 0 { diff --git a/metal/kernel/app.go b/metal/kernel/app.go index 4f57287b..f4066948 100644 --- a/metal/kernel/app.go +++ b/metal/kernel/app.go @@ -23,13 +23,13 @@ type App struct { db *database.Connection } -func MakeApp(e *env.Environment, validator *portal.Validator) (*App, error) { +func NewApp(e *env.Environment, validator *portal.Validator) (*App, error) { app := App{ env: e, validator: validator, - logs: MakeLogs(e), - sentry: MakeSentry(e), - db: MakeDbConnection(e), + logs: NewLogs(e), + sentry: NewSentry(e), + db: NewDbConnection(e), } if modem, err := app.NewRouter(); err != nil { @@ -48,7 +48,7 @@ func (a *App) NewRouter() (*router.Router, error) { envi := a.env - tokenHandler, err := auth.MakeTokensHandler( + tokenHandler, err := auth.NewTokensHandler( []byte(envi.App.MasterKey), ) @@ -60,7 +60,7 @@ func (a *App) NewRouter() (*router.Router, error) { Env: envi, TokenHandler: tokenHandler, ApiKeys: &repository.ApiKeys{DB: a.db}, - PublicMiddleware: middleware.MakePublicMiddleware( + PublicMiddleware: middleware.NewPublicMiddleware( envi.Network.PublicAllowedIP, envi.Network.IsProduction, ), diff --git a/metal/kernel/factory.go b/metal/kernel/factory.go index 438af707..700b205b 100644 --- a/metal/kernel/factory.go +++ b/metal/kernel/factory.go @@ -13,7 +13,7 @@ import ( "github.com/oullin/pkg/portal" ) -func MakeSentry(env *env.Environment) *portal.Sentry { +func NewSentry(env *env.Environment) *portal.Sentry { cOptions := sentry.ClientOptions{ AttachStacktrace: true, EnableTracing: true, @@ -43,8 +43,8 @@ func MakeSentry(env *env.Environment) *portal.Sentry { } } -func MakeDbConnection(env *env.Environment) *database.Connection { - dbConn, err := database.MakeConnection(env) +func NewDbConnection(env *env.Environment) *database.Connection { + dbConn, err := database.NewConnection(env) if err != nil { panic("Sql: error connecting to PostgresSQL: " + err.Error()) @@ -53,8 +53,8 @@ func MakeDbConnection(env *env.Environment) *database.Connection { return dbConn } -func MakeLogs(env *env.Environment) llogs.Driver { - lDriver, err := llogs.MakeFilesLogs(env) +func NewLogs(env *env.Environment) llogs.Driver { + lDriver, err := llogs.NewFilesLogs(env) if err != nil { panic("logs: error opening logs file: " + err.Error()) @@ -63,7 +63,7 @@ func MakeLogs(env *env.Environment) llogs.Driver { return lDriver } -func MakeEnv(validate *portal.Validator) *env.Environment { +func NewEnv(validate *portal.Validator) *env.Environment { errorSuffix := "Environment: " port, err := strconv.Atoi(env.GetEnvVar("ENV_DB_PORT")) diff --git a/metal/kernel/ignite.go b/metal/kernel/ignite.go index 09294e8d..ed086292 100644 --- a/metal/kernel/ignite.go +++ b/metal/kernel/ignite.go @@ -11,5 +11,5 @@ func Ignite(envPath string, validate *portal.Validator) *env.Environment { panic("failed to read the .env file/values: " + err.Error()) } - return MakeEnv(validate) + return NewEnv(validate) } diff --git a/metal/kernel/kernel_test.go b/metal/kernel/kernel_test.go index 6401ad77..8a6d3402 100644 --- a/metal/kernel/kernel_test.go +++ b/metal/kernel/kernel_test.go @@ -48,10 +48,10 @@ func validEnvVars(t *testing.T) { t.Setenv("ENV_SPA_IMAGES_DIR", "/Users/gus/Sites/oullin/web/public/seo/posts/images") } -func TestMakeEnv(t *testing.T) { +func TestNewEnv(t *testing.T) { validEnvVars(t) - env := MakeEnv(portal.GetDefaultValidator()) + env := NewEnv(portal.GetDefaultValidator()) if env.App.Name != "guss" { t.Fatalf("env not loaded") @@ -62,7 +62,7 @@ func TestMakeEnv(t *testing.T) { } } -func TestMakeEnvRequiresIPInProduction(t *testing.T) { +func TestNewEnvRequiresIPInProduction(t *testing.T) { validEnvVars(t) t.Setenv("ENV_APP_ENV_TYPE", "production") t.Setenv("ENV_PUBLIC_ALLOWED_IP", "") @@ -73,7 +73,7 @@ func TestMakeEnvRequiresIPInProduction(t *testing.T) { } }() - MakeEnv(portal.GetDefaultValidator()) + NewEnv(portal.GetDefaultValidator()) } func TestIgnite(t *testing.T) { @@ -152,7 +152,7 @@ func TestAppHelpers(t *testing.T) { app := &App{} mux := http.NewServeMux() - r := router.Router{Mux: mux, Pipeline: middleware.Pipeline{PublicMiddleware: middleware.MakePublicMiddleware("", false)}} + r := router.Router{Mux: mux, Pipeline: middleware.Pipeline{PublicMiddleware: middleware.NewPublicMiddleware("", false)}} app.SetRouter(r) @@ -175,7 +175,7 @@ func TestAppHelpers(t *testing.T) { func TestAppAccessorsReturnValues(t *testing.T) { validEnvVars(t) - e := MakeEnv(portal.GetDefaultValidator()) + e := NewEnv(portal.GetDefaultValidator()) dbConn := &database.Connection{} sentryHub := &portal.Sentry{} @@ -232,7 +232,7 @@ func TestAppRecoverRepanics(t *testing.T) { func TestAppBootRoutes(t *testing.T) { validEnvVars(t) - env := MakeEnv(portal.GetDefaultValidator()) + env := NewEnv(portal.GetDefaultValidator()) key, err := auth.GenerateAESKey() @@ -240,7 +240,7 @@ func TestAppBootRoutes(t *testing.T) { t.Fatalf("key err: %v", err) } - handler, err := auth.MakeTokensHandler(key) + handler, err := auth.NewTokensHandler(key) if err != nil { t.Fatalf("handler err: %v", err) @@ -253,7 +253,7 @@ func TestAppBootRoutes(t *testing.T) { Env: env, ApiKeys: &repository.ApiKeys{DB: &database.Connection{}}, TokenHandler: handler, - PublicMiddleware: middleware.MakePublicMiddleware("", false), + PublicMiddleware: middleware.NewPublicMiddleware("", false), }, WebsiteRoutes: router.NewWebsiteRoutes(env), Db: &database.Connection{}, @@ -316,7 +316,7 @@ func TestAppNewRouterTokenHandlerError(t *testing.T) { func TestAppNewRouterSuccess(t *testing.T) { validEnvVars(t) - e := MakeEnv(portal.GetDefaultValidator()) + e := NewEnv(portal.GetDefaultValidator()) dbConn := &database.Connection{} validator := portal.GetDefaultValidator() @@ -384,7 +384,7 @@ func TestAppNewRouterSuccess(t *testing.T) { }) } -func TestMakeLogs(t *testing.T) { +func TestNewLogs(t *testing.T) { // Create a temporary directory with a lowercase path tempDir := getLowerTempDir(t) // Ensure the directory exists @@ -398,9 +398,9 @@ func TestMakeLogs(t *testing.T) { validEnvVars(t) t.Setenv("ENV_APP_LOGS_DIR", tempDir+"/log-%s.txt") - env := MakeEnv(portal.GetDefaultValidator()) + env := NewEnv(portal.GetDefaultValidator()) - driver := MakeLogs(env) + driver := NewLogs(env) fl := driver.(llogs.FilesLogs) if !strings.HasPrefix(fl.DefaultPath(), tempDir) { @@ -412,12 +412,12 @@ func TestMakeLogs(t *testing.T) { } } -func TestMakeDbConnectionPanic(t *testing.T) { +func TestNewDbConnectionPanic(t *testing.T) { validEnvVars(t) t.Setenv("ENV_DB_PORT", "1") t.Setenv("ENV_SENTRY_DSN", "https://public@o0.ingest.sentry.io/0") - env := MakeEnv(portal.GetDefaultValidator()) + env := NewEnv(portal.GetDefaultValidator()) defer func() { if r := recover(); r == nil { @@ -425,10 +425,10 @@ func TestMakeDbConnectionPanic(t *testing.T) { } }() - MakeDbConnection(env) + NewDbConnection(env) } -func TestMakeAppPanic(t *testing.T) { +func TestNewAppPanic(t *testing.T) { // Create a temporary directory with a lowercase path tempDir := getLowerTempDir(t) // Ensure the directory exists @@ -444,7 +444,7 @@ func TestMakeAppPanic(t *testing.T) { t.Setenv("ENV_APP_LOGS_DIR", tempDir+"/log-%s.txt") t.Setenv("ENV_SENTRY_DSN", "https://public@o0.ingest.sentry.io/0") - env := MakeEnv(portal.GetDefaultValidator()) + env := NewEnv(portal.GetDefaultValidator()) defer func() { if r := recover(); r == nil { @@ -452,16 +452,16 @@ func TestMakeAppPanic(t *testing.T) { } }() - MakeApp(env, portal.GetDefaultValidator()) + NewApp(env, portal.GetDefaultValidator()) } -func TestMakeSentry(t *testing.T) { +func TestNewSentry(t *testing.T) { validEnvVars(t) t.Setenv("ENV_SENTRY_DSN", "https://public@o0.ingest.sentry.io/0") - env := MakeEnv(portal.GetDefaultValidator()) + env := NewEnv(portal.GetDefaultValidator()) - s := MakeSentry(env) + s := NewSentry(env) if s == nil || s.Handler == nil || s.Options == nil { t.Fatalf("sentry setup failed") @@ -484,8 +484,8 @@ func TestMakeSentry(t *testing.T) { t.Run("production environment", func(t *testing.T) { t.Setenv("ENV_APP_ENV_TYPE", "production") - prodEnv := MakeEnv(portal.GetDefaultValidator()) - prodSentry := MakeSentry(prodEnv) + prodEnv := NewEnv(portal.GetDefaultValidator()) + prodSentry := NewSentry(prodEnv) if !prodSentry.Options.WaitForDelivery { t.Fatalf("expected WaitForDelivery to be enabled in production") @@ -603,9 +603,9 @@ func TestCloseLogs(t *testing.T) { t.Setenv("ENV_APP_LOGS_DIR", tempDir+"/log-%s.txt") t.Setenv("ENV_SENTRY_DSN", "https://public@o0.ingest.sentry.io/0") - env := MakeEnv(portal.GetDefaultValidator()) + env := NewEnv(portal.GetDefaultValidator()) - logs := MakeLogs(env) + logs := NewLogs(env) app := &App{logs: logs} app.CloseLogs() diff --git a/metal/router/router.go b/metal/router/router.go index dcd87e0a..0c68015b 100644 --- a/metal/router/router.go +++ b/metal/router/router.go @@ -23,7 +23,7 @@ type Router struct { } func (r *Router) PublicPipelineFor(apiHandler endpoint.ApiHandler) http.HandlerFunc { - return endpoint.MakeApiHandler( + return endpoint.NewApiHandler( r.Pipeline.Chain( apiHandler, r.Pipeline.PublicMiddleware.Handle, @@ -32,12 +32,12 @@ func (r *Router) PublicPipelineFor(apiHandler endpoint.ApiHandler) http.HandlerF } func (r *Router) PipelineFor(apiHandler endpoint.ApiHandler) http.HandlerFunc { - tokenMiddleware := middleware.MakeTokenMiddleware( + tokenMiddleware := middleware.NewTokenMiddleware( r.Pipeline.TokenHandler, r.Pipeline.ApiKeys, ) - return endpoint.MakeApiHandler( + return endpoint.NewApiHandler( r.Pipeline.Chain( apiHandler, tokenMiddleware.Handle, @@ -47,7 +47,7 @@ func (r *Router) PipelineFor(apiHandler endpoint.ApiHandler) http.HandlerFunc { func (r *Router) Posts() { repo := repository.Posts{DB: r.Db} - abstract := handler.MakePostsHandler(&repo) + abstract := handler.NewPostsHandler(&repo) index := r.PipelineFor(abstract.Index) show := r.PipelineFor(abstract.Show) @@ -58,7 +58,7 @@ func (r *Router) Posts() { func (r *Router) Categories() { repo := repository.Categories{DB: r.Db} - abstract := handler.MakeCategoriesHandler(&repo) + abstract := handler.NewCategoriesHandler(&repo) index := r.PipelineFor(abstract.Index) @@ -66,16 +66,16 @@ func (r *Router) Categories() { } func (r *Router) Signature() { - abstract := handler.MakeSignaturesHandler(r.Validator, r.Pipeline.ApiKeys) + abstract := handler.NewSignaturesHandler(r.Validator, r.Pipeline.ApiKeys) generate := r.PublicPipelineFor(abstract.Generate) r.Mux.HandleFunc("POST /generate-signature", generate) } func (r *Router) KeepAlive() { - abstract := handler.MakeKeepAliveHandler(&r.Env.Ping) + abstract := handler.NewKeepAliveHandler(&r.Env.Ping) - apiHandler := endpoint.MakeApiHandler( + apiHandler := endpoint.NewApiHandler( r.Pipeline.Chain(abstract.Handle), ) @@ -83,9 +83,9 @@ func (r *Router) KeepAlive() { } func (r *Router) KeepAliveDB() { - abstract := handler.MakeKeepAliveDBHandler(&r.Env.Ping, r.Db) + abstract := handler.NewKeepAliveDBHandler(&r.Env.Ping, r.Db) - apiHandler := endpoint.MakeApiHandler( + apiHandler := endpoint.NewApiHandler( r.Pipeline.Chain(abstract.Handle), ) @@ -93,7 +93,7 @@ func (r *Router) KeepAliveDB() { } func (r *Router) Profile() { - maker := handler.MakeProfileHandler + maker := handler.NewProfileHandler r.composeFixtures( r.WebsiteRoutes.Fixture.GetProfile(), @@ -104,7 +104,7 @@ func (r *Router) Profile() { } func (r *Router) Experience() { - maker := handler.MakeExperienceHandler + maker := handler.NewExperienceHandler r.composeFixtures( r.WebsiteRoutes.Fixture.GetExperience(), @@ -115,7 +115,7 @@ func (r *Router) Experience() { } func (r *Router) Projects() { - maker := handler.MakeProjectsHandler + maker := handler.NewProjectsHandler r.composeFixtures( r.WebsiteRoutes.Fixture.GetProjects(), @@ -126,7 +126,7 @@ func (r *Router) Projects() { } func (r *Router) Social() { - maker := handler.MakeSocialHandler + maker := handler.NewSocialHandler r.composeFixtures( r.WebsiteRoutes.Fixture.GetSocial(), @@ -137,7 +137,7 @@ func (r *Router) Social() { } func (r *Router) Talks() { - maker := handler.MakeTalksHandler + maker := handler.NewTalksHandler r.composeFixtures( r.WebsiteRoutes.Fixture.GetTalks(), @@ -148,7 +148,7 @@ func (r *Router) Talks() { } func (r *Router) Education() { - maker := handler.MakeEducationHandler + maker := handler.NewEducationHandler r.composeFixtures( r.WebsiteRoutes.Fixture.GetEducation(), @@ -159,7 +159,7 @@ func (r *Router) Education() { } func (r *Router) Recommendations() { - maker := handler.MakeRecommendationsHandler + maker := handler.NewRecommendationsHandler r.composeFixtures( r.WebsiteRoutes.Fixture.GetRecommendations(), diff --git a/metal/router/router_keep_alive_db_test.go b/metal/router/router_keep_alive_db_test.go index f4e58b78..bd5d3876 100644 --- a/metal/router/router_keep_alive_db_test.go +++ b/metal/router/router_keep_alive_db_test.go @@ -11,12 +11,12 @@ import ( ) func TestKeepAliveDBRoute(t *testing.T) { - db, _ := handlertests.MakeTestDB(t) + db, _ := handlertests.NewTestDB(t) r := Router{ Env: &env.Environment{Ping: env.PingEnvironment{Username: "user", Password: "pass"}}, Db: db, Mux: http.NewServeMux(), - Pipeline: middleware.Pipeline{PublicMiddleware: middleware.MakePublicMiddleware("", false)}, + Pipeline: middleware.Pipeline{PublicMiddleware: middleware.NewPublicMiddleware("", false)}, } r.KeepAliveDB() diff --git a/metal/router/router_keep_alive_test.go b/metal/router/router_keep_alive_test.go index 2f86ab11..17b49f10 100644 --- a/metal/router/router_keep_alive_test.go +++ b/metal/router/router_keep_alive_test.go @@ -13,7 +13,7 @@ func TestKeepAliveRoute(t *testing.T) { r := Router{ Env: &env.Environment{Ping: env.PingEnvironment{Username: "user", Password: "pass"}}, Mux: http.NewServeMux(), - Pipeline: middleware.Pipeline{PublicMiddleware: middleware.MakePublicMiddleware("", false)}, + Pipeline: middleware.Pipeline{PublicMiddleware: middleware.NewPublicMiddleware("", false)}, } r.KeepAlive() diff --git a/metal/router/router_signature_test.go b/metal/router/router_signature_test.go index 58412ad9..01a1f96f 100644 --- a/metal/router/router_signature_test.go +++ b/metal/router/router_signature_test.go @@ -16,7 +16,7 @@ func TestSignatureRoute_PublicMiddleware(t *testing.T) { r := Router{ Mux: http.NewServeMux(), Pipeline: middleware.Pipeline{ - PublicMiddleware: middleware.MakePublicMiddleware("", false), + PublicMiddleware: middleware.NewPublicMiddleware("", false), }, Validator: portal.GetDefaultValidator(), } diff --git a/pkg/auth/handler.go b/pkg/auth/handler.go index cbc90c93..75121ca5 100644 --- a/pkg/auth/handler.go +++ b/pkg/auth/handler.go @@ -13,7 +13,7 @@ type TokenHandler struct { AccountNameMinLength int } -func MakeTokensHandler(encryptionKey []byte) (*TokenHandler, error) { +func NewTokensHandler(encryptionKey []byte) (*TokenHandler, error) { if len(encryptionKey) != EncryptionKeyLength { return nil, fmt.Errorf("encryption key length must be equal to %d bytes", EncryptionKeyLength) } diff --git a/pkg/auth/handler_test.go b/pkg/auth/handler_test.go index 5beba102..0ea09c18 100644 --- a/pkg/auth/handler_test.go +++ b/pkg/auth/handler_test.go @@ -9,10 +9,10 @@ func TestTokenHandlerLifecycle(t *testing.T) { t.Fatalf("generate key: %v", err) } - h, err := MakeTokensHandler(key) + h, err := NewTokensHandler(key) if err != nil { - t.Fatalf("make handler: %v", err) + t.Fatalf("new handler: %v", err) } token, err := h.SetupNewAccount("tester") @@ -32,8 +32,8 @@ func TestTokenHandlerLifecycle(t *testing.T) { } } -func TestMakeTokensHandlerError(t *testing.T) { - _, err := MakeTokensHandler([]byte("short")) +func TestNewTokensHandlerError(t *testing.T) { + _, err := NewTokensHandler([]byte("short")) if err == nil { t.Fatalf("expected error for short key") @@ -47,10 +47,10 @@ func TestSetupNewAccountErrors(t *testing.T) { t.Fatalf("generate key: %v", err) } - h, err := MakeTokensHandler(key) + h, err := NewTokensHandler(key) if err != nil { - t.Fatalf("make handler: %v", err) + t.Fatalf("new handler: %v", err) } if _, err := h.SetupNewAccount("ab"); err == nil { @@ -71,10 +71,10 @@ func TestDecodeTokensForError(t *testing.T) { t.Fatalf("key err: %v", err) } - h, err := MakeTokensHandler(key) + h, err := NewTokensHandler(key) if err != nil { - t.Fatalf("make handler: %v", err) + t.Fatalf("new handler: %v", err) } if _, err := h.DecodeTokensFor("acc", []byte("bad"), []byte("bad")); err == nil { diff --git a/pkg/endpoint/handler.go b/pkg/endpoint/handler.go index 760e8825..8f1bacf5 100644 --- a/pkg/endpoint/handler.go +++ b/pkg/endpoint/handler.go @@ -8,7 +8,7 @@ import ( "github.com/getsentry/sentry-go" ) -func MakeApiHandler(fn ApiHandler) http.HandlerFunc { +func NewApiHandler(fn ApiHandler) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { if err := fn(w, r); err != nil { slog.Error("API Error", "message", err.Message, "status", err.Status) diff --git a/pkg/endpoint/handler_test.go b/pkg/endpoint/handler_test.go index d9b93e8a..26f495c1 100644 --- a/pkg/endpoint/handler_test.go +++ b/pkg/endpoint/handler_test.go @@ -13,8 +13,8 @@ import ( "github.com/oullin/pkg/portal" ) -func TestMakeApiHandler(t *testing.T) { - h := MakeApiHandler(func(w http.ResponseWriter, r *http.Request) *ApiError { +func TestNewApiHandler(t *testing.T) { + h := NewApiHandler(func(w http.ResponseWriter, r *http.Request) *ApiError { return &ApiError{ Message: "bad", diff --git a/pkg/endpoint/response.go b/pkg/endpoint/response.go index 2d90f0ae..4b4d47e0 100644 --- a/pkg/endpoint/response.go +++ b/pkg/endpoint/response.go @@ -17,7 +17,7 @@ type Response struct { headers func(w http.ResponseWriter) } -func MakeResponseFrom(salt string, writer http.ResponseWriter, request *http.Request) *Response { +func NewResponseFrom(salt string, writer http.ResponseWriter, request *http.Request) *Response { etag := fmt.Sprintf( `"%s"`, strings.TrimSpace(salt), @@ -39,7 +39,7 @@ func MakeResponseFrom(salt string, writer http.ResponseWriter, request *http.Req } } -func MakeNoCacheResponse(writer http.ResponseWriter, request *http.Request) *Response { +func NewNoCacheResponse(writer http.ResponseWriter, request *http.Request) *Response { cacheControl := "no-store" return &Response{ diff --git a/pkg/endpoint/response_test.go b/pkg/endpoint/response_test.go index b1214f09..b7ca64f8 100644 --- a/pkg/endpoint/response_test.go +++ b/pkg/endpoint/response_test.go @@ -10,7 +10,7 @@ func TestResponse_RespondOkAndHasCache(t *testing.T) { req := httptest.NewRequest("GET", "/", nil) rec := httptest.NewRecorder() - r := MakeResponseFrom("salt", rec, req) + r := NewResponseFrom("salt", rec, req) if err := r.RespondOk(map[string]string{"a": "b"}); err != nil { t.Fatalf("respond: %v", err) @@ -35,7 +35,7 @@ func TestResponse_NoCache(t *testing.T) { req := httptest.NewRequest("GET", "/", nil) rec := httptest.NewRecorder() - r := MakeNoCacheResponse(rec, req) + r := NewNoCacheResponse(rec, req) if err := r.RespondOk(map[string]string{"a": "b"}); err != nil { t.Fatalf("respond: %v", err) @@ -61,7 +61,7 @@ func TestResponse_NoCache(t *testing.T) { func TestResponse_WithHeaders(t *testing.T) { req := httptest.NewRequest("GET", "/", nil) rec := httptest.NewRecorder() - r := MakeResponseFrom("salt", rec, req) + r := NewResponseFrom("salt", rec, req) called := false r.WithHeaders(func(w http.ResponseWriter) { called = true }) @@ -75,7 +75,7 @@ func TestResponse_NotModified(t *testing.T) { req := httptest.NewRequest("GET", "/", nil) rec := httptest.NewRecorder() - r := MakeResponseFrom("salt", rec, req) + r := NewResponseFrom("salt", rec, req) r.RespondWithNotModified() if rec.Code != http.StatusNotModified { diff --git a/pkg/llogs/files_logs.go b/pkg/llogs/files_logs.go index 550a97b4..cf7c8307 100644 --- a/pkg/llogs/files_logs.go +++ b/pkg/llogs/files_logs.go @@ -16,7 +16,7 @@ type FilesLogs struct { env *env.Environment } -func MakeFilesLogs(env *env.Environment) (Driver, error) { +func NewFilesLogs(env *env.Environment) (Driver, error) { manager := FilesLogs{} manager.env = env diff --git a/pkg/llogs/files_logs_test.go b/pkg/llogs/files_logs_test.go index 03489568..79640c88 100644 --- a/pkg/llogs/files_logs_test.go +++ b/pkg/llogs/files_logs_test.go @@ -16,10 +16,10 @@ func TestFilesLogs(t *testing.T) { }, } - d, err := MakeFilesLogs(e) + d, err := NewFilesLogs(e) if err != nil { - t.Fatalf("make logs: %v", err) + t.Fatalf("new logs: %v", err) } fl := d.(FilesLogs) diff --git a/pkg/markdown/schema.go b/pkg/markdown/schema.go index 4856a640..45e70f5a 100644 --- a/pkg/markdown/schema.go +++ b/pkg/markdown/schema.go @@ -30,7 +30,7 @@ type Parser struct { } func (f FrontMatter) GetPublishedAt() (*time.Time, error) { - stringable := portal.MakeStringable(f.PublishedAt) + stringable := portal.NewStringable(f.PublishedAt) publishedAt, err := stringable.ToDatetime() if err != nil { diff --git a/pkg/media/media.go b/pkg/media/media.go index 8aac14f3..8038e007 100644 --- a/pkg/media/media.go +++ b/pkg/media/media.go @@ -27,7 +27,7 @@ type Media struct { size int64 } -func MakeMedia(uniqueId string, file []byte, baseFileName string) (*Media, error) { +func NewMedia(uniqueId string, file []byte, baseFileName string) (*Media, error) { if len(file) <= 0 { return nil, errors.New("the given file is empty") } diff --git a/pkg/media/media_test.go b/pkg/media/media_test.go index d2c32ceb..3f7c6f14 100644 --- a/pkg/media/media_test.go +++ b/pkg/media/media_test.go @@ -18,14 +18,14 @@ func setupTempDir(t *testing.T) string { return dir } -func TestMakeMediaAndUpload(t *testing.T) { +func TestNewMediaAndUpload(t *testing.T) { setupTempDir(t) data := []byte{1, 2, 3} - m, err := MakeMedia("uid", data, "pic.jpg") + m, err := NewMedia("uid", data, "pic.jpg") if err != nil { - t.Fatalf("make: %v", err) + t.Fatalf("new: %v", err) } if !strings.HasPrefix(m.GetFileName(), "uid-") { @@ -53,30 +53,30 @@ func TestMakeMediaAndUpload(t *testing.T) { } } -func TestMakeMediaErrors(t *testing.T) { +func TestNewMediaErrors(t *testing.T) { setupTempDir(t) - if _, err := MakeMedia("u", []byte{}, "a.jpg"); err == nil { + if _, err := NewMedia("u", []byte{}, "a.jpg"); err == nil { t.Fatalf("expected empty file error") } big := make([]byte, maxFileSize+1) - if _, err := MakeMedia("u", big, "a.jpg"); err == nil { + if _, err := NewMedia("u", big, "a.jpg"); err == nil { t.Fatalf("expected size error") } - if _, err := MakeMedia("u", []byte{1}, "a.txt"); err == nil { + if _, err := NewMedia("u", []byte{1}, "a.txt"); err == nil { t.Fatalf("expected ext error") } } func TestGetFilePath(t *testing.T) { setupTempDir(t) - m, err := MakeMedia("u", []byte{1}, "a.jpg") + m, err := NewMedia("u", []byte{1}, "a.jpg") if err != nil { - t.Fatalf("make: %v", err) + t.Fatalf("new: %v", err) } p := m.GetFilePath("thumb") diff --git a/pkg/middleware/public_middleware.go b/pkg/middleware/public_middleware.go index c7771b62..fa42f3ca 100644 --- a/pkg/middleware/public_middleware.go +++ b/pkg/middleware/public_middleware.go @@ -28,7 +28,7 @@ type PublicMiddleware struct { isProduction bool } -func MakePublicMiddleware(allowedIP string, isProduction bool) PublicMiddleware { +func NewPublicMiddleware(allowedIP string, isProduction bool) PublicMiddleware { return PublicMiddleware{ clockSkew: 5 * time.Minute, disallowFuture: true, diff --git a/pkg/middleware/public_middleware_test.go b/pkg/middleware/public_middleware_test.go index fcd7a550..e970eda5 100644 --- a/pkg/middleware/public_middleware_test.go +++ b/pkg/middleware/public_middleware_test.go @@ -13,7 +13,7 @@ import ( ) func TestPublicMiddleware_InvalidHeaders(t *testing.T) { - pm := MakePublicMiddleware("", false) + pm := NewPublicMiddleware("", false) handler := pm.Handle(func(w http.ResponseWriter, r *http.Request) *endpoint.ApiError { return nil }) base := time.Unix(1_700_000_000, 0) @@ -58,7 +58,7 @@ func TestPublicMiddleware_InvalidHeaders(t *testing.T) { } func TestPublicMiddleware_TimestampExpired(t *testing.T) { - pm := MakePublicMiddleware("", false) + pm := NewPublicMiddleware("", false) base := time.Unix(1_700_000_000, 0) pm.now = func() time.Time { return base } handler := pm.Handle(func(w http.ResponseWriter, r *http.Request) *endpoint.ApiError { return nil }) @@ -75,7 +75,7 @@ func TestPublicMiddleware_TimestampExpired(t *testing.T) { } func TestPublicMiddleware_RateLimitAndReplay(t *testing.T) { - pm := MakePublicMiddleware("", false) + pm := NewPublicMiddleware("", false) pm.rateLimiter = limiter.NewMemoryLimiter(time.Minute, 1) base := time.Unix(1_700_000_000, 0) pm.now = func() time.Time { return base } @@ -110,7 +110,7 @@ func TestPublicMiddleware_RateLimitAndReplay(t *testing.T) { func TestPublicMiddleware_IPWhitelist(t *testing.T) { base := time.Unix(1_700_000_000, 0) - pm := MakePublicMiddleware("31.97.60.190", true) + pm := NewPublicMiddleware("31.97.60.190", true) pm.now = func() time.Time { return base } handler := pm.Handle(func(w http.ResponseWriter, r *http.Request) *endpoint.ApiError { return nil }) @@ -137,7 +137,7 @@ func TestPublicMiddleware_IPWhitelist(t *testing.T) { }) t.Run("non-production skips restriction", func(t *testing.T) { - pm := MakePublicMiddleware("31.97.60.190", false) + pm := NewPublicMiddleware("31.97.60.190", false) pm.now = func() time.Time { return base } handler := pm.Handle(func(w http.ResponseWriter, r *http.Request) *endpoint.ApiError { return nil }) rec := httptest.NewRecorder() diff --git a/pkg/middleware/token_middleware.go b/pkg/middleware/token_middleware.go index 08bcf1d3..6cbe8d96 100644 --- a/pkg/middleware/token_middleware.go +++ b/pkg/middleware/token_middleware.go @@ -32,7 +32,7 @@ type TokenCheckMiddleware struct { rateLimiter *limiter.MemoryLimiter } -func MakeTokenMiddleware(tokenHandler *auth.TokenHandler, apiKeys *repository.ApiKeys) TokenCheckMiddleware { +func NewTokenMiddleware(tokenHandler *auth.TokenHandler, apiKeys *repository.ApiKeys) TokenCheckMiddleware { return TokenCheckMiddleware{ maxFailPerScope: 10, disallowFuture: true, diff --git a/pkg/middleware/token_middleware_additional_test.go b/pkg/middleware/token_middleware_additional_test.go index ff397a6f..36013842 100644 --- a/pkg/middleware/token_middleware_additional_test.go +++ b/pkg/middleware/token_middleware_additional_test.go @@ -63,9 +63,9 @@ func makeRepo(t *testing.T, account string) (*repository.ApiKeys, *auth.TokenHan if err := db.AutoMigrate(&database.APIKey{}, &database.APIKeySignatures{}); err != nil { t.Skipf("migrate: %v", err) } - th, err := auth.MakeTokensHandler(generate32(t)) + th, err := auth.NewTokensHandler(generate32(t)) if err != nil { - t.Fatalf("MakeTokensHandler: %v", err) + t.Fatalf("NewTokensHandler: %v", err) } seed, err := th.SetupNewAccount(account) if err != nil { @@ -101,7 +101,7 @@ func TestTokenMiddlewareGuardDependencies(t *testing.T) { func TestTokenMiddleware_PublicTokenMismatch(t *testing.T) { repo, th, seed, _ := makeRepo(t, "mismatch") - tm := MakeTokenMiddleware(th, repo) + tm := NewTokenMiddleware(th, repo) tm.clockSkew = time.Minute next := func(w http.ResponseWriter, r *http.Request) *endpoint.ApiError { return nil } handler := tm.Handle(next) @@ -116,7 +116,7 @@ func TestTokenMiddleware_PublicTokenMismatch(t *testing.T) { func TestTokenMiddleware_SignatureMismatch(t *testing.T) { repo, th, seed, key := makeRepo(t, "siggy") - tm := MakeTokenMiddleware(th, repo) + tm := NewTokenMiddleware(th, repo) tm.clockSkew = time.Minute next := func(w http.ResponseWriter, r *http.Request) *endpoint.ApiError { return nil } handler := tm.Handle(next) @@ -141,7 +141,7 @@ func TestTokenMiddleware_SignatureMismatch(t *testing.T) { func TestTokenMiddleware_NonceReplay(t *testing.T) { repo, th, seed, key := makeRepo(t, "replay") - tm := MakeTokenMiddleware(th, repo) + tm := NewTokenMiddleware(th, repo) tm.clockSkew = time.Minute tm.nonceTTL = time.Minute nextCalled := 0 @@ -169,7 +169,7 @@ func TestTokenMiddleware_NonceReplay(t *testing.T) { func TestTokenMiddleware_RateLimiter(t *testing.T) { repo, th, seed, key := makeRepo(t, "ratey") - tm := MakeTokenMiddleware(th, repo) + tm := NewTokenMiddleware(th, repo) tm.clockSkew = time.Minute nextCalled := 0 next := func(w http.ResponseWriter, r *http.Request) *endpoint.ApiError { @@ -211,7 +211,7 @@ func TestTokenMiddleware_RateLimiter(t *testing.T) { func TestTokenMiddleware_CustomClockValidatesSignature(t *testing.T) { repo, th, seed, key := makeRepo(t, "clock") - tm := MakeTokenMiddleware(th, repo) + tm := NewTokenMiddleware(th, repo) tm.clockSkew = time.Minute past := time.Now().Add(-10 * time.Minute) tm.now = func() time.Time { return past } diff --git a/pkg/middleware/token_middleware_test.go b/pkg/middleware/token_middleware_test.go index 249cf56e..a9138c15 100644 --- a/pkg/middleware/token_middleware_test.go +++ b/pkg/middleware/token_middleware_test.go @@ -25,7 +25,7 @@ import ( ) func TestTokenMiddlewareHandle_RequiresRequestID(t *testing.T) { - tm := MakeTokenMiddleware(nil, nil) + tm := NewTokenMiddleware(nil, nil) handler := tm.Handle(func(w http.ResponseWriter, r *http.Request) *endpoint.ApiError { return nil }) @@ -38,7 +38,7 @@ func TestTokenMiddlewareHandle_RequiresRequestID(t *testing.T) { } func TestTokenMiddlewareHandleInvalid(t *testing.T) { - tm := MakeTokenMiddleware(nil, nil) + tm := NewTokenMiddleware(nil, nil) handler := tm.Handle(func(w http.ResponseWriter, r *http.Request) *endpoint.ApiError { return nil }) @@ -52,7 +52,7 @@ func TestTokenMiddlewareHandleInvalid(t *testing.T) { } func TestValidateAndGetHeaders_MissingAndInvalidFormat(t *testing.T) { - tm := MakeTokenMiddleware(nil, nil) + tm := NewTokenMiddleware(nil, nil) req := httptest.NewRequest("GET", "/", nil) if _, apiErr := tm.ValidateAndGetHeaders(req, "req-1"); apiErr == nil || apiErr.Status != http.StatusUnauthorized { @@ -71,7 +71,7 @@ func TestValidateAndGetHeaders_MissingAndInvalidFormat(t *testing.T) { } func TestAttachContext(t *testing.T) { - tm := MakeTokenMiddleware(nil, nil) + tm := NewTokenMiddleware(nil, nil) req := httptest.NewRequest("GET", "/", nil) headers := AuthTokenHeaders{AccountName: "Alice", RequestID: "RID-123"} r := tm.AttachContext(req, headers) @@ -200,9 +200,9 @@ func TestTokenMiddleware_DB_Integration(t *testing.T) { conn := setupDB(t) // Prepare TokenHandler and seed an account with encrypted keys - th, err := auth.MakeTokensHandler(generate32(t)) + th, err := auth.NewTokensHandler(generate32(t)) if err != nil { - t.Fatalf("MakeTokensHandler: %v", err) + t.Fatalf("NewTokensHandler: %v", err) } seed, err := th.SetupNewAccount("acme-user") if err != nil { @@ -220,7 +220,7 @@ func TestTokenMiddleware_DB_Integration(t *testing.T) { } // Build middleware - tm := MakeTokenMiddleware(th, repo) + tm := NewTokenMiddleware(th, repo) // make it tolerant and fast for test tm.clockSkew = 2 * time.Minute tm.nonceTTL = 1 * time.Minute @@ -281,9 +281,9 @@ func TestTokenMiddleware_DB_Integration_HappyPath(t *testing.T) { conn := setupDB(t) // Prepare TokenHandler and seed an account with encrypted keys - th, err := auth.MakeTokensHandler(generate32(t)) + th, err := auth.NewTokensHandler(generate32(t)) if err != nil { - t.Fatalf("MakeTokensHandler: %v", err) + t.Fatalf("NewTokensHandler: %v", err) } seed, err := th.SetupNewAccount("acme-user-happy") if err != nil { @@ -301,7 +301,7 @@ func TestTokenMiddleware_DB_Integration_HappyPath(t *testing.T) { } // Build middleware - tm := MakeTokenMiddleware(th, repo) + tm := NewTokenMiddleware(th, repo) // Relax window for test tm.clockSkew = 2 * time.Minute tm.nonceTTL = 1 * time.Minute @@ -334,10 +334,10 @@ func TestTokenMiddleware_DB_Integration_HappyPath(t *testing.T) { } } -// TestMakeTokenMiddleware_DefaultDisallowFuture verifies that disallowFuture is true by default -func TestMakeTokenMiddleware_DefaultDisallowFuture(t *testing.T) { +// TestNewTokenMiddleware_DefaultDisallowFuture verifies that disallowFuture is true by default +func TestNewTokenMiddleware_DefaultDisallowFuture(t *testing.T) { // Create middleware with default settings - tm := MakeTokenMiddleware(nil, nil) + tm := NewTokenMiddleware(nil, nil) // Verify disallowFuture is true by default if !tm.disallowFuture { @@ -350,9 +350,9 @@ func TestTokenMiddleware_RejectsFutureTimestamps(t *testing.T) { conn := setupDB(t) // Prepare TokenHandler and seed an account with encrypted keys - th, err := auth.MakeTokensHandler(generate32(t)) + th, err := auth.NewTokensHandler(generate32(t)) if err != nil { - t.Fatalf("MakeTokensHandler: %v", err) + t.Fatalf("NewTokensHandler: %v", err) } seed, err := th.SetupNewAccount("acme-user-future") if err != nil { @@ -369,7 +369,7 @@ func TestTokenMiddleware_RejectsFutureTimestamps(t *testing.T) { } // Build middleware with default settings (disallowFuture = true) - tm := MakeTokenMiddleware(th, repo) + tm := NewTokenMiddleware(th, repo) nextCalled := false next := func(w http.ResponseWriter, r *http.Request) *endpoint.ApiError { diff --git a/pkg/portal/client.go b/pkg/portal/client.go index 48e8d41a..1e6cc86c 100644 --- a/pkg/portal/client.go +++ b/pkg/portal/client.go @@ -23,7 +23,7 @@ func GetDefaultTransport() *http.Transport { } } -func MakeDefaultClient(transport *http.Transport) *Client { +func NewDefaultClient(transport *http.Transport) *Client { if transport == nil { transport = GetDefaultTransport() } diff --git a/pkg/portal/client_test.go b/pkg/portal/client_test.go index 0bc3b62b..83a7b490 100644 --- a/pkg/portal/client_test.go +++ b/pkg/portal/client_test.go @@ -9,7 +9,7 @@ import ( func TestClientTransportAndGet(t *testing.T) { tr := GetDefaultTransport() - c := MakeDefaultClient(tr) + c := NewDefaultClient(tr) srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte("hello")) @@ -34,7 +34,7 @@ func TestClientGetNil(t *testing.T) { } func TestClientOnHeadersAndAbort(t *testing.T) { - c := MakeDefaultClient(nil) + c := NewDefaultClient(nil) called := false c.OnHeaders = func(req *http.Request) { req.Header.Set("X-Test", "ok") diff --git a/pkg/portal/password.go b/pkg/portal/password.go index bb1637df..0344639c 100644 --- a/pkg/portal/password.go +++ b/pkg/portal/password.go @@ -7,7 +7,7 @@ type Password struct { seed string } -func MakePassword(seed string) (Password, error) { +func NewPassword(seed string) (Password, error) { bytes, err := bcrypt.GenerateFromPassword([]byte(seed), 10) if err != nil { diff --git a/pkg/portal/password_test.go b/pkg/portal/password_test.go index d5b874b0..2e38377b 100644 --- a/pkg/portal/password_test.go +++ b/pkg/portal/password_test.go @@ -2,8 +2,8 @@ package portal import "testing" -func TestPassword_MakeAndValidate(t *testing.T) { - pw, err := MakePassword("secret") +func TestPassword_NewAndValidate(t *testing.T) { + pw, err := NewPassword("secret") if err != nil { t.Fatalf("unexpected error: %v", err) diff --git a/pkg/portal/stringable.go b/pkg/portal/stringable.go index 3ecc04d3..095cc821 100644 --- a/pkg/portal/stringable.go +++ b/pkg/portal/stringable.go @@ -14,7 +14,7 @@ type Stringable struct { value string } -func MakeStringable(value string) *Stringable { +func NewStringable(value string) *Stringable { return &Stringable{ value: strings.TrimSpace(value), } diff --git a/pkg/portal/stringable_test.go b/pkg/portal/stringable_test.go index 33361d76..af155167 100644 --- a/pkg/portal/stringable_test.go +++ b/pkg/portal/stringable_test.go @@ -6,7 +6,7 @@ import ( ) func TestStringable_ToLower(t *testing.T) { - s := MakeStringable(" FooBar ") + s := NewStringable(" FooBar ") if got := s.ToLower(); got != "foobar" { t.Fatalf("expected foobar got %s", got) @@ -14,7 +14,7 @@ func TestStringable_ToLower(t *testing.T) { } func TestStringable_ToSnakeCase(t *testing.T) { - s := MakeStringable("HelloWorldTest") + s := NewStringable("HelloWorldTest") if got := s.ToSnakeCase(); got != "hello_world_test" { t.Fatalf("expected hello_world_test got %s", got) @@ -22,7 +22,7 @@ func TestStringable_ToSnakeCase(t *testing.T) { } func TestStringable_ToDatetime(t *testing.T) { - s := MakeStringable("2024-06-09") + s := NewStringable("2024-06-09") dt, err := s.ToDatetime() if err != nil { @@ -35,7 +35,7 @@ func TestStringable_ToDatetime(t *testing.T) { } func TestStringable_ToDatetimeError(t *testing.T) { - s := MakeStringable("bad-date") + s := NewStringable("bad-date") if _, err := s.ToDatetime(); err == nil { t.Fatalf("expected error") @@ -44,5 +44,5 @@ func TestStringable_ToDatetimeError(t *testing.T) { func TestStringable_Dd(t *testing.T) { // just ensure it does not panic and prints - MakeStringable("test").Dd(struct{ X int }{1}) + NewStringable("test").Dd(struct{ X int }{1}) } diff --git a/pkg/portal/validator.go b/pkg/portal/validator.go index db3ca9fc..edb600d2 100644 --- a/pkg/portal/validator.go +++ b/pkg/portal/validator.go @@ -22,7 +22,7 @@ var ( func GetDefaultValidator() *Validator { defaultOnce.Do(func() { - defaultValidator = MakeValidatorFrom( + defaultValidator = NewValidatorFrom( validator.New( validator.WithRequiredStructEnabled(), ), @@ -32,7 +32,7 @@ func GetDefaultValidator() *Validator { return defaultValidator } -func MakeValidatorFrom(abstract *validator.Validate) *Validator { +func NewValidatorFrom(abstract *validator.Validate) *Validator { return &Validator{ Errors: make(map[string]interface{}), instance: abstract, @@ -81,7 +81,7 @@ func (v *Validator) parseError(validateErrs validator.ValidationErrors) { var e error for _, current := range validateErrs { - field := MakeStringable(current.Field()).ToSnakeCase() + field := NewStringable(current.Field()).ToSnakeCase() switch strings.ToLower(current.Tag()) { case "required":