1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-smartcode-etl

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README-EN.md

SmartCode(Китайская документация)

SmartCode = IDataSource -> IBuildTask -> IOutput => Сборка всего

Введение

SmartCode

Nuget пакеты

Пакет NuGet стабильная версия Скачивания
SmartCode.CLI SmartCode.CLI SmartCode.CLI

SmartCode.Generator (Генератор кода)

Демо

SmartCode

Начало работы

  1. Установите из .NET Core Global Tool

    dotnet tool install --global SmartCode.CLI
  2. Измените файл конфигурации сборки (по умолчанию: SmartCode.yml)

  3. Командная строка выполняет команду SmartCode.

    • SmartCode
    • ждите подсказки для ввода пути к файлу конфигурации (необязательно: файл SmartCode.yml по умолчанию в корневом каталоге программы)
    • выполнение команды после нажатия Enter
  4. Ждите завершения выполнения задачи.

  5. Просмотрите результаты в каталоге вывода.

  6. Запустите проект API и отладьте с помощью Swagger.

Файлы конфигурации сборки``` yml

Модуль: 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 )

Вы можете оставить комментарий после Вход в систему

Введение

SmartCode.ETL Это не вопрос о том, что пришло первым: курица или яйцо. После выпуска официальной версии SmartCode (SmartCode.Generator) к празднику国庆节, SmartCode获得了新的能力 S SmartCode.ETL Это не вопрос о том, что пришло первым: курица или яйцо. После выпуска официальной версии SmartCode (SmartCode.Generator) к празднику国庆节, SmartCode获得了新的能力 S Пер... Развернуть Свернуть
C# и 2 других языков
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-smartcode-etl.git
git@api.gitlife.ru:oschina-mirror/mirrors-smartcode-etl.git
oschina-mirror
mirrors-smartcode-etl
mirrors-smartcode-etl
master