package storage import ( "database/sql/driver" "errors" ) // For pretty printing during debug // If `go generate` is run, it'll generate the necessary function and data for pretty printing //go:generate stringer -type NoteTarget // What feed a note is targeting (public, home, followers or dm) type NoteTarget uint8 const ( // The note is intended for the public NOTE_TARGET_PUBLIC NoteTarget = 0 // The note is intended only for the home screen // not really any idea what the difference is compared to public // Maybe home notes don't show up on the server feed but still for everyone's home feed if it reaches them via follow or boost NOTE_TARGET_HOME NoteTarget = 1 << iota // The note is intended only for followers NOTE_TARGET_FOLLOWERS // The note is intended only for a DM to one or more targets NOTE_TARGET_DM ) // Converts the NoteTarget value into a type the DB can use func (n *NoteTarget) Value() (driver.Value, error) { return n, nil } // Converts the raw value from the DB into a NoteTarget func (n *NoteTarget) Scan(value any) error { vBig, ok := value.(int64) if !ok { return errors.New("not an int64") } *n = NoteTarget(vBig) return nil }