feat: Add database object models and repositories for Activity, Company, Customer, Project, TimeEntry, and User with GORM integration

This commit is contained in:
2025-03-10 07:29:34 +00:00
parent 4dda83904a
commit 17cb4505be
28 changed files with 786 additions and 1 deletions
@@ -0,0 +1,15 @@
package repositories
import (
"context"
"github.com/oklog/ulid/v2"
"github.com/timetracker/backend/internal/domain/entities"
)
type ActivityRepository interface {
Get(ctx context.Context, id ulid.ULID) (*entities.Activity, error)
Create(ctx context.Context, activity *entities.Activity) error
Update(ctx context.Context, activity *entities.Activity) error
Delete(ctx context.Context, id ulid.ULID) error
}
@@ -0,0 +1,15 @@
package repositories
import (
"context"
"github.com/oklog/ulid/v2"
"github.com/timetracker/backend/internal/domain/entities"
)
type CompanyRepository interface {
Get(ctx context.Context, id ulid.ULID) (*entities.Company, error)
Create(ctx context.Context, company *entities.Company) error
Update(ctx context.Context, company *entities.Company) error
Delete(ctx context.Context, id ulid.ULID) error
}
@@ -0,0 +1,15 @@
package repositories
import (
"context"
"github.com/oklog/ulid/v2"
"github.com/timetracker/backend/internal/domain/entities"
)
type CustomerRepository interface {
Get(ctx context.Context, id ulid.ULID) (*entities.Customer, error)
Create(ctx context.Context, customer *entities.Customer) error
Update(ctx context.Context, customer *entities.Customer) error
Delete(ctx context.Context, id ulid.ULID) error
}
@@ -0,0 +1,15 @@
package repositories
import (
"context"
"github.com/oklog/ulid/v2"
"github.com/timetracker/backend/internal/domain/entities"
)
type ProjectRepository interface {
Get(ctx context.Context, id ulid.ULID) (*entities.Project, error)
Create(ctx context.Context, project *entities.Project) error
Update(ctx context.Context, project *entities.Project) error
Delete(ctx context.Context, id ulid.ULID) error
}
@@ -0,0 +1,18 @@
package repositories
import (
"context"
"time"
"github.com/oklog/ulid/v2"
"github.com/timetracker/backend/internal/domain/entities"
)
type TimeEntryRepository interface {
Get(ctx context.Context, id ulid.ULID) (*entities.TimeEntry, error)
Create(ctx context.Context, timeEntry *entities.TimeEntry) error
Update(ctx context.Context, timeEntry *entities.TimeEntry) error
Delete(ctx context.Context, id ulid.ULID) error
GetByRange(ctx context.Context, userID ulid.ULID, from time.Time, to time.Time) ([]*entities.TimeEntry, error)
}
@@ -0,0 +1,16 @@
package repositories
import (
"context"
"github.com/oklog/ulid/v2"
"github.com/timetracker/backend/internal/domain/entities"
)
type UserRepository interface {
Get(ctx context.Context, id ulid.ULID) (*entities.User, error)
Create(ctx context.Context, user *entities.User) error
Update(ctx context.Context, user *entities.User) error
Delete(ctx context.Context, id ulid.ULID) error
GetByUsername(ctx context.Context, username string) (*entities.User, error)
}