30 lines
1.1 KiB
Go
30 lines
1.1 KiB
Go
package repository
|
|
|
|
import "github.com/ajaxray/geek-life/model"
|
|
|
|
// UserRepository interface defines methods for user data access
|
|
type UserRepository interface {
|
|
GetByID(id int64) (*model.User, error)
|
|
GetByUsername(tenantID int64, username string) (*model.User, error)
|
|
GetByEmail(tenantID int64, email string) (*model.User, error)
|
|
Create(tenantID int64, username, email, passwordHash string) (*model.User, error)
|
|
Update(user *model.User) error
|
|
Delete(user *model.User) error
|
|
}
|
|
|
|
// TenantRepository interface defines methods for tenant data access
|
|
type TenantRepository interface {
|
|
GetByID(id int64) (*model.Tenant, error)
|
|
GetByName(name string) (*model.Tenant, error)
|
|
Create(name string) (*model.Tenant, error)
|
|
Update(tenant *model.Tenant) error
|
|
Delete(tenant *model.Tenant) error
|
|
}
|
|
|
|
// SessionRepository interface defines methods for session management
|
|
type SessionRepository interface {
|
|
GetByToken(token string) (*model.UserSession, error)
|
|
Create(userID int64, token string, expiresAt int64) (*model.UserSession, error)
|
|
Delete(session *model.UserSession) error
|
|
DeleteExpired() error
|
|
} |