mirror of
				https://github.com/Theodor-Springmann-Stiftung/musenalm.git
				synced 2025-10-29 09:15:33 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package dbmodels
 | |
| 
 | |
| import (
 | |
| 	"slices"
 | |
| 
 | |
| 	"github.com/pocketbase/dbx"
 | |
| 	"github.com/pocketbase/pocketbase/core"
 | |
| 	"golang.org/x/text/collate"
 | |
| 	"golang.org/x/text/language"
 | |
| )
 | |
| 
 | |
| func AllPlaces(app core.App) ([]*Place, error) {
 | |
| 	places := []*Place{}
 | |
| 	err := app.RecordQuery(PLACES_TABLE).
 | |
| 		OrderBy(PLACES_NAME_FIELD).
 | |
| 		All(&places)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 
 | |
| 	return places, nil
 | |
| }
 | |
| 
 | |
| func SortPlacesByName(places []*Place) {
 | |
| 	collator := collate.New(language.German)
 | |
| 	slices.SortFunc(places, func(i, j *Place) int {
 | |
| 		return collator.CompareString(i.Name(), j.Name())
 | |
| 	})
 | |
| }
 | |
| 
 | |
| func PlaceForId(app core.App, id string) (*Place, error) {
 | |
| 	place := &Place{}
 | |
| 	err := app.RecordQuery(PLACES_TABLE).
 | |
| 		Where(dbx.HashExp{ID_FIELD: id}).
 | |
| 		One(place)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	return place, nil
 | |
| }
 | |
| 
 | |
| func PlacesForEntry(app core.App, entry *Entry) (map[string]*Place, error) {
 | |
| 	ids := []any{}
 | |
| 	places := map[string]*Place{}
 | |
| 
 | |
| 	for _, r := range entry.Places() {
 | |
| 		ids = append(ids, r)
 | |
| 	}
 | |
| 	if len(ids) == 0 {
 | |
| 		return places, nil
 | |
| 	}
 | |
| 
 | |
| 	p := []*Place{}
 | |
| 	err := app.RecordQuery(PLACES_TABLE).
 | |
| 		Where(dbx.HashExp{ID_FIELD: ids}).
 | |
| 		All(&p)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 
 | |
| 	for _, place := range p {
 | |
| 		places[place.Id] = place
 | |
| 	}
 | |
| 
 | |
| 	return places, nil
 | |
| }
 | 
