2.2 KiB
2.2 KiB
Notion Mapper
Libreria Go per mappare pagine e proprietà di Notion a struct Go in modo type-safe e configurabile.
Caratteristiche
- Type-safe: Mappa le proprietà di Notion a struct Go con generics
- Configurabile: Definisci mapping personalizzati per ogni proprietà
- Helper functions: Funzioni di utilità per estrarre valori comuni da proprietà Notion
- Supporto completo: Supporta proprietà di pagina e proprietà individuali
Installazione
go get ceccgit.duckdns.org/simone/notion-mapper
Utilizzo
package main
import (
"fmt"
"github.com/jomei/notionapi"
"ceccgit.duckdns.org/simone/notion-mapper"
)
type Task struct {
ID string
Title string
Priority string
DueDate string
}
func main() {
// Crea un nuovo mapper per la struct Task
mapper := notionmapper.NewMapper[Task]()
// Configura i mapping
mapper.
ForMember("Title", func(prop notionapi.Property, dest *Task) {
dest.Title = notionmapper.ExtractTitle(prop)
}).
ForMember("Priority", func(prop notionapi.Property, dest *Task) {
dest.Priority = notionmapper.ExtractSelect(prop)
}).
ForMember("Due Date", func(prop notionapi.Property, dest *Task) {
dest.DueDate = notionmapper.ExtractRichText(prop)
}).
ForPage(func(page notionapi.Page, dest *Task) {
dest.ID = page.ID.String()
})
// Esempio di mapping da una pagina Notion
// page := notionapi.Page{...} // la tua pagina Notion
// task := mapper.MapFrom(page)
fmt.Println("Mapper configurato!")
}
API
NewMapper[TDest]()
Crea un nuovo mapper per il tipo di destinazione specificato.
ForMember(propertyName, setter)
Configura come mappare una property specifica di Notion.
ForPage(setter)
Configura un mapping che ha accesso all'intera pagina (utile per ID, timestamps, etc.).
MapFrom(page)
Esegue il mapping da una pagina Notion alla struct di destinazione.
Helper Functions
ExtractTitle(prop)- Estrae testo da TitlePropertyExtractRichText(prop)- Estrae testo da RichTextPropertyExtractNumber(prop)- Estrae numero da NumberPropertyExtractSelect(prop)- Estrae valore da SelectProperty
Dipendenze
github.com/jomei/notionapiv1.13.3
Licenza
MIT