package persistenceimport ("context""errors""time". "github.com/Masterminds/squirrel""github.com/deluan/rest""github.com/navidrome/navidrome/model""github.com/navidrome/navidrome/model/id""github.com/pocketbase/dbx")type radioRepository struct {sqlRepository}func NewRadioRepository(ctx context.Context, db dbx.Builder) model.RadioRepository {r := &radioRepository{}r.ctx = ctxr.db = dbr.registerModel(&model.Radio{}, map[string]filterFunc{"name": containsFilter("name"),})return r}func (r *radioRepository) isPermitted() bool {user := loggedUser(r.ctx)return user.IsAdmin}func (r *radioRepository) CountAll(options ...model.QueryOptions) (int64, error) {sql := r.newSelect()return r.count(sql, options...)}func (r *radioRepository) Delete(id string) error {if !r.isPermitted() {return rest.ErrPermissionDenied}return r.delete(Eq{"id": id})}func (r *radioRepository) Get(id string) (*model.Radio, error) {sel := r.newSelect().Where(Eq{"id": id}).Columns("*")res := model.Radio{}err := r.queryOne(sel, &res)return &res, err}func (r *radioRepository) GetAll(options ...model.QueryOptions) (model.Radios, error) {sel := r.newSelect(options...).Columns("*")res := model.Radios{}err := r.queryAll(sel, &res)return res, err}func (r *radioRepository) Put(radio *model.Radio, colsToUpdate ...string) error {if !r.isPermitted() {return rest.ErrPermissionDenied}radio.UpdatedAt = time.Now()if radio.ID == "" {radio.CreatedAt = time.Now()radio.ID = id.NewRandom()}if len(colsToUpdate) > 0 {colsToUpdate = append(colsToUpdate, "UpdatedAt")}_, err := r.put(radio.ID, radio, colsToUpdate...)return err}func (r *radioRepository) Count(options ...rest.QueryOptions) (int64, error) {return r.CountAll(r.parseRestOptions(r.ctx, options...))}func (r *radioRepository) EntityName() string {return "radio"}func (r *radioRepository) NewInstance() any {return &model.Radio{}}func (r *radioRepository) Read(id string) (any, error) {return r.Get(id)}func (r *radioRepository) ReadAll(options ...rest.QueryOptions) (any, error) {return r.GetAll(r.parseRestOptions(r.ctx, options...))}func (r *radioRepository) Save(entity any) (string, error) {t := entity.(*model.Radio)if !r.isPermitted() {return "", rest.ErrPermissionDenied}err := r.Put(t)if errors.Is(err, model.ErrNotFound) {return "", rest.ErrNotFound}return t.ID, err}func (r *radioRepository) Update(id string, entity any, cols ...string) error {t := entity.(*model.Radio)t.ID = idif !r.isPermitted() {return rest.ErrPermissionDenied}err := r.Put(t)if errors.Is(err, model.ErrNotFound) {return rest.ErrNotFound}return err}var _ model.RadioRepository = (*radioRepository)(nil)var _ rest.Repository = (*radioRepository)(nil)var _ rest.Persistable = (*radioRepository)(nil)