Commit 1c90b2ad by mhmdhaekal

feat(initialize): Initialize repository

0 parents
.env
/bin
BINDIR := bin
APPS := $(notdir $(wildcard cmd/*))
BUILD_TARGETS := $(filter-out build clean, $(MAKECMDGOALS))
.PHONY: build clean default
default: build
build:
@mkdir -p $(BINDIR)
@if [ -z "$(strip $(BUILD_TARGETS))" ]; then \
echo "No specific app provided. Building all apps..."; \
for app in $(APPS); do \
echo "Building $$app..."; \
go build -o $(BINDIR)/$$app ./cmd/$$app; \
done; \
else \
for arg in $(BUILD_TARGETS); do \
if echo $$arg | grep -q -- '-$$'; then \
prefix=$${arg%-}; \
echo "Building all apps starting with '$$prefix'..."; \
for app in $(APPS); do \
case "$$app" in \
$$prefix*) \
echo "Building $$app..."; \
go build -o $(BINDIR)/$$app ./cmd/$$app;; \
esac; \
done; \
else \
echo "Building $$arg..."; \
go build -o $(BINDIR)/$$arg ./cmd/$$arg; \
fi; \
done; \
fi
clean:
@echo "Cleaning up binaries..."
@rm -rf $(BINDIR)
codecheck:
@echo "checking code. Running vet and fmt"
@go vet ./...
@go fmt ./...
test:
@echo "Running test"
@go test ./...
%:
@:
package main
import (
"fmt"
"os"
"gorm.io/driver/postgres"
"gorm.io/gorm"
"ui.ac.id/dtd/go-webserver-boilerplate/internal/repository/postgresql"
"ui.ac.id/dtd/go-webserver-boilerplate/internal/service"
)
func main() {
db, err := gorm.Open(postgres.Open(""), &gorm.Config{})
if err != nil {
fmt.Errorf("Failed to connect to database %v", err)
os.Exit(1)
}
userRepository := postgresql.NewPostgresUserRepository(db)
_ = service.NewUserService(userRepository)
}
module ui.ac.id/dtd/go-webserver-boilerplate
go 1.24.0
require (
github.com/jackc/pgpassfile v1.0.0 // indirect
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
github.com/jackc/pgx/v5 v5.7.2 // indirect
github.com/jackc/puddle/v2 v2.2.2 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.5 // indirect
golang.org/x/crypto v0.33.0 // indirect
golang.org/x/sync v0.11.0 // indirect
golang.org/x/text v0.22.0 // indirect
gorm.io/driver/postgres v1.5.11 // indirect
gorm.io/gorm v1.25.12 // indirect
)
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM=
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo=
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
github.com/jackc/pgx/v5 v5.7.2 h1:mLoDLV6sonKlvjIEsV56SkWNCnuNv531l94GaIzO+XI=
github.com/jackc/pgx/v5 v5.7.2/go.mod h1:ncY89UGWxg82EykZUwSpUKEfccBGGYq1xjrOpsbsfGQ=
github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo=
github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/driver/postgres v1.5.11 h1:ubBVAfbKEUld/twyKZ0IYn9rSQh448EdelLYk9Mv314=
gorm.io/driver/postgres v1.5.11/go.mod h1:DX3GReXH+3FPWGrrgffdvCk3DQ1dwDPdmbenSkweRGI=
gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8=
gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ=
package domain
type User struct {
ID int
Name string
IdentityNumber string
Email string
}
type UserService interface {
}
type UserRepository interface {
}
package handler
import "ui.ac.id/dtd/go-webserver-boilerplate/internal/domain"
type UserHandler struct {
service *domain.UserService
}
package postgresql
import "gorm.io/gorm"
type PostgresUserRepository struct {
db *gorm.DB
}
func NewPostgresUserRepository(db *gorm.DB) *PostgresUserRepository {
return &PostgresUserRepository{
db: db,
}
}
package service
import "ui.ac.id/dtd/go-webserver-boilerplate/internal/domain"
type UserService struct {
userRepository domain.UserRepository
}
func NewUserService(userRepository domain.UserRepository) *UserService {
return &UserService{
userRepository: userRepository,
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!