mirror of
https://github.com/Such-Software/medusa-plugin-blog.git
synced 2026-10-19 05:48:33 +02:00
update object validation, add readme
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
# Change Log
|
||||
|
||||
## 0.0.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Add readme
|
||||
|
||||
## 0.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -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
@@ -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
@@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user