func (m *Bookmark) Equals(m2 Model) bool {
	if m2, ok := m2.(*Bookmark); ok {
		return m.LocationID == m2.LocationID &&
			m.PublicationLocationID == m2.PublicationLocationID &&
			m.Slot == m2.Slot &&
			m.Title == m2.Title &&
			m.Snippet == m2.Snippet &&
			m.BlockType == m2.BlockType &&
			m.BlockIdentifier == m2.BlockIdentifier
	}
	return false
}
Equals checks if the Bookmark is equal to the given one. The
check won't include the BookmarkID
package model
import (
	"database/sql"
	"encoding/json"
	"strconv"
	"strings"
)
type Bookmark struct {
	BookmarkID            int
	LocationID            int
	PublicationLocationID int
	Slot                  int
	Title                 string
	Snippet               sql.NullString
	BlockType             int
	BlockIdentifier       sql.NullInt32
}
func (m *Bookmark) ID() int {
	return m.BookmarkID
}
func (m *Bookmark) SetID(id int) {
	m.BookmarkID = id
}
func (m *Bookmark) UniqueKey() string {
	var sb strings.Builder
	sb.Grow(6)
	sb.WriteString(strconv.FormatInt(int64(m.PublicationLocationID), 10))
	sb.WriteString("_")
	sb.WriteString(strconv.FormatInt(int64(m.Slot), 10))
	return sb.String()
}