ultime
v0.0.5
最终的全栈体验。
警告该项目是在早期预览中。
该项目可以用作CLI:
cargo install ultime
该项目包含功能,可以使用以下技术堆栈为您提供更快,更好的开发工作流程:
主要功能是基于您的SurreAldB模式和查询的代码生成的自动。 ULTime项目应该看起来像这样:
/schemas ·surreaLDB迁移的图案文件夹/events ·来自SurreAldB迁移的事件文件夹/migrations ·迁移的迁移文件夹/queries ·一个包含项目特定查询的.surql文件的列表(仅获取数据)/mutations ·一个包含项目特定突变的.surql文件的列表(更改数据)/src/api ·API端点列表/components ·可以在任何地方使用的组件列表/db/crud ·基本CRUD操作的功能,从/schemas文件生成/events ·函数以执行从/events文件生成的sursealdB事件/mutations ·功能以更新DB,从/mutations文件生成/queries ·函数以查询数据库,从/queries文件生成/models ·应用程序中使用的结构列表queries.rs ·每个/queries文件的响应类型(当前未自动生成此文件)mutations.rs /mutations/pages 首先,您需要使用一个预定义的模板之一创建一个新项目。因此,例如:
ultime new my-blog --template blog
将创建一个新的目录。您可以cd到此新目录并运行以下命令:
ultime
此命令将:
/schemas , /events , /queries和/mutations文件夹中生成db模块截至目前,无法自动检测一个.surql文件的输出: queries或mutations 。但是,一种类型会自动为您生成,因此您需要的只是定义此类型的属性。所有模型均应在/src/models文件夹中定义。
这是/queries/posts.surql查询的响应中的模型定义的示例:
use serde :: { Deserialize , Serialize } ;
# [ derive ( Debug , Clone , PartialEq , Serialize , Deserialize ) ]
pub struct PostsQueryItem {
pub id : String ,
pub title : String ,
pub content : String ,
pub status : String ,
pub number_of_comments : u16 ,
}
pub type PostsQuery = Vec < PostsQueryItem > ; /mutations/comment.surql查询的另一个示例:
use serde :: { Deserialize , Serialize } ;
# [ derive ( Debug , Clone , PartialEq , Serialize , Deserialize ) ]
pub struct CommentMutationItem {
pub id : String ,
pub content : String ,
}
pub type CommentMutation = Vec < CommentMutationItem > ;为了区分内部变量和输入变量,我们建立了一个遵循的模式,以便成功提取查询和突变变量。
以下突变...
// $user_id: String
// $post_id: Option < String >
// $comment_id: Option < String >
// $content: String
LET $user = ( SELECT * FROM type::thing( " user " , $user_id));
LET $post_or_comment = ( SELECT * FROM type::thing( " post " , $post_id), type::thing( " comment " , $comment_id));
RELATE $user - > comment - > $post_or_comment
SET content = $content;...将生成此功能:
pub async fn mutate_comment < C : Connection > (
db : & ' _ Surreal < C > ,
user_id : String ,
post_id : Option < String > ,
comment_id : Option < String > ,
content : String
) -> Result < CommentMutation > {
const QUERY : & str = include_str ! ( "../../../mutations/comment.surql" ) ;
let result : CommentMutation = db
. query ( QUERY )
. bind ( ( "user_id" , user_id ) )
. bind ( ( "post_id" , post_id ) )
. bind ( ( "comment_id" , comment_id ) )
. bind ( ( "content" , content ) )
. await ?
. take ( 0 ) ? ;
Ok ( result )
}如您所见,评论应遵循规则:
$前缀):为了帮助您快速入门,您可以使用的预定义模板列表:
| 模板 | 描述 |
|---|---|
| 空的 | 您可以创建的最小ULTime项目。 带有已定义的 script_migration表的干净架构,用于存储应用的迁移。一个基本的Leptos应用,带有反示例。 |
| 博客 | 博客应用程序:创建新的博客文章,发布/未发表帖子和评论。 |
您可以使用以下命令行创建一个新的ULTime项目:
ultime new <PROJECT_NAME> --template <TEMPLATE>