Skip to content

Instantly share code, notes, and snippets.

@felipecastrosales
Last active October 24, 2022 23:50
Show Gist options
  • Save felipecastrosales/89d12b800c59c11037d4fa10012916e2 to your computer and use it in GitHub Desktop.
Save felipecastrosales/89d12b800c59c11037d4fa10012916e2 to your computer and use it in GitHub Desktop.
solid.dart
abstract class Model{}
abstract class DatabaseLocal<T extends Model> {
Future<T> getById();
Future<T> create(T data);
Future<T> update(T data);
Future<T> delete(T data);
Future<T> createIndex(T data);
Future<T> getTableName();
Future<List<T>> joins();
}
class MemoryDatabaseLocalM<T extends Model> implements DatabaseLocal<T> {
@override
Future<T> create(T data) {
this.invokeInterceptBeforeCreate();
this.save();
this.invokeInterceptAfterCreate();
}
@override
Future<T> delete(T data) {
// TODO: implement delete
throw UnimplementedError();
}
@override
Future<T> getById() {
// TODO: implement getById
throw UnimplementedError();
}
@override
Future<T> update(T data) {
// TODO: implement update
throw UnimplementedError();
}
}
class SharedDatabaseLocalM<T extends Model> implements DatabaseLocal<T> {
@override
Future<T> create(T data) {
// TODO: implement create
throw UnimplementedError();
}
@override
Future<T> delete(T data) {
// TODO: implement delete
throw UnimplementedError();
}
@override
Future<T> getById() {
// TODO: implement getById
throw UnimplementedError();
}
@override
Future<T> update(T data) {
// TODO: implement update
throw UnimplementedError();
}
}
class HiveDatabaseLocalM<T extends Model> implements DatabaseLocal<T> {
@override
Future<T> create(T data) {
// TODO: implement create
throw UnimplementedError();
}
@override
Future<T> delete(T data) {
// TODO: implement delete
throw UnimplementedError();
}
@override
Future<T> getById() {
// TODO: implement getById
throw UnimplementedError();
}
@override
Future<T> update(T data) {
// TODO: implement update
throw UnimplementedError();
}
}
class UserDataBaseLocal {
final DatabaseLocal _databaseLocal;
UserDataBaseLocal(this._databaseLocal);
Future<UserModel> getById() async {
return await _databaseLocal.getById();
}
Future<UserModel> create(UserModel data) async {
return await _databaseLocal.create(data);
}
}
abstract class ClientRemote {
Future<dynamic> addIntercept(dynamic post);
Future<dynamic> request(dynamic post);
}
class FirebaseClientRemote implements ClientRemote {
FirebaseClientRemote();
dynamic firebaseClient;
@override
Future request(post) {
// TODO: implement request
throw UnimplementedError();
}
}
class FirebaseClientRemoteV2 implements ClientRemote {
FirebaseClientRemoteV2();
dynamic firebaseClient;
@override
Future request(post) {
// TODO: implement request
throw UnimplementedError();
}
}
class CepClientRemote implements ClientRemote {
dynamic httpClient;
@override
Future request(post) {
// TODO: implement request
throw UnimplementedError();
}
}
class ApiClientRemote implements ClientRemote {
@override
Future request(post) {
// TODO: implement request
throw UnimplementedError();
}
}
abstract class LoginDataSource {
Future<void> login(String username, String password);
}
class LoginDataSourceRemote implements LoginDataSource {
LoginDataSourceRemote(this.client);
final ClientRemote client;
@override
Future<void> login(String username, String password) {
client.request(post)
}
}
class LoginDataSourceFirebaseRemote implements LoginDataSource {
LoginDataSourceFirebaseRemote(this.client);
final ClientRemote client;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment