Merge pull request #919 from AppFlowy-IO/template-publish-info
feat: add publish info to template
This commit is contained in:
commit
f74b6a37bd
|
|
@ -2,8 +2,8 @@ use client_api_entity::{
|
|||
AccountLink, CreateTemplateCategoryParams, CreateTemplateCreatorParams, CreateTemplateParams,
|
||||
GetTemplateCategoriesQueryParams, GetTemplateCreatorsQueryParams, GetTemplatesQueryParams,
|
||||
Template, TemplateCategories, TemplateCategory, TemplateCategoryType, TemplateCreator,
|
||||
TemplateCreators, Templates, UpdateTemplateCategoryParams, UpdateTemplateCreatorParams,
|
||||
UpdateTemplateParams,
|
||||
TemplateCreators, TemplateWithPublishInfo, Templates, UpdateTemplateCategoryParams,
|
||||
UpdateTemplateCreatorParams, UpdateTemplateParams,
|
||||
};
|
||||
use reqwest::Method;
|
||||
use shared_entity::response::{AppResponse, AppResponseError};
|
||||
|
|
@ -231,7 +231,10 @@ impl Client {
|
|||
.into_data()
|
||||
}
|
||||
|
||||
pub async fn get_template(&self, view_id: Uuid) -> Result<Template, AppResponseError> {
|
||||
pub async fn get_template(
|
||||
&self,
|
||||
view_id: Uuid,
|
||||
) -> Result<TemplateWithPublishInfo, AppResponseError> {
|
||||
let url = template_resource_url(&self.base_url, view_id);
|
||||
let resp = self
|
||||
.http_client_without_auth(Method::GET, &url)
|
||||
|
|
@ -239,7 +242,7 @@ impl Client {
|
|||
.send()
|
||||
.await?;
|
||||
|
||||
AppResponse::<Template>::from_response(resp)
|
||||
AppResponse::<TemplateWithPublishInfo>::from_response(resp)
|
||||
.await?
|
||||
.into_data()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -408,7 +408,7 @@ pub struct AFCollabMember {
|
|||
pub permission: AFPermission,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
pub struct PublishInfo {
|
||||
pub namespace: Option<String>,
|
||||
pub publish_name: String,
|
||||
|
|
@ -1220,7 +1220,7 @@ pub enum TemplateCategoryType {
|
|||
Feature = 1,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||
pub struct TemplateCategory {
|
||||
pub id: Uuid,
|
||||
pub name: String,
|
||||
|
|
@ -1231,7 +1231,7 @@ pub struct TemplateCategory {
|
|||
pub priority: i32,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||
pub struct TemplateCategoryMinimal {
|
||||
pub id: Uuid,
|
||||
pub name: String,
|
||||
|
|
@ -1270,13 +1270,13 @@ pub struct TemplateCreators {
|
|||
pub creators: Vec<TemplateCreator>,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||
pub struct AccountLink {
|
||||
pub link_type: String,
|
||||
pub url: String,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||
pub struct TemplateCreator {
|
||||
pub id: Uuid,
|
||||
pub name: String,
|
||||
|
|
@ -1285,7 +1285,7 @@ pub struct TemplateCreator {
|
|||
pub number_of_templates: i32,
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||
pub struct TemplateCreatorMinimal {
|
||||
pub id: Uuid,
|
||||
pub name: String,
|
||||
|
|
@ -1328,6 +1328,43 @@ pub struct Template {
|
|||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
pub struct TemplateWithPublishInfo {
|
||||
pub view_id: Uuid,
|
||||
pub created_at: DateTime<Utc>,
|
||||
pub last_updated_at: DateTime<Utc>,
|
||||
pub name: String,
|
||||
pub description: String,
|
||||
pub about: String,
|
||||
pub view_url: String,
|
||||
pub categories: Vec<TemplateCategory>,
|
||||
pub creator: TemplateCreator,
|
||||
pub is_new_template: bool,
|
||||
pub is_featured: bool,
|
||||
pub related_templates: Vec<TemplateMinimal>,
|
||||
pub publish_info: PublishInfo,
|
||||
}
|
||||
|
||||
impl TemplateWithPublishInfo {
|
||||
pub fn from_template_and_publish_info(template: &Template, publish_info: &PublishInfo) -> Self {
|
||||
Self {
|
||||
view_id: template.view_id,
|
||||
created_at: template.created_at,
|
||||
last_updated_at: template.last_updated_at,
|
||||
name: template.name.clone(),
|
||||
description: template.description.clone(),
|
||||
about: template.about.clone(),
|
||||
view_url: template.view_url.clone(),
|
||||
categories: template.categories.clone(),
|
||||
creator: template.creator.clone(),
|
||||
is_new_template: template.is_new_template,
|
||||
is_featured: template.is_featured,
|
||||
related_templates: template.related_templates.clone(),
|
||||
publish_info: publish_info.clone(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize, Debug, Clone)]
|
||||
pub struct TemplateMinimal {
|
||||
pub view_id: Uuid,
|
||||
pub created_at: DateTime<Utc>,
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ use database_entity::dto::{
|
|||
AvatarImageSource, CreateTemplateCategoryParams, CreateTemplateCreatorParams,
|
||||
CreateTemplateParams, GetTemplateCategoriesQueryParams, GetTemplateCreatorsQueryParams,
|
||||
GetTemplatesQueryParams, Template, TemplateCategories, TemplateCategory, TemplateCreator,
|
||||
TemplateCreators, TemplateHomePage, TemplateHomePageQueryParams, Templates,
|
||||
UpdateTemplateCategoryParams, UpdateTemplateCreatorParams, UpdateTemplateParams,
|
||||
TemplateCreators, TemplateHomePage, TemplateHomePageQueryParams, TemplateWithPublishInfo,
|
||||
Templates, UpdateTemplateCategoryParams, UpdateTemplateCreatorParams, UpdateTemplateParams,
|
||||
};
|
||||
use reqwest::StatusCode;
|
||||
use shared_entity::response::{AppResponse, JsonAppResponse};
|
||||
|
|
@ -235,10 +235,10 @@ async fn list_templates_handler(
|
|||
async fn get_template_handler(
|
||||
view_id: web::Path<Uuid>,
|
||||
state: Data<AppState>,
|
||||
) -> Result<JsonAppResponse<Template>> {
|
||||
) -> Result<JsonAppResponse<TemplateWithPublishInfo>> {
|
||||
let view_id = view_id.into_inner();
|
||||
let template = get_template(&state.pg_pool, view_id).await?;
|
||||
Ok(Json(AppResponse::Ok().with_data(template)))
|
||||
let template_with_pub_info = get_template_with_publish_info(&state.pg_pool, view_id).await?;
|
||||
Ok(Json(AppResponse::Ok().with_data(template_with_pub_info)))
|
||||
}
|
||||
|
||||
async fn update_template_handler(
|
||||
|
|
|
|||
|
|
@ -6,11 +6,12 @@ use app_error::ErrorCode;
|
|||
use aws_sdk_s3::primitives::ByteStream;
|
||||
use database::{
|
||||
file::{s3_client_impl::AwsS3BucketClientImpl, BucketClient, ResponseBlob},
|
||||
publish::select_published_collab_info,
|
||||
template::*,
|
||||
};
|
||||
use database_entity::dto::{
|
||||
AccountLink, Template, TemplateCategory, TemplateCategoryType, TemplateCreator, TemplateHomePage,
|
||||
TemplateMinimal,
|
||||
TemplateMinimal, TemplateWithPublishInfo,
|
||||
};
|
||||
use shared_entity::response::AppResponseError;
|
||||
use sqlx::PgPool;
|
||||
|
|
@ -247,9 +248,15 @@ pub async fn get_templates(
|
|||
Ok(templates)
|
||||
}
|
||||
|
||||
pub async fn get_template(pg_pool: &PgPool, view_id: Uuid) -> Result<Template, AppResponseError> {
|
||||
pub async fn get_template_with_publish_info(
|
||||
pg_pool: &PgPool,
|
||||
view_id: Uuid,
|
||||
) -> Result<TemplateWithPublishInfo, AppResponseError> {
|
||||
let template = select_template_view_by_id(pg_pool, view_id).await?;
|
||||
Ok(template)
|
||||
let pub_info = select_published_collab_info(pg_pool, &view_id).await?;
|
||||
let template_with_pub_info =
|
||||
TemplateWithPublishInfo::from_template_and_publish_info(&template, &pub_info);
|
||||
Ok(template_with_pub_info)
|
||||
}
|
||||
|
||||
pub async fn delete_template(pg_pool: &PgPool, view_id: Uuid) -> Result<(), AppResponseError> {
|
||||
|
|
|
|||
|
|
@ -392,6 +392,10 @@ async fn test_template_crud() {
|
|||
assert_eq!(template.categories[0].id, category_2.id);
|
||||
assert_eq!(template.related_templates.len(), 1);
|
||||
assert_eq!(template.related_templates[0].view_id, published_view_ids[0]);
|
||||
assert_eq!(
|
||||
template.publish_info.namespace.unwrap(),
|
||||
published_view_namespace.clone()
|
||||
);
|
||||
|
||||
let params = UpdateTemplateParams {
|
||||
name: format!("{}-{}", template_name_prefix, published_view_ids[3]),
|
||||
|
|
|
|||
Loading…
Reference in New Issue