import 'dart:io'; import 'dart:convert'; import 'package:mysql1/mysql1.dart'; import 'package:mess_api/config.dart'; Future getTestNumber() async { final settings = ConnectionSettings( host: DBConfig.dbHost, port: DBConfig.dbPort, user: DBConfig.dbUser, password: DBConfig.dbPassword, db: DBConfig.dbName, ); final conn = await MySqlConnection.connect(settings); final results = await conn.query( 'SELECT test_number FROM test_table LIMIT 1', ); await conn.close(); if (results.isEmpty) { throw Exception('DB CONNECT FAIL: no data'); } final value = results.first['test_number'] as int; if (value != 777) { throw Exception('DB CONNECT FAIL: value=$value'); } return value; } void main() async { final server = await HttpServer.bind( InternetAddress.anyIPv4, AppConfig.port, ); print('API server running on http://localhost:${AppConfig.port}'); await for (HttpRequest request in server) { // CORS request.response.headers ..set('Access-Control-Allow-Origin', '*') ..set('Access-Control-Allow-Methods', 'GET, POST, OPTIONS') ..set('Access-Control-Allow-Headers', 'Content-Type'); if (request.method == 'OPTIONS') { request.response ..statusCode = HttpStatus.ok ..close(); continue; } if (request.uri.path == '/db') { try { final value = await getTestNumber(); request.response ..statusCode = HttpStatus.ok ..headers.contentType = ContentType.json ..write(jsonEncode({'value': value})) ..close(); } catch (e) { request.response ..statusCode = HttpStatus.internalServerError ..headers.contentType = ContentType.json ..write(jsonEncode({'error': e.toString()})) ..close(); } continue; } request.response ..statusCode = HttpStatus.notFound ..close(); } }