SmartCode = IDataSource -> IBuildTask -> IOutput => Сборка всего
Пакет | NuGet стабильная версия | Скачивания |
---|---|---|
SmartCode.CLI |
Установите из .NET Core Global Tool
dotnet tool install --global SmartCode.CLI
Измените файл конфигурации сборки (по умолчанию: SmartCode.yml)
Командная строка выполняет команду SmartCode.
Ждите завершения выполнения задачи.
Просмотрите результаты в каталоге вывода.
Запустите проект API и отладьте с помощью Swagger.
Модуль: SmartSql.Starter Автор: Ahoo Wang DataSource: Имя: DbTable Параметры: DbName: SmartSqlTestDB DbProvider: SqlServer ConnectionString: Data Source=.;Initial Catalog=SmartSqlTestDB;Integrated Security=True Язык: CSharp TemplateEngine: Имя: Razor Root: CSharp Output: Тип: File Путь: 'E:\SmartSql-Starter' Параметры: SmartSqlVersion: '4.0.46' SmartSqlSchemaVersion: '4.0.42' BuildDir: 'E:\SmartSql-Starter\build' DockerImage: 'smartsql.starter'
NamingConverter: Таблица: Токенизатор: Тип: Default Параметры: IgnorePrefix: 'T_' Delimiter: '' Конвертер: Тип: Pascal Параметры: { } Вид: Токенизатор: Тип: Default Параметры: IgnorePrefix: 'V' Delimiter: '' Конвертер: Тип: Pascal Столбец: Токенизатор: Тип: Default Параметры: Delimiter: '' Конвертер: Тип: Pascal
Build:
```# ClearDir:
# Тип: Clear
# Параметры:
# Директории: '.' MakeBuildDir:
Тип: Process
Параметры:
FileName: powershell
Args: mkdir '{{Project.Parameters.BuildDir}}'
Копирование:
Тип: Process
Параметры:
FileName: powershell
Args: cp '{{Project.ConfigPath}}' '{{Project.Parameters.BuildDir}}'
Шаблонирование:
Тип: MultiTemplate
Выход:
Путь: '.'
Параметры:
Шаблоны: [{Ключ: 'Sln.cshtml',Выход: {Имя: '{{Project.Module}}',Расширение: '.sln'}}],
{Ключ: 'Sln-Directory.Build.cshtml',Выход: {Имя: 'Directory.Build',Расширение: '.props'}},
{Ключ: 'Sln-Version.cshtml',Выход: {Путь: 'build',Имя: 'version',Расширение: '.props'}},
{Ключ: 'Sln-Dockerfile.cshtml',Выход: {Имя: 'Dockerfile',Расширение: ''}},
{Ключ: 'Sln-DockerIgnore.cshtml',Выход: {Имя: '.dockerignore',Расширение: ''}},
{Ключ: 'Sln-GitIgnore.cshtml',Выход: {Имя: '.gitignore',Расширение: ''}},
{Ключ: "Proj-Entity.cshtml",Выход: {Путь: 'src/{{Project.Module}}.Entity',Имя: '{{Project.Module}}.Entity',Расширение: '.csproj'}},
{Ключ: "Proj-Repository.cshtml",Выход: {Путь: 'src/{{Project.Module}}.Repository',Имя: '{{Project.Module}}.Repository',Расширение: '.csproj'}},
{Ключ: "Proj-Service.cshtml",Выход: {Путь: 'src/{{Project.Module}}.Service',Имя: '{{Project.Module}}.Service',Расширение: '.csproj'}},
{Ключ: "Proj-API.cshtml",Выход: {Путь: 'src/{{Project.Module}}.API',Имя: '{{Project.Module}}.API',Расширение: '.csproj'}},
{Ключ: "API/LaunchSettings.cshtml",Выход: {Путь: 'src/{{Project.Module}}.API/Properties',Имя: 'launchSettings',Расширение: '.json'}},
{Ключ: "API/AppSettings.cshtml",Выход: {Путь: 'src/{{Project.Module}}.API',Имя: 'appsettings',Расширение: '.json'}},
{Ключ: "API/AppSettings-Development.cshtml",Выход: {Путь: 'src/{{Project.Module}}.API',Имя: 'appsettings.Development',Расширение: '.json'}},
{Ключ: "API/Program.cshtml"}```markdown
[
{Ключ: "API/Messages. cshtml",Выход: {Путь: 'src/{{Проект. Модуль}}. API/Сообщения',Имя: 'Запрос',Расширение: '. cs'}},
{Ключ: "API/ЗапросСтраницы. cshtml",Выход: {Путь: 'src/{{Проект. Модуль}}. API/Сообщения',Имя: 'ЗапросСтраницы',Расширение: '. cs'}},
{Ключ: "API/ОтветноеСообщение. cshtml",Выход: {Путь: 'src/{{Проект. Модуль}}. API/Сообщения',Имя: 'ОтветноеСообщение',Расширение: '. cs'}},
{Ключ: "API/ОтветЗапроса. cshtml",Выход: {Путь: 'src/{{Проект. Модуль}}. API/Сообщения',Имя: 'ОтветЗапроса',Расширение: '. cs'}},
{Ключ: "API/ОтветЗапросаСтраницы. cshtml",Выход: {Путь: 'src/{{Проект. Модуль}}. API/Сообщения',Имя: 'ОтветЗапросаСтраницы',Расширение: '. cs'}},
{Ключ: "API/ОтветноеСообщение. cshtml",Выход: {Путь: 'src/{{Проект. Модуль}}. API/Сообщения',Имя: 'ОтветноеСообщение',Расширение: '. cs'}},
{Ключ: "SqlMapConfig. cshtml",Выход: {Путь: 'src/{{Проект. Модуль}}. Repository',Имя: 'SmartSqlMapConfig',Расширение: '. xml'}},
{Ключ: "SqlMapConfig. cshtml",Выход: {Путь: 'src/{{Проект. Модуль}}. Repository',Имя: 'SmartSqlMapConfig. Разработка',Расширение: '. xml'}}
]
Сущность: Тип: Таблица Модуль: Сущность
Путь: Entity.cshtml
Выход:
Путь: 'src/{{Project.Module}}. {{Build.Module}}'
Имя: '{{Items.CurrentTable.ConvertedName}}'
Расширение: '.cs' Репозиторий:
Тип: Таблица
Модуль: Репозиторий
Шаблонизатор:
Путь: Repository.cshtml
Игнорировать таблицы без PK: true
Игнорировать представления: true
Выход:
Путь: 'src/{{Project.Module}}.{{Build.Module}}'
Имя: 'I{{Items.CurrentTable.ConvertedName}}Repository'
Расширение: .cs
Сервис:
Тип: Таблица
Модуль: Сервис
Шаблонизатор:
Путь: Service.cshtml
Игнорировать таблицы без PK: true
Игнорировать представления: true
Выход:
Путь: 'src/{{Project.Module}}.{{Build.Module}}'
Имя: '{{Items.CurrentTable.ConvertedName}}Service'
Расширение: .cs
APIController:
Тип: Таблица
Модуль: API
Шаблонизатор:
Путь: API/APIController.cshtml
Игнорировать таблицы без PK: true
Yöntem: true
Выход:
Путь: 'src/{{Project.Module}}.{{Build.Module}}/Controllers'
Имя: '{{Items.CurrentTable.ConvertedName}}Controller'
Расширение: .cs
SqlMap:
Тип: Таблица
Шаблонизатор:
Путь: SqlMap.cshtml
Выход:
Путь: 'src/{{Project.Module}}.Repository/Maps'
Имя: '{{Items.CurrentTable.ConvertedName}}'
Расширение: .xml
Игнорировать таблицы без PK: true
Игнорировать представления: true
# Пожалуйста, установите dotnet-format сначала!
# dotnet tool install -g dotnet-format
Форматирование кода:
Тип: Процесс
Параметры:
Имя файла: powershell
Рабочая папка: '{{Project.Output.Path}}'
Аргументы: dotnet-format
Восстановление:
Тип: Процесс
Параметры:
Имя файла: powershell
Рабочая папка: '{{Project.Output.Path}}'
Аргументы: dotnet restore# Сборка Докера:
# Тип: Процесс
# Параметры:
# Имя Файла: powershell
# Рабочая Папка: '{{Project.Output.Path}}'
# Аргументы: docker build -t {{Project.Parameters.DockerImage}}:v1.0.0 .# Запуск Docker:
# Тип: Процесс
# Параметры:
# ИмяФайла: powershell
# РабочаяПапка: '{{Project.Output.Path}}'
# Аргументы: docker run --name {{Project.Parameters.DockerImage}} --rm -d -p 8008:80 {{Project.Parameters.DockerImage}}:v1.0.0
# Публикация:
# Тип: Процесс
# Параметры:
# ИмяФайла: powershell
# РабочаяПапка: '{{Project.Output.Path}}'
# Аргументы: dotnet publish -c Release -o '{{Project.Output.Path}}\publish'
# Запуск:
# Тип: Процесс
# Параметры:
# ИмяФайла: powershell
# РабочаяПапка: '{{Project.Output.Path}}\publish'
# CreateNoWindow: false
# RedirectStandardOutput: false
# RedirectStandardError: false
# WaitForExit: false
# Аргументы: ['dotnet {{Project.Module}}.API.dll']
# Запуск Chrome:
# Тип: Процесс
# Параметры:
# ИмяФайла: C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
# CreateNoWindow: false
# Аргументы: http://localhost:8008/swagger
### Обзор параметров файла сборки
| Имя параметра | Описание |
| :------------ | :------- |
| Module | Имя корневого модуля |
| Author | Автор |
| DataSource | Источник данных |
| Language | Язык: CSharp/Java/... |
| TemplateEngine | Шаблонизатор: текущий: Razor/Handlebars |
| Output | Выходные данные |
| Build | Задача сборки |
#### DataSource Источник данных, Имя: DbTable
> Имя свойства: DbTable, использует плагин DbTableSource в качестве источника данных
DbTableSource.Parameters принимает следующие три параметра:
| Имя параметра | Описание |
| :------------ | :------- |
| DbName | Имя базы данных |
| DbProvider | Драйверы данных: MySql, MariaDB, PostgreSql, SqlServer, Oracle, SQLite |
| ConnectionString | Строка подключения |
#### Build Задача сборки| Имя параметра | Описание |
| :--------- | --------:|
| Type | Тип сборки, Clear: используется для очистки директорий/файлов, Project: используется для сборки одного файла, например: файла решения/проекта, Table: используется для сборки файла на основе таблицы данных, например: Entity, Repository file |
| Module | Имя сборочного модуля |
| TemplateEngine | Шаблонизатор, необязательный, по умолчанию используется шаблонизатор корневого модуля |
| Template | Файл шаблона |
| Output | Выходные данные |
| IgnoreNoPKTable | Игнорировать таблицы без первичного ключа |
| IgnoreView | Игнорировать представления |
| IncludeTables | Включить имена таблиц |
| IgnoreTables | Игнорировать имена таблиц |
| NamingConverter | Преобразователь имен |
| Parameters | Пользовательские параметры сборки |#### NamingConverter Преобразование имен
| Атрибут | Описание |
| :--------- | --------:|
| Type | Таблица/Представление/Столбец |
| Tokenizer | Сегментатор слов |
| Converter | Преобразователь: Camel/Pascal/None |
##### NamingConverter.Tokenizer Сегментатор слов
| Атрибут | Описание |
| :--------- | --------:|
| Type | По умолчанию |
| Parameters.IgnorePrefix | Игнорировать префиксные символы |
| Parameters.Delimiter | Разделитель |
| Parameters.UppercaseSplit | Использовать разделение с заглавными буквами, по умолчанию: true |
### Как внести шаблон
>Чтобы позволить большему количеству людей участвовать в создании шаблонов SmartCode, используются следующие спецификации шаблонов:
1. Автор шаблона создает новую директорию в src/SmartCode.Generator/RazorTemplates и называет её по своему английскому имени.
2. Размещает шаблон в директории автора
3. В директории автора должна быть включена файл README.md, которая должна объяснять цель шаблона и его использование.
4. Отправить PR
## SmartCode.ETL(Извлечение-Преобразование-Загрузка)
### Файлы конфигурации сборки ETL
``` yml
Автор: Ахуо Ван
DataSource:
Имя: Извлечение
Параметры:
DbProvider: SqlServer
ConnectionString: Data Source=.;Initial Catalog=SmartSqlDB;Integrated Security=True
Query: SELECT [Id],[UserName],[Pwd],[Status],[LastLoginTime],[CreationTime],[Deleted] FROM [T_User] Where Id>@LastMaxId And CreationTime>@LastQueryTime
PKColumn: Id
Параметры:
ETLCode: SmartCode.ETL.Test
ETLRepository: PG
Сборка:
Преобразование:
Тип: Transform
Параметры:
Скрипт: Load2PostgreSql.cshtml
``` Загрузка в PostgreSQL:
Тип: Load
Параметры:
DbProvider: PostgreSQL
ConnectionString: Server=localhost;Port=5432;User Id=postgres;Password=SmartSql;Database=smartsql_db;
Таблица: t_user
ColumnMapping: [{Column: UserName,Mapping: user_name},
{Column: Pwd,Mapping: pwd},
{Column: Status,Mapping: status},
{Column: LastLoginTime,Mapping: lastlogintime},
{Column: CreationTime,Mapping: creationtime},
{Column: Deleted,Mapping: deleted}]
PreCommand:
PostCommand:
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )