mirror of
				https://github.com/Theodor-Springmann-Stiftung/musenalm.git
				synced 2025-10-31 10:15:32 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			138 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package dbmodels
 | |
| 
 | |
| import (
 | |
| 	"strconv"
 | |
| 
 | |
| 	"github.com/pocketbase/dbx"
 | |
| 	"github.com/pocketbase/pocketbase/core"
 | |
| )
 | |
| 
 | |
| type EntriesAgents map[string][]*REntriesAgents
 | |
| 
 | |
| func EntriesForID(app core.App, query int) ([]*Entry, error) {
 | |
| 	entries := []*Entry{}
 | |
| 	err := app.RecordQuery(ENTRIES_TABLE).
 | |
| 		Where(dbx.HashExp{MUSENALMID_FIELD: strconv.Itoa(query)}).
 | |
| 		All(&entries)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 
 | |
| 	return entries, nil
 | |
| }
 | |
| 
 | |
| func YearsForEntries(app core.App) ([]int, error) {
 | |
| 	rec := []core.Record{}
 | |
| 	err := app.RecordQuery(ENTRIES_TABLE).
 | |
| 		Select(YEAR_FIELD + " AS id").
 | |
| 		Distinct(true).
 | |
| 		OrderBy("id").
 | |
| 		All(&rec)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 
 | |
| 	years := []int{}
 | |
| 	for _, r := range rec {
 | |
| 		years = append(years, r.GetInt("id"))
 | |
| 	}
 | |
| 
 | |
| 	return years, nil
 | |
| }
 | |
| 
 | |
| func EntriesForYear(app core.App, year int) ([]*Entry, error) {
 | |
| 	entries := []*Entry{}
 | |
| 	err := app.RecordQuery(ENTRIES_TABLE).
 | |
| 		Where(dbx.HashExp{YEAR_FIELD: year}).
 | |
| 		All(&entries)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 
 | |
| 	return entries, nil
 | |
| }
 | |
| 
 | |
| func EntriesForAgent(app core.App, agentId string) ([]*Entry, EntriesAgents, error) {
 | |
| 	relations := []*core.Record{}
 | |
| 	err := app.RecordQuery(RelationTableName(ENTRIES_TABLE, AGENTS_TABLE)).
 | |
| 		Where(dbx.HashExp{AGENTS_TABLE: agentId}).
 | |
| 		All(&relations)
 | |
| 	if err != nil {
 | |
| 		return nil, nil, err
 | |
| 	}
 | |
| 
 | |
| 	app.ExpandRecords(relations, []string{ENTRIES_TABLE}, nil)
 | |
| 	entries := []*Entry{}
 | |
| 	for _, r := range relations {
 | |
| 		record := r.ExpandedOne(ENTRIES_TABLE)
 | |
| 		if record == nil {
 | |
| 			continue
 | |
| 		}
 | |
| 		entries = append(entries, NewEntry(record))
 | |
| 	}
 | |
| 
 | |
| 	agents := map[string][]*REntriesAgents{}
 | |
| 	for _, r := range relations {
 | |
| 		agent := NewREntriesAgents(r)
 | |
| 		agents[agent.Entry()] = append(agents[agent.Entry()], agent)
 | |
| 	}
 | |
| 
 | |
| 	return entries, agents, nil
 | |
| }
 | |
| 
 | |
| func EntriesForPlace(app core.App, placeId string) ([]*Entry, error) {
 | |
| 	entries := []*Entry{}
 | |
| 	err := app.RecordQuery(ENTRIES_TABLE).
 | |
| 		Where(dbx.Like(PLACES_TABLE, placeId).Match(true, true)).
 | |
| 		All(&entries)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 
 | |
| 	return entries, nil
 | |
| }
 | |
| 
 | |
| func EntryForId(app core.App, id string) (*Entry, error) {
 | |
| 	entry := &Entry{}
 | |
| 	err := app.RecordQuery(ENTRIES_TABLE).
 | |
| 		Where(dbx.HashExp{ID_FIELD: id}).
 | |
| 		One(entry)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	return entry, nil
 | |
| }
 | |
| 
 | |
| func EntryForMusenalmID(app core.App, id string) (*Entry, error) {
 | |
| 	entry := &Entry{}
 | |
| 	err := app.RecordQuery(ENTRIES_TABLE).
 | |
| 		Where(dbx.HashExp{MUSENALMID_FIELD: id}).
 | |
| 		One(entry)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	return entry, nil
 | |
| }
 | |
| 
 | |
| func EntriesForContents(app core.App, contents []*Content) (map[string]*Entry, error) {
 | |
| 	cids := []any{}
 | |
| 	for _, c := range contents {
 | |
| 		cids = append(cids, c.Entry())
 | |
| 	}
 | |
| 
 | |
| 	entries := []*Entry{}
 | |
| 	err := app.RecordQuery(ENTRIES_TABLE).
 | |
| 		Where(dbx.HashExp{ID_FIELD: cids}).
 | |
| 		All(&entries)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 
 | |
| 	entriesMap := make(map[string]*Entry, len(entries))
 | |
| 	for _, e := range entries {
 | |
| 		entriesMap[e.Id] = e
 | |
| 	}
 | |
| 
 | |
| 	return entriesMap, nil
 | |
| }
 | 
