init project setup of the backend with dart and go as well as the frontend with nextjs
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
import 'package:backend_dart/domain/entities/user.dart';
|
||||
import 'package:backend_dart/domain/repositories/user_repository.dart';
|
||||
|
||||
class RegisterUserUseCase {
|
||||
final UserRepository userRepository;
|
||||
|
||||
RegisterUserUseCase(this.userRepository);
|
||||
|
||||
Future<void> execute(String name, String email, String password) async {
|
||||
final user = User(
|
||||
id: 'generated-id', // Eine Methode zur ID-Erzeugung einfügen
|
||||
name: name,
|
||||
email: email,
|
||||
password: password, // In der Realität: Passwörter hashen
|
||||
);
|
||||
|
||||
await userRepository.create(user);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
int calculate() {
|
||||
return 6 * 7;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
class User {
|
||||
final String id;
|
||||
final String name;
|
||||
final String email;
|
||||
final String password;
|
||||
|
||||
User({
|
||||
required this.id,
|
||||
required this.name,
|
||||
required this.email,
|
||||
required this.password,
|
||||
});
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import 'package:backend_dart/domain/entities/user.dart';
|
||||
|
||||
abstract class UserRepository {
|
||||
Future<void> create(User user);
|
||||
Future<User?> findByEmail(String email);
|
||||
Future<User?> findById(String id);
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import 'dart:io';
|
||||
import 'package:yaml/yaml.dart';
|
||||
|
||||
class Config {
|
||||
final String databaseUrl;
|
||||
final String port;
|
||||
|
||||
Config({required this.databaseUrl, required this.port});
|
||||
|
||||
static Future<Config> load() async {
|
||||
final file = File('config.yaml');
|
||||
final content = await file.readAsString();
|
||||
final config = loadYaml(content);
|
||||
|
||||
return Config(
|
||||
databaseUrl: config['database']['url'],
|
||||
port: config['server']['port'],
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
import 'package:backend_dart/domain/entities/user.dart';
|
||||
import 'package:backend_dart/domain/repositories/user_repository.dart';
|
||||
import 'package:postgres/postgres.dart';
|
||||
|
||||
class PostgresUserRepository implements UserRepository {
|
||||
final PostgreSQLConnection connection;
|
||||
|
||||
PostgresUserRepository(this.connection);
|
||||
|
||||
@override
|
||||
Future<void> create(User user) async {
|
||||
await connection.query(
|
||||
'INSERT INTO users (id, name, email, password) VALUES (@id, @name, @mail, @pwd)',
|
||||
substitutionValues: {
|
||||
'id': user.id,
|
||||
'name': user.name,
|
||||
'mail': user.email,
|
||||
'pwd': user.password,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<User?> findByEmail(String email) async {
|
||||
final results = await connection.query(
|
||||
'SELECT id, name, email, password FROM users WHERE email = @mail',
|
||||
substitutionValues: {'mail': email},
|
||||
);
|
||||
|
||||
if (results.isNotEmpty) {
|
||||
final row = results.first;
|
||||
return User(
|
||||
id: row[0],
|
||||
name: row[1],
|
||||
email: row[2],
|
||||
password: row[3],
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@override
|
||||
Future<User?> findById(String id) async {
|
||||
final results = await connection.query(
|
||||
'SELECT id, name, email, password FROM users WHERE id = @id',
|
||||
substitutionValues: {'id': id},
|
||||
);
|
||||
|
||||
if (results.isNotEmpty) {
|
||||
final row = results.first;
|
||||
return User(
|
||||
id: row[0],
|
||||
name: row[1],
|
||||
email: row[2],
|
||||
password: row[3],
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:backend_dart/infrastructure/config/config.dart';
|
||||
|
||||
class Server {
|
||||
final Config config;
|
||||
|
||||
Server(this.config);
|
||||
|
||||
Future<void> start() async {
|
||||
final server =
|
||||
await HttpServer.bind(InternetAddress.anyIPv4, int.parse(config.port));
|
||||
print('Listening on port ${config.port}');
|
||||
|
||||
await for (HttpRequest request in server) {
|
||||
request.response
|
||||
..write('Welcome to ActaTempus!')
|
||||
..close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user