Last active
October 24, 2022 23:50
-
-
Save felipecastrosales/89d12b800c59c11037d4fa10012916e2 to your computer and use it in GitHub Desktop.
solid.dart
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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