mirror of
				https://github.com/Theodor-Springmann-Stiftung/musenalm.git
				synced 2025-10-29 09:15:33 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package migrations
 | |
| 
 | |
| import (
 | |
| 	"github.com/Theodor-Springmann-Stiftung/musenalm/dbmodels"
 | |
| 	"github.com/pocketbase/pocketbase/core"
 | |
| 	m "github.com/pocketbase/pocketbase/migrations"
 | |
| )
 | |
| 
 | |
| func init() {
 | |
| 	m.Register(func(app core.App) error {
 | |
| 		err := createFTS5(app, dbmodels.AGENTS_TABLE, dbmodels.AGENTS_FTS5_FIELDS)
 | |
| 		if err != nil {
 | |
| 			app.Logger().Error("Error creating FTS5 table for agents", "error", err)
 | |
| 		}
 | |
| 
 | |
| 		err = createFTS5(app, dbmodels.PLACES_TABLE, dbmodels.PLACES_FTS5_FIELDS)
 | |
| 		if err != nil {
 | |
| 			app.Logger().Error("Error creating FTS5 table for places", "error", err)
 | |
| 		}
 | |
| 
 | |
| 		err = createFTS5(app, dbmodels.SERIES_TABLE, dbmodels.SERIES_FTS5_FIELDS)
 | |
| 		if err != nil {
 | |
| 			app.Logger().Error("Error creating FTS5 table for series", "error", err)
 | |
| 		}
 | |
| 
 | |
| 		err = createFTS5(app, dbmodels.ITEMS_TABLE, dbmodels.ITEMS_FTS5_FIELDS)
 | |
| 		if err != nil {
 | |
| 			app.Logger().Error("Error creating FTS5 table for items", "error", err)
 | |
| 		}
 | |
| 
 | |
| 		err = createFTS5(app, dbmodels.ENTRIES_TABLE, dbmodels.ENTRIES_FTS5_FIELDS)
 | |
| 		if err != nil {
 | |
| 			app.Logger().Error("Error creating FTS5 table for entries", "error", err)
 | |
| 		}
 | |
| 
 | |
| 		err = createFTS5(app, dbmodels.CONTENTS_TABLE, dbmodels.CONTENTS_FTS5_FIELDS)
 | |
| 		if err != nil {
 | |
| 			app.Logger().Error("Error creating FTS5 table for contents", "error", err)
 | |
| 		}
 | |
| 
 | |
| 		return nil
 | |
| 	}, func(app core.App) error {
 | |
| 		deleteTable(app, dbmodels.FTS5_PREFIX+dbmodels.AGENTS_TABLE)
 | |
| 		deleteTable(app, dbmodels.FTS5_PREFIX+dbmodels.PLACES_TABLE)
 | |
| 		deleteTable(app, dbmodels.FTS5_PREFIX+dbmodels.SERIES_TABLE)
 | |
| 		deleteTable(app, dbmodels.FTS5_PREFIX+dbmodels.ITEMS_TABLE)
 | |
| 		deleteTable(app, dbmodels.FTS5_PREFIX+dbmodels.ENTRIES_TABLE)
 | |
| 		deleteTable(app, dbmodels.FTS5_PREFIX+dbmodels.CONTENTS_TABLE)
 | |
| 		return nil
 | |
| 	})
 | |
| }
 | |
| 
 | |
| func createFTS5(app core.App, table string, fields []string) error {
 | |
| 	query := dbmodels.CreateFTS5TableQuery(
 | |
| 		table,
 | |
| 		fields...,
 | |
| 	)
 | |
| 
 | |
| 	_, err := app.DB().NewQuery(query).Execute()
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 
 | |
| 	return nil
 | |
| 
 | |
| }
 | |
| 
 | |
| func deleteTable(app core.App, table string) error {
 | |
| 	query := "DROP TABLE IF EXISTS " + table
 | |
| 
 | |
| 	_, err := app.DB().NewQuery(query).Execute()
 | |
| 	if err != nil {
 | |
| 		return err
 | |
| 	}
 | |
| 
 | |
| 	return nil
 | |
| }
 | 
