// Copyright (C) 2024 Mya Pitzeruse // SPDX-License-Identifier: MIT package crud import ( "context" "gorm.io/gorm" ) // CreateFunc defines the method signature of the function returned by the Creator method. It simplifies the operation // of creating records in the database. type CreateFunc[T any] func(ctx context.Context, record *T) error // Creator returns a function that can create data using gorm db. func Creator[T any](db *gorm.DB) CreateFunc[T] { prototype := new(T) return func(ctx context.Context, record *T) error { return Transaction(ctx, db). Model(prototype). Create(record). Error } }