diff --git a/api/openapi.yaml b/api/openapi.yaml index 237b513f4..292f889c3 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -1921,6 +1921,7 @@ components: type: string enum: - draft + - unlisted - review - published diff --git a/app/resources/datagraph/mapping.go b/app/resources/datagraph/mapping.go index 6159ec8d1..d7749e616 100644 --- a/app/resources/datagraph/mapping.go +++ b/app/resources/datagraph/mapping.go @@ -7,7 +7,7 @@ import ( "github.com/Southclaws/storyden/app/resources/asset" "github.com/Southclaws/storyden/app/resources/content" - "github.com/Southclaws/storyden/app/resources/post" + "github.com/Southclaws/storyden/app/resources/visibility" "github.com/Southclaws/storyden/internal/ent" ) @@ -38,7 +38,7 @@ func NodeFromModel(c *ent.Node) (*Node, error) { return nil, fault.Wrap(err) } - visibility, err := post.NewVisibility(c.Visibility.String()) + visibility, err := visibility.NewVisibility(c.Visibility.String()) if err != nil { return nil, fault.Wrap(err) } diff --git a/app/resources/datagraph/node.go b/app/resources/datagraph/node.go index 5d7252da5..d4cdfc47f 100644 --- a/app/resources/datagraph/node.go +++ b/app/resources/datagraph/node.go @@ -8,7 +8,7 @@ import ( "github.com/Southclaws/storyden/app/resources/asset" "github.com/Southclaws/storyden/app/resources/content" - "github.com/Southclaws/storyden/app/resources/post" + "github.com/Southclaws/storyden/app/resources/visibility" ) type ( @@ -39,7 +39,7 @@ type Node struct { Content opt.Optional[content.Rich] Owner Profile Parent opt.Optional[Node] - Visibility post.Visibility + Visibility visibility.Visibility Properties any Nodes []*Node diff --git a/app/resources/datagraph/node/node.go b/app/resources/datagraph/node/node.go index cd90e1d51..8ab809a56 100644 --- a/app/resources/datagraph/node/node.go +++ b/app/resources/datagraph/node/node.go @@ -9,7 +9,7 @@ import ( "github.com/Southclaws/storyden/app/resources/asset" "github.com/Southclaws/storyden/app/resources/content" "github.com/Southclaws/storyden/app/resources/datagraph" - "github.com/Southclaws/storyden/app/resources/post" + "github.com/Southclaws/storyden/app/resources/visibility" "github.com/Southclaws/storyden/internal/ent" "github.com/Southclaws/storyden/internal/ent/node" ) @@ -89,9 +89,9 @@ func WithParent(v datagraph.NodeID) Option { } } -func WithVisibility(v post.Visibility) Option { +func WithVisibility(v visibility.Visibility) Option { return func(c *ent.NodeMutation) { - c.SetVisibility(node.Visibility(v.ToEnt())) + c.SetVisibility(node.Visibility(v.String())) } } diff --git a/app/resources/datagraph/node_search/search.go b/app/resources/datagraph/node_search/search.go index e8a07aa5b..47cbf3460 100644 --- a/app/resources/datagraph/node_search/search.go +++ b/app/resources/datagraph/node_search/search.go @@ -10,7 +10,7 @@ import ( "github.com/jmoiron/sqlx" "github.com/Southclaws/storyden/app/resources/datagraph" - "github.com/Southclaws/storyden/app/resources/post" + "github.com/Southclaws/storyden/app/resources/visibility" "github.com/Southclaws/storyden/internal/ent" "github.com/Southclaws/storyden/internal/ent/node" ) @@ -21,7 +21,7 @@ type Search interface { type query struct { qs string - visibility []post.Visibility + visibility []visibility.Visibility } type Option func(*query) @@ -32,7 +32,7 @@ func WithNameContains(s string) Option { } } -func WithVisibility(v []post.Visibility) Option { +func WithVisibility(v []visibility.Visibility) Option { return func(q *query) { q.visibility = v } diff --git a/app/resources/datagraph/node_traversal/db.go b/app/resources/datagraph/node_traversal/db.go index b53736b40..457cb77e7 100644 --- a/app/resources/datagraph/node_traversal/db.go +++ b/app/resources/datagraph/node_traversal/db.go @@ -18,7 +18,7 @@ import ( asset_repo "github.com/Southclaws/storyden/app/resources/asset" "github.com/Southclaws/storyden/app/resources/content" "github.com/Southclaws/storyden/app/resources/datagraph" - "github.com/Southclaws/storyden/app/resources/post" + "github.com/Southclaws/storyden/app/resources/visibility" "github.com/Southclaws/storyden/internal/ent" "github.com/Southclaws/storyden/internal/ent/account" "github.com/Southclaws/storyden/internal/ent/asset" @@ -50,7 +50,7 @@ func (d *database) Root(ctx context.Context, fs ...Filter) ([]*datagraph.Node, e } if len(f.visibility) > 0 { - visibilityTypes := dt.Map(f.visibility, func(v post.Visibility) node.Visibility { + visibilityTypes := dt.Map(f.visibility, func(v visibility.Visibility) node.Visibility { return node.Visibility(v.String()) }) @@ -122,25 +122,25 @@ order by ` type subtreeRow struct { - NodeId xid.ID `db:"node_id"` - NodeCreatedAt time.Time `db:"node_created_at"` - NodeUpdatedAt time.Time `db:"node_updated_at"` - NodeDeletedAt *time.Time `db:"node_deleted_at"` - NodeName string `db:"node_name"` - NodeSlug string `db:"node_slug"` - NodeParentNodeId xid.ID `db:"node_parent_node_id"` - NodeAccountId xid.ID `db:"node_account_id"` - NodeVisibility post.Visibility `db:"node_visibility"` - NodeProperties any `db:"node_properties"` - OwnerId xid.ID `db:"owner_id"` - OwnerCreatedAt time.Time `db:"owner_created_at"` - OwnerUpdatedAt time.Time `db:"owner_updated_at"` - OwnerDeletedAt *time.Time `db:"owner_deleted_at"` - OwnerHandle string `db:"owner_handle"` - OwnerName string `db:"owner_name"` - OwnerBio *string `db:"owner_bio"` - OwnerAdmin bool `db:"owner_admin"` - Depth int `db:"depth"` + NodeId xid.ID `db:"node_id"` + NodeCreatedAt time.Time `db:"node_created_at"` + NodeUpdatedAt time.Time `db:"node_updated_at"` + NodeDeletedAt *time.Time `db:"node_deleted_at"` + NodeName string `db:"node_name"` + NodeSlug string `db:"node_slug"` + NodeParentNodeId xid.ID `db:"node_parent_node_id"` + NodeAccountId xid.ID `db:"node_account_id"` + NodeVisibility visibility.Visibility `db:"node_visibility"` + NodeProperties any `db:"node_properties"` + OwnerId xid.ID `db:"owner_id"` + OwnerCreatedAt time.Time `db:"owner_created_at"` + OwnerUpdatedAt time.Time `db:"owner_updated_at"` + OwnerDeletedAt *time.Time `db:"owner_deleted_at"` + OwnerHandle string `db:"owner_handle"` + OwnerName string `db:"owner_name"` + OwnerBio *string `db:"owner_bio"` + OwnerAdmin bool `db:"owner_admin"` + Depth int `db:"depth"` } func fromRow(r subtreeRow) (*datagraph.Node, error) { @@ -244,7 +244,7 @@ func (d *database) Subtree(ctx context.Context, id opt.Optional[datagraph.NodeID if len(f.visibility) > 0 { return lo.Contains(f.visibility, n.Visibility) } else { - return n.Visibility == post.VisibilityPublished + return n.Visibility == visibility.VisibilityPublished } }) diff --git a/app/resources/datagraph/node_traversal/traversal.go b/app/resources/datagraph/node_traversal/traversal.go index 0765af109..84733e1ba 100644 --- a/app/resources/datagraph/node_traversal/traversal.go +++ b/app/resources/datagraph/node_traversal/traversal.go @@ -5,7 +5,7 @@ import ( "github.com/Southclaws/opt" "github.com/Southclaws/storyden/app/resources/datagraph" - "github.com/Southclaws/storyden/app/resources/post" + "github.com/Southclaws/storyden/app/resources/visibility" ) type Repository interface { @@ -16,7 +16,7 @@ type Repository interface { type filters struct { accountSlug *string - visibility []post.Visibility + visibility []visibility.Visibility depth *uint } @@ -28,7 +28,7 @@ func WithOwner(v string) Filter { } } -func WithVisibility(v ...post.Visibility) Filter { +func WithVisibility(v ...visibility.Visibility) Filter { return func(f *filters) { f.visibility = v } diff --git a/app/resources/post/status.go b/app/resources/post/status.go deleted file mode 100644 index eae6428ea..000000000 --- a/app/resources/post/status.go +++ /dev/null @@ -1,21 +0,0 @@ -package post - -import "github.com/Southclaws/storyden/internal/ent/post" - -//go:generate go run -mod=mod github.com/Southclaws/enumerator - -type visibilityEnum string - -const ( - visibilityDraft visibilityEnum = "draft" - visibilityReview visibilityEnum = "review" - visibilityPublished visibilityEnum = "published" -) - -func NewVisibilityFromEnt(in post.Visibility) Visibility { - return Visibility{visibilityEnum(in)} -} - -func (s Visibility) ToEnt() post.Visibility { - return post.Visibility(s.v) -} diff --git a/app/resources/seed/post.go b/app/resources/seed/post.go index 4cac115f2..83bd423d0 100644 --- a/app/resources/seed/post.go +++ b/app/resources/seed/post.go @@ -19,6 +19,7 @@ import ( "github.com/Southclaws/storyden/app/resources/react" "github.com/Southclaws/storyden/app/resources/reply" "github.com/Southclaws/storyden/app/resources/thread" + "github.com/Southclaws/storyden/app/resources/visibility" "github.com/Southclaws/storyden/internal/ent" "github.com/Southclaws/storyden/internal/utils" ) @@ -302,7 +303,7 @@ func threads(tr thread.Repository, pr reply.Repository, rr react.Repository, ar t.Tags, thread.WithID(t.ID), thread.WithContent(first.Content), - thread.WithVisibility(post.VisibilityPublished), + thread.WithVisibility(visibility.VisibilityPublished), thread.WithAssets(assetIDs), ) if err != nil { diff --git a/app/resources/thread/dto.go b/app/resources/thread/dto.go index ec87af72e..bfb8c8c58 100644 --- a/app/resources/thread/dto.go +++ b/app/resources/thread/dto.go @@ -15,6 +15,7 @@ import ( "github.com/Southclaws/storyden/app/resources/post" "github.com/Southclaws/storyden/app/resources/react" "github.com/Southclaws/storyden/app/resources/reply" + "github.com/Southclaws/storyden/app/resources/visibility" "github.com/Southclaws/storyden/internal/ent" ) @@ -31,7 +32,7 @@ type Thread struct { Author datagraph.Profile Tags []string Category category.Category - Visibility post.Visibility + Visibility visibility.Visibility Posts []*reply.Reply Reacts []*react.React Meta map[string]any @@ -127,7 +128,7 @@ func FromModel(m *ent.Post) (*Thread, error) { Author: *pro, Tags: dt.Map(m.Edges.Tags, func(t *ent.Tag) string { return t.Name }), Category: *category, - Visibility: post.NewVisibilityFromEnt(m.Visibility), + Visibility: visibility.NewVisibilityFromEnt(m.Visibility), Posts: posts, Reacts: dt.Map(m.Edges.Reacts, react.FromModel), Meta: m.Metadata, diff --git a/app/resources/thread/repo.go b/app/resources/thread/repo.go index 85d4344b6..b94b56c18 100644 --- a/app/resources/thread/repo.go +++ b/app/resources/thread/repo.go @@ -12,6 +12,7 @@ import ( "github.com/Southclaws/storyden/app/resources/category" "github.com/Southclaws/storyden/app/resources/content" "github.com/Southclaws/storyden/app/resources/post" + "github.com/Southclaws/storyden/app/resources/visibility" "github.com/Southclaws/storyden/internal/ent" ent_account "github.com/Southclaws/storyden/internal/ent/account" ent_category "github.com/Southclaws/storyden/internal/ent/category" @@ -88,9 +89,9 @@ func WithCategory(v xid.ID) Option { } } -func WithVisibility(v post.Visibility) Option { +func WithVisibility(v visibility.Visibility) Option { return func(pm *ent.PostMutation) { - pm.SetVisibility(v.ToEnt()) + pm.SetVisibility(ent_post.Visibility(v.String())) } } @@ -154,9 +155,9 @@ func HasCategories(ids []string) Query { } } -func HasStatus(status post.Visibility) Query { +func HasStatus(status visibility.Visibility) Query { return func(q *ent.PostQuery) { - q.Where(ent_post.VisibilityEQ(status.ToEnt())) + q.Where(ent_post.VisibilityEQ(ent_post.Visibility(status.String()))) } } diff --git a/app/resources/visibility/visibility.go b/app/resources/visibility/visibility.go new file mode 100644 index 000000000..65ba020f7 --- /dev/null +++ b/app/resources/visibility/visibility.go @@ -0,0 +1,22 @@ +package visibility + +import ( + "github.com/Southclaws/storyden/internal/ent/collection" + "github.com/Southclaws/storyden/internal/ent/node" + "github.com/Southclaws/storyden/internal/ent/post" +) + +//go:generate go run -mod=mod github.com/Southclaws/enumerator + +type visibilityEnum string + +const ( + visibilityDraft visibilityEnum = "draft" + visibilityUnlisted visibilityEnum = "unlisted" + visibilityReview visibilityEnum = "review" + visibilityPublished visibilityEnum = "published" +) + +func NewVisibilityFromEnt[T post.Visibility | node.Visibility | collection.Visibility](in T) Visibility { + return Visibility{visibilityEnum(in)} +} diff --git a/app/resources/post/post_enum_gen.go b/app/resources/visibility/visibility_enum_gen.go similarity index 98% rename from app/resources/post/post_enum_gen.go rename to app/resources/visibility/visibility_enum_gen.go index e7a19a9f6..e7167af41 100644 --- a/app/resources/post/post_enum_gen.go +++ b/app/resources/visibility/visibility_enum_gen.go @@ -1,6 +1,6 @@ // Code generated by enumerator. DO NOT EDIT. -package post +package visibility import ( "database/sql/driver" diff --git a/app/services/node/node.go b/app/services/node/node.go index edaa3a66b..0f18f9960 100644 --- a/app/services/node/node.go +++ b/app/services/node/node.go @@ -15,7 +15,7 @@ import ( "github.com/Southclaws/storyden/app/resources/datagraph" "github.com/Southclaws/storyden/app/resources/datagraph/node" "github.com/Southclaws/storyden/app/resources/datagraph/node_children" - "github.com/Southclaws/storyden/app/resources/post" + "github.com/Southclaws/storyden/app/resources/visibility" "github.com/Southclaws/storyden/app/services/authentication/session" "github.com/Southclaws/storyden/app/services/hydrator" ) @@ -40,7 +40,7 @@ type Partial struct { URL opt.Optional[string] Content opt.Optional[content.Rich] Parent opt.Optional[datagraph.NodeSlug] - Visibility opt.Optional[post.Visibility] + Visibility opt.Optional[visibility.Visibility] Properties opt.Optional[any] AssetsAdd opt.Optional[[]asset.AssetID] AssetsRemove opt.Optional[[]asset.AssetID] @@ -207,9 +207,9 @@ func (s *service) applyOpts(ctx context.Context, p Partial) ([]node.Option, erro } if acc, ok := acc.Get(); ok { - p.Visibility.Call(func(value post.Visibility) { + p.Visibility.Call(func(value visibility.Visibility) { // Only admins can immediately post to the public feed. - if value == post.VisibilityPublished && !acc.Admin { + if value == visibility.VisibilityPublished && !acc.Admin { return } diff --git a/app/services/node/node_visibility/visibility.go b/app/services/node/node_visibility/visibility.go index e437ff78c..3cedfeeef 100644 --- a/app/services/node/node_visibility/visibility.go +++ b/app/services/node/node_visibility/visibility.go @@ -11,7 +11,7 @@ import ( "github.com/Southclaws/storyden/app/resources/datagraph" "github.com/Southclaws/storyden/app/resources/datagraph/node" "github.com/Southclaws/storyden/app/resources/datagraph/node_children" - "github.com/Southclaws/storyden/app/resources/post" + "github.com/Southclaws/storyden/app/resources/visibility" "github.com/Southclaws/storyden/app/services/authentication/session" ) @@ -35,7 +35,7 @@ func New( } } -func (m *Controller) ChangeVisibility(ctx context.Context, slug datagraph.NodeSlug, visibility post.Visibility) (*datagraph.Node, error) { +func (m *Controller) ChangeVisibility(ctx context.Context, slug datagraph.NodeSlug, vis visibility.Visibility) (*datagraph.Node, error) { accountID, err := session.GetAccountID(ctx) if err != nil { return nil, fault.Wrap(err, fctx.With(ctx)) @@ -57,12 +57,12 @@ func (m *Controller) ChangeVisibility(ctx context.Context, slug datagraph.NodeSl } } - n, err = m.nr.Update(ctx, n.ID, node.WithVisibility(visibility)) + n, err = m.nr.Update(ctx, n.ID, node.WithVisibility(vis)) if err != nil { return nil, fault.Wrap(err, fctx.With(ctx)) } - if visibility == post.VisibilityPublished { + if vis == visibility.VisibilityPublished { // TODO: Emit events, send notifications, etc. } diff --git a/app/services/thread/create.go b/app/services/thread/create.go index 9fcdebdb7..b2cdf2219 100644 --- a/app/services/thread/create.go +++ b/app/services/thread/create.go @@ -12,16 +12,16 @@ import ( "github.com/Southclaws/storyden/app/resources/account" "github.com/Southclaws/storyden/app/resources/category" "github.com/Southclaws/storyden/app/resources/mq" - "github.com/Southclaws/storyden/app/resources/post" "github.com/Southclaws/storyden/app/resources/rbac" "github.com/Southclaws/storyden/app/resources/thread" + "github.com/Southclaws/storyden/app/resources/visibility" ) func (s *service) Create(ctx context.Context, title string, authorID account.AccountID, categoryID category.CategoryID, - status post.Visibility, + status visibility.Visibility, tags []string, meta map[string]any, partial Partial, diff --git a/app/services/thread/list.go b/app/services/thread/list.go index dd5eb74d2..b5533250e 100644 --- a/app/services/thread/list.go +++ b/app/services/thread/list.go @@ -11,8 +11,8 @@ import ( "github.com/rs/xid" "github.com/Southclaws/storyden/app/resources/account" - "github.com/Southclaws/storyden/app/resources/post" "github.com/Southclaws/storyden/app/resources/thread" + "github.com/Southclaws/storyden/app/resources/visibility" ) type Params struct { @@ -31,7 +31,7 @@ func (s *service) List(ctx context.Context, ) (*thread.Result, error) { q := []thread.Query{ // User's drafts are always private so we always filter published only. - thread.HasStatus(post.VisibilityPublished), + thread.HasStatus(visibility.VisibilityPublished), thread.HasNotBeenDeleted(), } diff --git a/app/services/thread/service.go b/app/services/thread/service.go index 3d7c7175e..8abdea37e 100644 --- a/app/services/thread/service.go +++ b/app/services/thread/service.go @@ -17,6 +17,7 @@ import ( "github.com/Southclaws/storyden/app/resources/post" "github.com/Southclaws/storyden/app/resources/rbac" "github.com/Southclaws/storyden/app/resources/thread" + "github.com/Southclaws/storyden/app/resources/visibility" "github.com/Southclaws/storyden/app/services/hydrator" "github.com/Southclaws/storyden/app/services/semdex" "github.com/Southclaws/storyden/internal/pubsub" @@ -29,7 +30,7 @@ type Service interface { title string, authorID account.AccountID, categoryID category.CategoryID, - status post.Visibility, + status visibility.Visibility, tags []string, meta map[string]any, partial Partial, @@ -57,7 +58,7 @@ type Partial struct { Content opt.Optional[content.Rich] Tags opt.Optional[[]xid.ID] Category opt.Optional[xid.ID] - Visibility opt.Optional[post.Visibility] + Visibility opt.Optional[visibility.Visibility] URL opt.Optional[string] Meta opt.Optional[map[string]any] } @@ -67,7 +68,7 @@ func (p Partial) Opts() (opts []thread.Option) { p.Content.Call(func(v content.Rich) { opts = append(opts, thread.WithContent(v)) }) p.Tags.Call(func(v []xid.ID) { opts = append(opts, thread.WithTags(v)) }) p.Category.Call(func(v xid.ID) { opts = append(opts, thread.WithCategory(xid.ID(v))) }) - p.Visibility.Call(func(v post.Visibility) { opts = append(opts, thread.WithVisibility(v)) }) + p.Visibility.Call(func(v visibility.Visibility) { opts = append(opts, thread.WithVisibility(v)) }) p.Meta.Call(func(v map[string]any) { opts = append(opts, thread.WithMeta(v)) }) return } diff --git a/app/transports/openapi/bindings/nodes.go b/app/transports/openapi/bindings/nodes.go index a3d9b9bf8..41c5e2067 100644 --- a/app/transports/openapi/bindings/nodes.go +++ b/app/transports/openapi/bindings/nodes.go @@ -16,7 +16,7 @@ import ( "github.com/Southclaws/storyden/app/resources/content" "github.com/Southclaws/storyden/app/resources/datagraph" "github.com/Southclaws/storyden/app/resources/datagraph/node_traversal" - "github.com/Southclaws/storyden/app/resources/post" + "github.com/Southclaws/storyden/app/resources/visibility" "github.com/Southclaws/storyden/app/services/authentication/session" node_svc "github.com/Southclaws/storyden/app/services/node" "github.com/Southclaws/storyden/app/services/node/node_visibility" @@ -132,10 +132,10 @@ func (c *Nodes) NodeList(ctx context.Context, request openapi.NodeListRequestObj if v, ok := visibilities.Get(); ok { opts = append(opts, node_traversal.WithVisibility(v...)) - if lo.Contains(v, post.VisibilityDraft) { + if lo.Contains(v, visibility.VisibilityDraft) { // If the result is to contain drafts, only show the account's. opts = append(opts, node_traversal.WithOwner(a.Handle)) - } else if lo.Contains(v, post.VisibilityReview) { + } else if lo.Contains(v, visibility.VisibilityReview) { // If the result is to contain nodes that are in-review, then // we need to check if the requesting account is an admin first. if !a.Admin { @@ -147,7 +147,7 @@ func (c *Nodes) NodeList(ctx context.Context, request openapi.NodeListRequestObj // When the request is not made by an authenticated account, we do not // permit any visibility other than "published". - opts = append(opts, node_traversal.WithVisibility(post.VisibilityPublished)) + opts = append(opts, node_traversal.WithVisibility(visibility.VisibilityPublished)) } nid, err := opt.MapErr(opt.NewPtr(request.Params.NodeId), datagraph.NodeIDFromString) @@ -203,7 +203,7 @@ func (c *Nodes) NodeUpdate(ctx context.Context, request openapi.NodeUpdateReques } func (c *Nodes) NodeUpdateVisibility(ctx context.Context, request openapi.NodeUpdateVisibilityRequestObject) (openapi.NodeUpdateVisibilityResponseObject, error) { - v, err := post.NewVisibility(string(request.Body.Visibility)) + v, err := visibility.NewVisibility(string(request.Body.Visibility)) if err != nil { return nil, fault.Wrap(err, fctx.With(ctx), ftag.With(ftag.InvalidArgument)) } diff --git a/app/transports/openapi/bindings/threads.go b/app/transports/openapi/bindings/threads.go index 9c27b71c5..0289a3610 100644 --- a/app/transports/openapi/bindings/threads.go +++ b/app/transports/openapi/bindings/threads.go @@ -14,8 +14,8 @@ import ( account_resource "github.com/Southclaws/storyden/app/resources/account" "github.com/Southclaws/storyden/app/resources/category" "github.com/Southclaws/storyden/app/resources/content" - "github.com/Southclaws/storyden/app/resources/post" "github.com/Southclaws/storyden/app/resources/react" + "github.com/Southclaws/storyden/app/resources/visibility" "github.com/Southclaws/storyden/app/services/authentication/session" thread_service "github.com/Southclaws/storyden/app/services/thread" "github.com/Southclaws/storyden/app/services/thread_mark" @@ -198,10 +198,10 @@ func (i *Threads) ThreadGet(ctx context.Context, request openapi.ThreadGetReques }, nil } -func deserialiseThreadStatus(in openapi.Visibility) (post.Visibility, error) { - s, err := post.NewVisibility(string(in)) +func deserialiseThreadStatus(in openapi.Visibility) (visibility.Visibility, error) { + s, err := visibility.NewVisibility(string(in)) if err != nil { - return post.Visibility{}, fault.Wrap(err, ftag.With(ftag.InvalidArgument)) + return visibility.Visibility{}, fault.Wrap(err, ftag.With(ftag.InvalidArgument)) } return s, nil diff --git a/app/transports/openapi/bindings/utils.go b/app/transports/openapi/bindings/utils.go index 352f900bc..844ef729c 100644 --- a/app/transports/openapi/bindings/utils.go +++ b/app/transports/openapi/bindings/utils.go @@ -12,11 +12,11 @@ import ( "github.com/Southclaws/storyden/app/resources/category" "github.com/Southclaws/storyden/app/resources/content" "github.com/Southclaws/storyden/app/resources/datagraph" - "github.com/Southclaws/storyden/app/resources/post" "github.com/Southclaws/storyden/app/resources/react" "github.com/Southclaws/storyden/app/resources/reply" "github.com/Southclaws/storyden/app/resources/tag" "github.com/Southclaws/storyden/app/resources/thread" + "github.com/Southclaws/storyden/app/resources/visibility" "github.com/Southclaws/storyden/app/transports/openapi" "github.com/Southclaws/storyden/internal/utils" ) @@ -189,20 +189,20 @@ func serialiseLink(in *datagraph.Link) openapi.Link { } } -func deserialiseVisibility(in openapi.Visibility) (post.Visibility, error) { - v, err := post.NewVisibility(string(in)) +func deserialiseVisibility(in openapi.Visibility) (visibility.Visibility, error) { + v, err := visibility.NewVisibility(string(in)) if err != nil { - return post.Visibility{}, fault.Wrap(err, ftag.With(ftag.InvalidArgument)) + return visibility.Visibility{}, fault.Wrap(err, ftag.With(ftag.InvalidArgument)) } return v, nil } -func serialiseVisibility(in post.Visibility) openapi.Visibility { +func serialiseVisibility(in visibility.Visibility) openapi.Visibility { return openapi.Visibility(in.String()) } -func deserialiseVisibilityList(in []openapi.Visibility) ([]post.Visibility, error) { +func deserialiseVisibilityList(in []openapi.Visibility) ([]visibility.Visibility, error) { v, err := dt.MapErr(in, deserialiseVisibility) if err != nil { return nil, fault.Wrap(err, ftag.With(ftag.InvalidArgument)) @@ -211,6 +211,6 @@ func deserialiseVisibilityList(in []openapi.Visibility) ([]post.Visibility, erro return v, nil } -func serialiseVisibilityList(in []post.Visibility) []openapi.Visibility { +func serialiseVisibilityList(in []visibility.Visibility) []openapi.Visibility { return dt.Map(in, serialiseVisibility) } diff --git a/app/transports/openapi/server_gen.go b/app/transports/openapi/server_gen.go index b0658e8da..86692774e 100644 --- a/app/transports/openapi/server_gen.go +++ b/app/transports/openapi/server_gen.go @@ -105,6 +105,7 @@ const ( Draft Visibility = "draft" Published Visibility = "published" Review Visibility = "review" + Unlisted Visibility = "unlisted" ) // Defines values for IconSize. @@ -17782,81 +17783,81 @@ var swaggerSpec = []string{ "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/internal/ent/schema/visibility.go b/internal/ent/schema/visibility.go index fcd527fd0..9ca979f73 100644 --- a/internal/ent/schema/visibility.go +++ b/internal/ent/schema/visibility.go @@ -2,12 +2,14 @@ package schema var ( VisibilityTypesDraft = "draft" // Items in draft are only accessible by the owner. + VisibilityTypesUnlisted = "unlisted" // Items unlisted are not publicly listed but accessible via collections and other direct links. VisibilityTypesReview = "review" // Items in review are only accessible by the owner and admins. - VisibilityTypesPublished = "published" // Items published are accessible by everyone. + VisibilityTypesPublished = "published" // Items published are published globally and searchable. ) var VisibilityTypes = []string{ VisibilityTypesDraft, + VisibilityTypesUnlisted, VisibilityTypesReview, VisibilityTypesPublished, } diff --git a/web/src/api/openapi/schemas/visibility.ts b/web/src/api/openapi/schemas/visibility.ts index 470d1d386..3f802fde2 100644 --- a/web/src/api/openapi/schemas/visibility.ts +++ b/web/src/api/openapi/schemas/visibility.ts @@ -11,6 +11,7 @@ export type Visibility = (typeof Visibility)[keyof typeof Visibility]; // eslint-disable-next-line @typescript-eslint/no-redeclare export const Visibility = { draft: "draft", + unlisted: "unlisted", review: "review", published: "published", } as const;