Skip to content

Instantly share code, notes, and snippets.

@pauloantonelli
Created February 23, 2022 14:46
Show Gist options
  • Save pauloantonelli/dda3df8622a6e26db1ff69b9ba5438dc to your computer and use it in GitHub Desktop.
Save pauloantonelli/dda3df8622a6e26db1ff69b9ba5438dc to your computer and use it in GitHub Desktop.
dart clean arch layers vscode snippets
{
// Domain
// Repository
"Dart Clean Arch - Repository Interface Type: Set": {
"prefix": ["repository-interface-set"],
"body": [
"abstract class I${1:RuleName}Repository {\t$0",
" Future<Either<${1:RuleName}RepositoryError, ${2:T}>> call(${3:T} param);",
"}\t$0"
],
"description": "repository set type - for Dart Clean Arch"
},
"Dart Clean Arch - Repository Interface Type: Delete": {
"prefix": ["repository-interface-delete"],
"body": [
"abstract class I${1:RuleName}DeleteRepository {\t$0",
" Future<Either<${1:RuleName}DeleteRepositoryError, ${2:T}>> call(${3:T} param);",
"}\t$0"
],
"description": "repository delete type - for Dart Clean Arch"
},
"Dart Clean Arch - Repository Interface Type: Update": {
"prefix": ["repository-interface-update"],
"body": [
"abstract class I${1:RuleName}UpdateRepository {\t$0",
" Future<Either<${1:RuleName}UpdateRepositoryError, ${2:T}>> call(${3:T} param);",
"}\t$0"
],
"description": "repository update type - for Dart Clean Arch"
},
"Dart Clean Arch - Repository Interface Type: Get": {
"prefix": ["repository-interface-get"],
"body": [
"abstract class IGet${1:RuleName}Repository {\t$0",
" Future<Either<Get${1:RuleName}RepositoryError, ${2:T}>> call(${3:T} param);",
"}\t$0"
],
"description": "repository get type - for Dart Clean Arch"
},
"Dart Clean Arch - Repository Interface Type: Get List": {
"prefix": ["repository-interface-get-list"],
"body": [
"abstract class IGetList${1:RuleName}Repository {\t$0",
" Future<Either<GetList${1:RuleName}RepositoryError, ${2:T}>> call(${3:T} param);",
"}\t$0"
],
"description": "repository get type - for Dart Clean Arch"
},
// Usecase
"Dart Clean Arch - UseCase Type: Set": {
"prefix": ["usecase-set"],
"body": [
"abstract class I${1:RuleName}Usecase {\t$0",
" Future<Either<${1:RuleName}UseCaseError, ${2:T}>> call(${3:T} param);",
"}\t$0",
" \t$0",
"class ${1:RuleName}Usecase implements I${1:RuleName}Usecase {\t$0",
" final I${1:RuleName}Repository _repository; \t$0",
" \t$0",
" ${1:RuleName}Usecase(this._repository);\t$0",
" \t$0",
" @override\t$0",
" Future<Either<${1:RuleName}UseCaseError, ${2:T}>> call(${3:T} param) async {\t$0",
" final result = await this._repository.call(param);\t$0",
" return result;\t$0",
" }\t$0",
"}\t$0"
],
"description": "Usecase set type - for Dart Clean Arch"
},
"Dart Clean Arch - UseCase Type: Delete": {
"prefix": ["usecase-delete"],
"body": [
"abstract class I${1:RuleName}DeleteUsecase {\t$0",
" Future<Either<${1:RuleName}DeleteUseCaseError, ${2:T}>> call(${3:T} param);",
"}\t$0",
" \t$0",
"class ${1:RuleName}DeleteUsecase implements I${1:RuleName}DeleteUsecase {\t$0",
" final I${1:RuleName}DeleteRepository _repository; \t$0",
" \t$0",
" ${1:RuleName}DeleteUsecase(this._repository);\t$0",
" \t$0",
" @override\t$0",
" Future<Either<${1:RuleName}DeleteUseCaseError, ${2:T}>> call(${3:T} param) async {\t$0",
" final result = await this._repository.call(param);\t$0",
" return result;\t$0",
" }\t$0",
"}\t$0"
],
"description": "Usecase delete type - for Dart Clean Arch"
},
"Dart Clean Arch - UseCase Type: Update": {
"prefix": ["usecase-update"],
"body": [
"abstract class I${1:RuleName}UpdateUsecase {\t$0",
" Future<Either<${1:RuleName}UpdateUseCaseError, ${2:T}>> call(${3:T} param);",
"}\t$0",
" \t$0",
"class ${1:RuleName}UpdateUsecase implements I${1:RuleName}UpdateUsecase {\t$0",
" final I${1:RuleName}UpdateRepository _repository; \t$0",
" \t$0",
" ${1:RuleName}UpdateUsecase(this._repository);\t$0",
" \t$0",
" @override\t$0",
" Future<Either<${1:RuleName}UpdateUseCaseError, ${2:T}>> call(${3:T} param) async {\t$0",
" final result = await this._repository.call(param);\t$0",
" return result;\t$0",
" }\t$0",
"}\t$0"
],
"description": "Usecase update type - for Dart Clean Arch"
},
"Dart Clean Arch - UseCase Type: Get": {
"prefix": ["usecase-get"],
"body": [
"abstract class IGet${1:RuleName}Usecase {\t$0",
" Future<Either<Get${1:RuleName}UseCaseError, ${2:T}>> call(${3:T} param);",
"}\t$0",
" \t$0",
"class Get${1:RuleName}Usecase implements IGet${1:RuleName}Usecase {\t$0",
" final IGet${1:RuleName}Repository _repository; \t$0",
" \t$0",
" Get${1:RuleName}Usecase(this._repository);\t$0",
" \t$0",
" @override\t$0",
" Future<Either<Get${1:RuleName}UseCaseError, ${2:T}>> call(${3:T} param) async {\t$0",
" final result = await this._repository.call(param);\t$0",
" return result;\t$0",
" }\t$0",
"}\t$0"
],
"description": "Usecase get list type - for Dart Clean Arch"
},
"Dart Clean Arch - UseCase Type: Get List": {
"prefix": ["usecase-get-list"],
"body": [
"abstract class IGet${1:RuleName}ListUsecase {\t$0",
" Future<Either<Get${1:RuleName}ListUseCaseError, ${2:T}>> call(${3:T} param);",
"}\t$0",
" \t$0",
"class Get${1:RuleName}ListUsecase implements IGet${1:RuleName}ListUsecase {\t$0",
" final IGet${1:RuleName}ListRepository _repository; \t$0",
" \t$0",
" Get${1:RuleName}ListUsecase(this._repository);\t$0",
" \t$0",
" @override\t$0",
" Future<Either<Get${1:RuleName}ListUseCaseError, ${2:T}>> call(${3:T} param) async {\t$0",
" final result = await this._repository.call(param);\t$0",
" return result;\t$0",
" }\t$0",
"}\t$0"
],
"description": "Usecase get list type - for Dart Clean Arch"
},
// Error
"Dart Clean Arch - Error Type: Set": {
"prefix": ["error-set"],
"body": [
"abstract class ${1:RuleName}Failure implements Exception {}\t$0",
" \t$0",
"class ${1:RuleName}UseCaseError extends ${1:RuleName}Failure {\t$0",
" final String message;\t$0",
" ${1:RuleName}UseCaseError({this.message = ''});\t$0",
"}\t$0",
" \t$0",
"class ${1:RuleName}RepositoryError extends ${1:RuleName}UseCaseError {\t$0",
" final String message;\t$0",
" ${1:RuleName}RepositoryError({this.message = ''});\t$0",
"}\t$0",
" \t$0",
"class ${1:RuleName}DataSourceError extends ${1:RuleName}RepositoryError {\t$0",
" final String message;\t$0",
" ${1:RuleName}DataSourceError({this.message = ''});\t$0",
"}\t$0",
"\t$0"
],
"description": "Error set type - for Dart Clean Arch"
},
"Dart Clean Arch - Error Type: Delete": {
"prefix": ["error-delete"],
"body": [
"abstract class ${1:RuleName}DeleteFailure implements Exception {}\t$0",
" \t$0",
"class ${1:RuleName}DeleteUseCaseError extends ${1:RuleName}DeleteFailure {\t$0",
" final String message;\t$0",
" ${1:RuleName}DeleteUseCaseError({this.message = ''});\t$0",
"}\t$0",
" \t$0",
"class ${1:RuleName}DeleteRepositoryError extends ${1:RuleName}DeleteUseCaseError {\t$0",
" final String message;\t$0",
" ${1:RuleName}DeleteRepositoryError({this.message = ''});\t$0",
"}\t$0",
" \t$0",
"class ${1:RuleName}DeleteDataSourceError extends ${1:RuleName}DeleteRepositoryError {\t$0",
" final String message;\t$0",
" ${1:RuleName}DeleteDataSourceError({this.message = ''});\t$0",
"}\t$0",
"\t$0"
],
"description": "Error delete type - for Dart Clean Arch"
},
"Dart Clean Arch - Error Type: Update": {
"prefix": ["error-update"],
"body": [
"abstract class ${1:RuleName}UpdateFailure implements Exception {}\t$0",
" \t$0",
"class ${1:RuleName}UpdateUseCaseError extends ${1:RuleName}UpdateFailure {\t$0",
" final String message;\t$0",
" ${1:RuleName}UpdateUseCaseError({this.message = ''});\t$0",
"}\t$0",
" \t$0",
"class ${1:RuleName}UpdateRepositoryError extends ${1:RuleName}UpdateUseCaseError {\t$0",
" final String message;\t$0",
" ${1:RuleName}UpdateRepositoryError({this.message = ''});\t$0",
"}\t$0",
" \t$0",
"class ${1:RuleName}UpdateDataSourceError extends ${1:RuleName}UpdateRepositoryError {\t$0",
" final String message;\t$0",
" ${1:RuleName}UpdateDataSourceError({this.message = ''});\t$0",
"}\t$0",
"\t$0"
],
"description": "Error update type - for Dart Clean Arch"
},
"Dart Clean Arch - Error Type: Get": {
"prefix": ["error-get"],
"body": [
"abstract class Get${1:RuleName}Failure implements Exception {}\t$0",
" \t$0",
"class Get${1:RuleName}UseCaseError extends Get${1:RuleName}Failure {\t$0",
" final String message;\t$0",
" Get${1:RuleName}UseCaseError({this.message = ''});\t$0",
"}\t$0",
" \t$0",
"class Get${1:RuleName}RepositoryError extends Get${1:RuleName}UseCaseError {\t$0",
" final String message;\t$0",
" Get${1:RuleName}RepositoryError({this.message = ''});\t$0",
"}\t$0",
" \t$0",
"class Get${1:RuleName}DataSourceError extends Get${1:RuleName}RepositoryError {\t$0",
" final String message;\t$0",
" Get${1:RuleName}DataSourceError({this.message = ''});\t$0",
"}\t$0",
"\t$0"
],
"description": "Error get type - for Dart Clean Arch"
},
"Dart Clean Arch - Error Type: Get List": {
"prefix": ["error-get-list"],
"body": [
"abstract class GetList${1:RuleName}Failure implements Exception {}\t$0",
" \t$0",
"class GetList${1:RuleName}UseCaseError extends GetList${1:RuleName}Failure {\t$0",
" final String message;\t$0",
" GetList${1:RuleName}UseCaseError({this.message = ''});\t$0",
"}\t$0",
" \t$0",
"class GetList${1:RuleName}RepositoryError extends GetList${1:RuleName}UseCaseError {\t$0",
" final String message;\t$0",
" GetList${1:RuleName}RepositoryError({this.message = ''});\t$0",
"}\t$0",
" \t$0",
"class GetList${1:RuleName}DataSourceError extends GetList${1:RuleName}RepositoryError {\t$0",
" final String message;\t$0",
" GetList${1:RuleName}DataSourceError({this.message = ''});\t$0",
"}\t$0",
"\t$0"
],
"description": "Error get list type - for Dart Clean Arch"
},
// Infra
// Datasource
"Dart Clean Arch - DataSource Interface Type: Set": {
"prefix": ["datasource-interface-set"],
"body": [
"abstract class I${1:RuleName}DataSource {\t$0",
" Future<${2:T}> call(${3:T} param);",
"}\t$0"
],
"description": "datasource set type - for Dart Clean Arch"
},
"Dart Clean Arch - DataSource Interface Type: Delete": {
"prefix": ["datasource-interface-delete"],
"body": [
"abstract class I${1:RuleName}DeleteDataSource {\t$0",
" Future<${2:T}> call(${3:T} param);",
"}\t$0"
],
"description": "datasource delete type - for Dart Clean Arch"
},
"Dart Clean Arch - DataSource Interface Type: Update": {
"prefix": ["datasource-interface-update"],
"body": [
"abstract class I${1:RuleName}UpdateDataSource {\t$0",
" Future<${2:T}> call(${3:T} param);",
"}\t$0"
],
"description": "datasource update type - for Dart Clean Arch"
},
"Dart Clean Arch - DataSource Interface Type: Get": {
"prefix": ["datasource-interface-get"],
"body": [
"abstract class IGet${1:RuleName}DataSource {\t$0",
" Future<${2:T}> call(${3:T} param);",
"}\t$0"
],
"description": "datasource get type - for Dart Clean Arch"
},
"Dart Clean Arch - DataSource Interface Type: Get List": {
"prefix": ["datasource-interface-get-list"],
"body": [
"abstract class IGetList${1:RuleName}DataSource {\t$0",
" Future<${2:T}> call(${3:T} param);",
"}\t$0"
],
"description": "datasource get type - for Dart Clean Arch"
},
// Repository
"Dart Clean Arch - Repository Type: Set": {
"prefix": ["repository-set"],
"body": [
"class ${1:RuleName}Repository implements I${1:RuleName}Repository {\t$0",
" final I${1:RuleName}DataSource _datasource; \t$0",
" \t$0",
" ${1:RuleName}Repository(this._datasource);\t$0",
" \t$0",
" @override\t$0",
" Future<Either<${1:RuleName}RepositoryError, ${2:T}>> call(${3:T} param) async {\t$0",
" try {\t$0",
" final result = await this.datasource.call(param);\t$0",
" return Right(result);\t$0",
" } on ${1:RuleName}DataSourceError catch (error) {\t$0",
" return Left(${1:RuleName}DataSourceError(message: 'error on repository: ${error.message}'));",
" } catch (error, stacktrace) {\t$0",
" return Left(${1:RuleName}RepositoryError(message: 'error on repository: ${error.toString()}: ${stacktrace.toString()}'),);",
" }\t$0",
" }\t$0",
"}\t$0"
],
"description": "repository set type - for Dart Clean Arch"
},
"Dart Clean Arch - Repository Type: Delete": {
"prefix": ["repository-delete"],
"body": [
"class ${1:RuleName}DeleteRepository implements I${1:RuleName}DeleteRepository {\t$0",
" final I${1:RuleName}DataSource _datasource; \t$0",
" \t$0",
" ${1:RuleName}DeleteRepository(this._datasource);\t$0",
" \t$0",
" @override\t$0",
" Future<Either<${1:RuleName}DeleteRepositoryError, ${2:T}>> call(${3:T} param) async {\t$0",
" try {\t$0",
" final result = await this.datasource.call(param);\t$0",
" return Right(result);\t$0",
" } on ${1:RuleName}DeleteDataSourceError catch (error) {\t$0",
" return Left(${1:RuleName}DeleteDataSourceError(message: 'error on repository: ${error.message}'));",
" } catch (error, stacktrace) {\t$0",
" return Left(${1:RuleName}DeleteRepositoryError(message: 'error on repository: ${error.toString()}: ${stacktrace.toString()}'),);",
" }\t$0",
" }\t$0",
"}\t$0"
],
"description": "repository delete type - for Dart Clean Arch"
},
"Dart Clean Arch - Repository Type: Update": {
"prefix": ["repository-update"],
"body": [
"class ${1:RuleName}UpdateRepository implements I${1:RuleName}UpdateRepository {\t$0",
" final I${1:RuleName}UpdateDataSource _datasource; \t$0",
" \t$0",
" ${1:RuleName}UpdateRepository(this._datasource);\t$0",
" \t$0",
" @override\t$0",
" Future<Either<${1:RuleName}UpdateRepositoryError, ${2:T}>> call(${3:T} param) async {\t$0",
" try {\t$0",
" final result = await this.datasource.call(param);\t$0",
" return Right(result);\t$0",
" } on ${1:RuleName}UpdateDataSourceError catch (error) {\t$0",
" return Left(${1:RuleName}UpdateDataSourceError(message: 'error on repository: ${error.message}'));",
" } catch (error, stacktrace) {\t$0",
" return Left(${1:RuleName}UpdateRepositoryError(message: 'error on repository: ${error.toString()}: ${stacktrace.toString()}'),);",
" }\t$0",
" }\t$0",
"}\t$0"
],
"description": "repository update type - for Dart Clean Arch"
},
"Dart Clean Arch - Repository Type: Get": {
"prefix": ["repository-get"],
"body": [
"class Get${1:RuleName}Repository implements IGet${1:RuleName}Repository {\t$0",
" final IGet${1:RuleName}DataSource _datasource; \t$0",
" \t$0",
" Get${1:RuleName}Repository(this._datasource);\t$0",
" \t$0",
" @override\t$0",
" Future<Either<Get${1:RuleName}RepositoryError, ${2:T}>> call(${3:T} param) async {\t$0",
" try {\t$0",
" final result = await this.datasource.call(param);\t$0",
" return Right(result);\t$0",
" } on Get${1:RuleName}DataSourceError catch (error) {\t$0",
" return Left(Get${1:RuleName}DataSourceError(message: 'error on repository: ${error.message}'));",
" } catch (error, stacktrace) {\t$0",
" return Left(Get${1:RuleName}RepositoryError(message: 'error on repository: ${error.toString()}: ${stacktrace.toString()}'),);",
" }\t$0",
" }\t$0",
"}\t$0"
],
"description": "repository get type - for Dart Clean Arch"
},
"Dart Clean Arch - Repository Type: Get List": {
"prefix": ["repository-get-list"],
"body": [
"class GetList${1:RuleName}Repository implements IGetList${1:RuleName}Repository {\t$0",
" final IGetList${1:RuleName}DataSource _datasource; \t$0",
" \t$0",
" GetList${1:RuleName}Repository(this._datasource);\t$0",
" \t$0",
" @override\t$0",
" Future<Either<GetList${1:RuleName}RepositoryError, ${2:T}>> call(${3:T} param) async {\t$0",
" try {\t$0",
" final result = await this.datasource.call(param);\t$0",
" return Right(result);\t$0",
" } on GetList${1:RuleName}DataSourceError catch (error) {\t$0",
" return Left(GetList${1:RuleName}DataSourceError(message: 'error on repository: ${error.message}'));",
" } catch (error, stacktrace) {\t$0",
" return Left(GetList${1:RuleName}RepositoryError(message: 'error on repository: ${error.toString()}: ${stacktrace.toString()}'),);",
" }\t$0",
" }\t$0",
"}\t$0"
],
"description": "repository get list type - for Dart Clean Arch"
},
// External
// DataSource
"Dart Clean Arch - DataSource Type: Set": {
"prefix": ["datasource-set"],
"body": [
"class ${1:RuleName}DataSource implements I${1:RuleName}DataSource {\t$0",
" final GraphqlService _graphqlService;",
" \t$0",
" ${1:RuleName}DataSource(this._graphqlService);\t$0",
" \t$0",
" @override\t$0",
" Future<${2:T}> call(${3:T} param) async {\t$0",
" final graphql = await this._graphqlService.graphqlMutation(mutation: mutationOf${1:RuleName});\t$0",
" if (graphql.result.hasException == true) {\t$0",
" throw ${1:RuleName}DataSourceError(message: 'erro ao submeter');\t$0",
" }\t$0",
" return ${2:T}();",
" }\t$0",
"}\t$0"
],
"description": "datasource set type - for Dart Clean Arch"
},
"Dart Clean Arch - DataSource Type: Delete": {
"prefix": ["datasource-delete"],
"body": [
"class ${1:RuleName}DeleteDataSource implements I${1:RuleName}DeleteDataSource {\t$0",
" final GraphqlService _graphqlService;",
" \t$0",
" ${1:RuleName}DeleteDataSource(this._graphqlService);\t$0",
" \t$0",
" @override\t$0",
" Future<${2:T}> call(${3:T} param) async {\t$0",
" final graphql = await this._graphqlService.graphqlMutation(mutation: mutationOf${1:RuleName}Delete);\t$0",
" if (graphql.result.hasException == true) {\t$0",
" throw ${1:RuleName}DeleteDataSourceError(message: 'erro ao deletar');\t$0",
" }\t$0",
" return ${2:T}();",
" }\t$0",
"}\t$0"
],
"description": "datasource delete type - for Dart Clean Arch"
},
"Dart Clean Arch - DataSource Type: Update": {
"prefix": ["datasource-update"],
"body": [
"class ${1:RuleName}UpdateDataSource implements I${1:RuleName}UpdateDataSource {\t$0",
" final GraphqlService _graphqlService;",
" \t$0",
" ${1:RuleName}UpdateDataSource(this._graphqlService);\t$0",
" \t$0",
" @override\t$0",
" Future<${2:T}> call(${3:T} param) async {\t$0",
" final graphql = await this._graphqlService.graphqlMutation(mutation: mutationOf${1:RuleName}Update);\t$0",
" if (graphql.result.hasException == true) {\t$0",
" throw ${1:RuleName}UpdateDataSourceError(message: 'erro ao atualizar');\t$0",
" }\t$0",
" return ${2:T}();",
" }\t$0",
"}\t$0"
],
"description": "datasource update type - for Dart Clean Arch"
},
"Dart Clean Arch - DataSource Type: Get": {
"prefix": ["datasource-get"],
"body": [
"class Get${1:RuleName}DataSource implements IGet${1:RuleName}DataSource {\t$0",
" final GraphqlService _graphqlService;",
" \t$0",
" Get${1:RuleName}DataSource(this._graphqlService);\t$0",
" \t$0",
" @override\t$0",
" Future<${2:T}> call(${3:T} param) async {\t$0",
" final graphql = await this._graphqlService.graphqlMutation(mutation: mutationOfGet${1:RuleName});\t$0",
" if (graphql.result.hasException == true) {\t$0",
" throw Get${1:RuleName}DataSourceError(message: 'erro ao buscar');\t$0",
" }\t$0",
" return ${2:T}();",
" }\t$0",
"}\t$0"
],
"description": "datasource get type - for Dart Clean Arch"
},
"Dart Clean Arch - DataSource Type: Get List": {
"prefix": ["datasource-get-list"],
"body": [
"class GetList${1:RuleName}DataSource implements IGetList${1:RuleName}DataSource {\t$0",
" final GraphqlService _graphqlService;",
" \t$0",
" GetList${1:RuleName}DataSource(this._graphqlService);\t$0",
" \t$0",
" @override\t$0",
" Future<${2:T}> call(${3:T} param) async {\t$0",
" final graphql = await this._graphqlService.graphqlMutation(mutation: mutationOfGetList${1:RuleName});\t$0",
" if (graphql.result.hasException == true) {\t$0",
" throw GetList${1:RuleName}DataSourceError(message: 'erro ao buscar a lista');\t$0",
" }\t$0",
" return ${2:T}();",
" }\t$0",
"}\t$0"
],
"description": "datasource get list type - for Dart Clean Arch"
},
// GraphQl Node Document
"GraphQl Node Document - Document Type: query": {
"prefix": ["graphql-document-query"],
"body": ["const queryOf${1:RuleName} = r'''\t$0", " \t$0", "''';\t$0"],
"description": "document type query - for GraphQl Node Document"
},
"GraphQl Node Document - Document Type: mutation": {
"prefix": ["graphql-document-mutation"],
"body": ["const mutationOf${1:RuleName} = r'''\t$0", " \t$0", "''';\t$0"],
"description": "document type mutation - for GraphQl Node Document"
},
"GraphQl Node Document - Document Type: subscription": {
"prefix": ["graphql-document-subscription"],
"body": [
"const subscriptionOf${1:RuleName} = r'''\t$0",
" \t$0",
"''';\t$0"
],
"description": "document type subscription - for GraphQl Node Document"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment