update object validation, add readme

This commit is contained in:
Lacey Pevey
2023-05-20 12:02:56 -05:00
parent 2aef5a8bc8
commit a834186ccb
4 changed files with 211 additions and 5 deletions
+6
View File
@@ -1,5 +1,11 @@
# Change Log
## 0.0.6
### Patch Changes
- Add readme
## 0.0.5
### Patch Changes
+201 -1
View File
@@ -1,3 +1,203 @@
# medusa-plugin-blog
Working on it
Provides a basic blog backend for Medusa.
- Posts can be tagged with products, collections, and/or custom tag values.
- Posts can be queried by tag, category, product, or collection.
**This plugin is under development and should be considered expirimental.**
## Installation
```bash
yarn add medusa-plugin-blog
```
## Configuration
```json
{
"plugins": [
"medusa-plugin-blog"
]
}
```
## API Endpoints
### `GET /store/blog/posts`
return jsons object containing an array of all blog post objects
### `GET /store/blog/posts/:handle`
return json object containing a single blog post object
### `GET /store/blog/categories`
return json object containing an array of all blog category objects
### `GET /store/blog/categories/:handle`
return json object containing a single blog category object
### `GET /store/blog/categories/:handle/posts`
return json object containing an array of all blog post objects for a given category
### `GET /store/blog/tags`
return json object containing an array of all blog tag objects
### `GET /store/blog/tags/posts`
return json object containing an array of all blog post objects for a given tag or array of tags
Example: `/store/blog/tags/posts?tag=tag1&tag=tag2&tag=tag3` etc
### `GET /store/blog/products/:id`
return json object containing an array of all blog post objects for a product with given id
### `GET /store/blog/collections/:id`
return json object containing an array of all blog post objects for a collection with given id
### `POST /admin/blog/categories`
create a new blog category object
Expects body with:
```js
{
handle: string!,
title: string!,
description: string,
keywords: string[],
metadata: jsonb
}
```
### `POST /admin/blog/categories/:id`
update an existing blog category object with given id
Expects body with:
```js
{
handle: string!,
title: string!,
description: string,
keywords: string[],
metadata: jsonb
}
```
### `DELETE /admin/blog/categories/:id`
delete an existing blog category object with given id
### `POST /admin/blog/posts`
create a new blog post object
Expects body with:
```js
{
handle: string!,
title: string!,
author: string,
published: boolean,
content: string,
description: string,
keywords: string[],
category_id: string,
tag_ids: string[],
product_ids: string[],
collection_ids: string[],
metadata: jsonb
}
```
### `POST /admin/blog/posts/:id`
update an existing blog post object with given id
Expects body with:
```js
{
handle: string!,
title: string!,
author: string,
published: boolean,
content: string,
description: string,
keywords: string[],
category_id: string,
tag_ids: string[],
product_ids: string[],
collection_ids: string[],
metadata: jsonb
}
```
### `DELETE /admin/blog/posts/:id`
delete an existing blog post object with given id
### `POST /admin/blog/tags`
create a new blog tag object
Expects body with:
```js
{
value: string!
}
```
### `POST /admin/blog/tags/:id`
update an existing blog tag object with given id
Expects body with:
```js
{
value: string!
}
```
### `DELETE /admin/blog/tags/:id`
delete an existing blog tag object with given id
## Objects
### BlogPost
```js
{
id: string!,
handle: string!,
title: string!,
author: string,
published: string!,
content: string,
description: string,
keywords: string[],
category_id: string,
category: Category,
tags: BlogTag[],
products: Product[],
collections: Collection[],
metadata: jsonb,
created_at: DateTime!,
updated_at: DateTime!
}
```
### BlogTag
```js
{
id: string!,
value: string!
}
```
### BlogCategory
```js
{
id: string!,
handle: string!,
title: string!,
description: string,
keywords: string[],
metadata: jsonb,
posts: BlogPost[]
}
```
### Product
Default Medusa Product object
### Collection
Default Medusa Collection object
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "medusa-plugin-blog",
"version": "0.0.5",
"version": "0.0.6",
"description": "Basic blog for Medusa",
"repository": {
"type": "git",
+3 -3
View File
@@ -22,7 +22,7 @@ export default (rootDirectory: string): Router | Router[] => {
})
// GET ALL BLOG POSTS BY CATEGORY
router.get("/store/blog/category/:handle/posts", cors(storeCorsOptions), async (req, res) => {
router.get("/store/blog/categories/:handle/posts", cors(storeCorsOptions), async (req, res) => {
const blogService = req.scope.resolve("blogService")
blogService.getBlogPostsByCategoryHandle(req.params.handle).then((blog_posts) => {
return res.json(blog_posts)
@@ -92,7 +92,7 @@ export default (rootDirectory: string): Router | Router[] => {
router.use("/admin/blog/categories", bodyParser.json())
router.post("/admin/blog/categories", cors(adminCorsOptions), async (req, res) => {
const schema = z.object({
handle: z.string().optional(),
handle: z.string().min(1),
title: z.string().min(1),
description: z.string().optional(),
keywords: z.string().array().optional(),
@@ -113,7 +113,7 @@ export default (rootDirectory: string): Router | Router[] => {
router.use("/admin/blog/categories/:id", bodyParser.json())
router.post("/admin/blog/categories/:id", cors(adminCorsOptions), async (req, res) => {
const schema = z.object({
handle: z.string().optional(),
handle: z.string().min(1),
title: z.string().min(1),
description: z.string().optional(),
keywords: z.string().array().optional(),