post

package
v0.0.0-...-40cf777 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 27, 2022 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package post provides an example of a core business API. Right now these calls are just wrapping the data/data layer. But at some point you will want auditing or something that isn't specific to the data/store layer.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotFound              = errors.New("post not found")
	ErrInvalidID             = errors.New("ID is not in its proper form")
	ErrAuthenticationFailure = errors.New("authentication failed")
)

Set of error variables for CRUD operations.

Functions

This section is empty.

Types

type Core

type Core struct {
	// contains filtered or unexported fields
}

Core manages the set of API's for post access.

func NewCore

func NewCore(log *zap.SugaredLogger, sqlxDB *sqlx.DB, nats *nats.NATS) Core

NewCore constructs a core for post api access.

func (Core) Create

func (c Core) Create(ctx context.Context, np NewPost, now time.Time) (Post, error)

Create inserts a new post into the database.

func (Core) Delete

func (c Core) Delete(ctx context.Context, postID string) error

Delete removes a post from the database.

func (Core) Query

func (c Core) Query(ctx context.Context, pageNumber int, rowsPerPage int) ([]Post, error)

Query retrieves a list of existing posts from the database.

func (Core) QueryByID

func (c Core) QueryByID(ctx context.Context, postID string) (Post, error)

QueryByID gets the specified post from the database.

func (Core) QueryByUserID

func (c Core) QueryByUserID(ctx context.Context, userID string) ([]Post, error)

func (Core) Update

func (c Core) Update(ctx context.Context, postID string, up UpdatePost, now time.Time) error

Update replaces a post document in the database.

type NewPost

type NewPost struct {
	Title       string `json:"title" validate:"required"`
	Description string `json:"description" validate:"required"`
	UserID      string `json:"user_id" validate:"required"`
}

NewPost contains information needed to create a new Post.

type Post

type Post struct {
	ID          string    `json:"id"`
	Title       string    `json:"title"`
	Description string    `json:"description"`
	UserID      string    `json:"user_id"`
	DateCreated time.Time `json:"date_created"`
	DateUpdated time.Time `json:"date_updated"`
}

Post represents an individual post.

type UpdatePost

type UpdatePost struct {
	Title       *string `json:"title"`
	Description *string `json:"description"`
}

UpdatePost defines what information may be provided to modify an existing Post. All fields are optional so clients can send just the fields they want changed. It uses pointer fields so we can differentiate between a field that was not provided and a field that was provided as explicitly blank. Normally we do not want to use pointers to basic types but we make exceptions around marshalling/unmarshalling.

Directories

Path Synopsis
Package db contains post related CRUD functionality.
Package db contains post related CRUD functionality.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL