add /blogs/{blogID} and /blogs/lookup/{blogName} routes
This commit is contained in:
		
							parent
							
								
									dfc116d828
								
							
						
					
					
						commit
						dd72a1f4c1
					
				
					 5 changed files with 104 additions and 1 deletions
				
			
		
							
								
								
									
										74
									
								
								web/api/blogs/get_blog.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								web/api/blogs/get_blog.go
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,74 @@
 | 
			
		|||
package blogs
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
 | 
			
		||||
	"git.sleepycat.moe/sam/mercury/internal/database/sql"
 | 
			
		||||
	"git.sleepycat.moe/sam/mercury/web/api"
 | 
			
		||||
	"github.com/go-chi/chi/v5"
 | 
			
		||||
	"github.com/oklog/ulid/v2"
 | 
			
		||||
	"github.com/rs/zerolog/log"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func (app *App) GetID(w http.ResponseWriter, r *http.Request) (api.Blog, error) {
 | 
			
		||||
	ctx := r.Context()
 | 
			
		||||
	id, err := ulid.Parse(chi.URLParamFromCtx(ctx, "blogID"))
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		return api.Blog{}, api.Error{Code: api.ErrBlogNotFound}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	conn, err := app.Database.Acquire(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Err(err).Msg("acquiring connection")
 | 
			
		||||
		return api.Blog{}, err
 | 
			
		||||
	}
 | 
			
		||||
	defer conn.Release()
 | 
			
		||||
 | 
			
		||||
	blog, err := app.Blog(conn).ByID(ctx, id)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if err == sql.ErrNotFound {
 | 
			
		||||
			return api.Blog{}, api.Error{Code: api.ErrBlogNotFound}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		log.Err(err).Str("id", id.String()).Msg("fetching blog from database")
 | 
			
		||||
		return api.Blog{}, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	acct, err := app.Account(conn).ByID(ctx, blog.AccountID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Err(err).Str("id", blog.AccountID.String()).Msg("fetching account from database")
 | 
			
		||||
		return api.Blog{}, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return api.DBBlogToBlog(blog, acct), nil
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (app *App) LookupName(w http.ResponseWriter, r *http.Request) (api.Blog, error) {
 | 
			
		||||
	ctx := r.Context()
 | 
			
		||||
	name := chi.URLParamFromCtx(ctx, "blogName")
 | 
			
		||||
 | 
			
		||||
	conn, err := app.Database.Acquire(ctx)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Err(err).Msg("acquiring connection")
 | 
			
		||||
		return api.Blog{}, err
 | 
			
		||||
	}
 | 
			
		||||
	defer conn.Release()
 | 
			
		||||
 | 
			
		||||
	blog, err := app.Blog(conn).ByName(ctx, name, "")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if err == sql.ErrNotFound {
 | 
			
		||||
			return api.Blog{}, api.Error{Code: api.ErrBlogNotFound}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		log.Err(err).Str("name", name).Msg("fetching blog from database")
 | 
			
		||||
		return api.Blog{}, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	acct, err := app.Account(conn).ByID(ctx, blog.AccountID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Err(err).Str("id", blog.AccountID.String()).Msg("fetching account from database")
 | 
			
		||||
		return api.Blog{}, err
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return api.DBBlogToBlog(blog, acct), nil
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue