| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- package repository
- import (
- "context"
- dbent "github.com/Wei-Shaw/sub2api/ent"
- "github.com/Wei-Shaw/sub2api/ent/compositemodelroute"
- "github.com/Wei-Shaw/sub2api/internal/service"
- )
- type compositeModelRouteRepository struct {
- client *dbent.Client
- }
- func NewCompositeModelRouteRepository(client *dbent.Client) service.CompositeModelRouteRepository {
- return &compositeModelRouteRepository{client: client}
- }
- func (r *compositeModelRouteRepository) ListByGroup(ctx context.Context, groupID int64, includeDisabled bool) ([]service.CompositeModelRoute, error) {
- q := clientFromContext(ctx, r.client).CompositeModelRoute.Query().
- Where(compositemodelroute.GroupIDEQ(groupID)).
- Order(
- dbent.Asc(compositemodelroute.FieldPriority),
- dbent.Asc(compositemodelroute.FieldID),
- )
- if !includeDisabled {
- q = q.Where(compositemodelroute.EnabledEQ(true))
- }
- rows, err := q.All(ctx)
- if err != nil {
- return nil, err
- }
- out := make([]service.CompositeModelRoute, 0, len(rows))
- for _, row := range rows {
- out = append(out, *compositeModelRouteEntityToService(row))
- }
- return out, nil
- }
- func (r *compositeModelRouteRepository) Create(ctx context.Context, route *service.CompositeModelRoute) error {
- if route == nil {
- return service.ErrCompositeRouteNotFound
- }
- created, err := clientFromContext(ctx, r.client).CompositeModelRoute.Create().
- SetGroupID(route.GroupID).
- SetPublicModel(route.PublicModel).
- SetMatchType(route.MatchType).
- SetTargetPlatform(route.TargetPlatform).
- SetUpstreamModel(route.UpstreamModel).
- SetEndpoint(route.Endpoint).
- SetPriority(route.Priority).
- SetEnabled(route.Enabled).
- SetNotes(route.Notes).
- Save(ctx)
- if err != nil {
- return translatePersistenceError(err, nil, service.ErrCompositeRouteExists)
- }
- *route = *compositeModelRouteEntityToService(created)
- return nil
- }
- func (r *compositeModelRouteRepository) Update(ctx context.Context, route *service.CompositeModelRoute) error {
- if route == nil {
- return service.ErrCompositeRouteNotFound
- }
- updated, err := clientFromContext(ctx, r.client).CompositeModelRoute.UpdateOneID(route.ID).
- SetPublicModel(route.PublicModel).
- SetMatchType(route.MatchType).
- SetTargetPlatform(route.TargetPlatform).
- SetUpstreamModel(route.UpstreamModel).
- SetEndpoint(route.Endpoint).
- SetPriority(route.Priority).
- SetEnabled(route.Enabled).
- SetNotes(route.Notes).
- Save(ctx)
- if err != nil {
- return translatePersistenceError(err, service.ErrCompositeRouteNotFound, service.ErrCompositeRouteExists)
- }
- *route = *compositeModelRouteEntityToService(updated)
- return nil
- }
- func (r *compositeModelRouteRepository) Delete(ctx context.Context, id int64) error {
- err := clientFromContext(ctx, r.client).CompositeModelRoute.DeleteOneID(id).Exec(ctx)
- return translatePersistenceError(err, service.ErrCompositeRouteNotFound, nil)
- }
- func (r *compositeModelRouteRepository) DeleteByGroup(ctx context.Context, groupID int64) error {
- _, err := clientFromContext(ctx, r.client).CompositeModelRoute.Delete().
- Where(compositemodelroute.GroupIDEQ(groupID)).
- Exec(ctx)
- return err
- }
- func compositeModelRouteEntityToService(row *dbent.CompositeModelRoute) *service.CompositeModelRoute {
- if row == nil {
- return nil
- }
- return &service.CompositeModelRoute{
- ID: row.ID,
- GroupID: row.GroupID,
- PublicModel: row.PublicModel,
- MatchType: row.MatchType,
- TargetPlatform: row.TargetPlatform,
- UpstreamModel: row.UpstreamModel,
- Endpoint: row.Endpoint,
- Priority: row.Priority,
- Enabled: row.Enabled,
- Notes: derefString(row.Notes),
- CreatedAt: row.CreatedAt,
- UpdatedAt: row.UpdatedAt,
- }
- }
|