Конечный опыт полного стека.
Предупреждение Этот проект находится в раннем предварительном просмотре.
Этот проект может быть использован в качестве CLI:
cargo install ultime
Этот проект включает в себя функции, которые дадут вам более быстрый и лучший рабочий процесс разработки с использованием следующего технического стека:
Основной функцией является автоматическая генерация кода, основанную на ваших схемах и запросах SurreAldB. Проект Ultime должен выглядеть так:
/schemas · схемы папки от миграции SurreAldB/events · папка событий из миграции SurreaLdb/migrations · папка миграции из миграции SurreaLdb/queries · Список файлов .SURQL, который содержит конкретные запросы для вашего проекта (только данные получения)/mutations · Список файлов .surql, который содержит конкретные мутации для вашего проекта (изменения данных)/src/api · Список конечных точек API/components · Список компонентов, которые можно использовать в любом месте/db/crud · функции для основных операций CRUD, сгенерированных из /schemas/events · Функции для выполнения событий SurreAldB, сгенерированных из файлов /events/mutations · Функции для обновления DB, сгенерированных из /mutations/queries · Функции на запрос DB, сгенерированный из /queries файлов/models · Список структур, используемых в приложенииqueries.rs · Типы ответа каждого запроса из /queries (этот файл в настоящее время не сгенерирован автоматически)mutations.rs · Типы ответа каждой мутации из /mutations (этот файл в настоящее время не сгенерирован автоматически)/pages · Список компонентов более высокого порядка, которые можно использовать в качестве маршрута Во -первых, вам нужно создать новый проект, используя один из предопределенных шаблонов. Так, например:
ultime new my-blog --template blog
Будет создан новый каталог. Вы можете cd в этот новый каталог и запустить следующую команду:
ultime
Эта команда будет:
db из папков /schemas , /events , /queries и /mutations На данный момент невозможно автоматически обнаружить вывод файла .SURQL: queries или mutations . Тем не менее, для вас создается тип, так что все, что вам нужно, это определить свойства этого типа. Все модели должны быть определены в папке /src/models .
Вот пример определения модели из ответа /queries/posts.surql Query:
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>