summaryrefslogtreecommitdiff
path: root/content/item.go
diff options
context:
space:
mode:
Diffstat (limited to 'content/item.go')
-rw-r--r--content/item.go25
1 files changed, 23 insertions, 2 deletions
diff --git a/content/item.go b/content/item.go
index f4a5489..0077dc6 100644
--- a/content/item.go
+++ b/content/item.go
@@ -18,7 +18,28 @@ func (i Item) Touch() int64 {
return i.Updated
}
-// ContentID partially implements the Sortable interface
-func (i Item) ContentID() int {
+// ItemID partially implements the Sortable interface
+func (i Item) ItemID() int {
return i.ID
}
+
+// SetSlug sets the item's slug for its URL
+func (i *Item) SetSlug(slug string) {
+ i.Slug = slug
+}
+
+// Sluggable makes a struct locatable by URL with it's own path
+// As an Item implementing Sluggable, slugs may overlap. If this is an issue,
+// make your content struct (or one which imbeds Item) implement Sluggable
+// and it will override the slug created by Item's SetSlug with your struct's
+type Sluggable interface {
+ SetSlug(string)
+}
+
+// Identifiable enables a struct to have its ID set. Typically this is done
+// to set an ID to -1 indicating it is new for DB inserts, since by default
+// a newly initialized struct would have an ID of 0, the int zero-value, and
+// BoltDB's starting key per bucket is 0, thus overwriting the first record.
+type Identifiable interface {
+ SetContentID(int)
+}