Skip to main content
Glama

Storyden

by Southclaws
Mozilla Public License 2.0
227
repo.go1.85 kB
package question import ( "context" "github.com/Southclaws/fault" "github.com/Southclaws/fault/fctx" "github.com/Southclaws/opt" "github.com/Southclaws/storyden/app/resources/account" "github.com/Southclaws/storyden/app/resources/datagraph" "github.com/Southclaws/storyden/internal/ent" "github.com/Southclaws/storyden/internal/ent/question" "github.com/gosimple/slug" "github.com/rs/xid" ) type Repository struct { db *ent.Client } func New(db *ent.Client) *Repository { return &Repository{db: db} } func (r *Repository) Store(ctx context.Context, query string, result datagraph.Content, accountID opt.Optional[account.AccountID], parentID opt.Optional[xid.ID], ) (*Question, error) { create := r.db.Question.Create() mutate := create.Mutation() slug := slug.Make(query) mutate.SetSlug(slug) mutate.SetQuery(query) mutate.SetResult(result.HTML()) accountID.Call(func(id account.AccountID) { mutate.SetAccountID(xid.ID(id)) }) parentID.Call(func(id xid.ID) { mutate.SetParentID(xid.ID(id)) }) create.OnConflictColumns("slug").UpdateNewValues() res, err := create.Save(ctx) if err != nil { return nil, fault.Wrap(err, fctx.With(ctx)) } q, err := r.db.Question.Query(). Where(question.ID(res.ID)). WithAuthor(). Only(ctx) if err != nil { return nil, fault.Wrap(err, fctx.With(ctx)) } return Map(q) } func (r *Repository) Get(ctx context.Context, id xid.ID) (*Question, error) { q, err := r.db.Question.Query(). Where(question.ID(id)). WithAuthor(). Only(ctx) if err != nil { return nil, err } return Map(q) } func (r *Repository) GetByQuerySlug(ctx context.Context, query string) (*Question, error) { slug := slug.Make(query) q, err := r.db.Question.Query(). Where(question.Slug(slug)). WithAuthor(). Only(ctx) if err != nil { return nil, err } return Map(q) }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Southclaws/storyden'

If you have feedback or need assistance with the MCP directory API, please join our Discord server