Implement chat server auth, models, handlers, and docs context

This commit is contained in:
Foxyz committed 2026-02-20 03:44:02 +03:00
1 parent 23602efd5f
commit f6b27565cd
16 files changed
+1285 -152

No files matched your search

+25 -9
View File
@@ -3,6 +3,7 @@ import 'package:chat_server/objectbox.g.dart';
import 'package:relic/relic.dart';
import '../auth/auth_middleware.dart';
import '../state/app_state.dart';
import '../utils/extensions.dart';
/// Get messages for a channel
@@ -36,11 +37,12 @@ Future<Response> getMessagesHandler(Request req) async {
// Get messages
final query = messageBox
.query(Message_.channelId.equals(channelId))
.order(Message_.createdAt, flags: Order.descending)
.query(ChatMessage_.channelId.equals(channelId))
.order(ChatMessage_.createdAt, flags: Order.descending)
.build();
final messages = query.find(limit: limit);
query.limit = limit;
final messages = query.find();
query.close();
return Response.ok(
@@ -99,7 +101,7 @@ Future<Response> sendMessageHandler(Request req) async {
}
// Get user info for caching
final userQuery = userBox.query(User_.userId.equals(userId)).build();
final userQuery = userBox.query(ChatUser_.userId.equals(userId)).build();
final user = userQuery.findFirst();
userQuery.close();
@@ -110,7 +112,7 @@ Future<Response> sendMessageHandler(Request req) async {
}
// Create message with cached author info
final message = Message(
final message = ChatMessage(
channelId: channelId,
authorLocalId: user.id,
authorUserId: user.userId,
@@ -136,7 +138,7 @@ Future<Response> sendMessageHandler(Request req) async {
}
/// Edit a message
Future<Response> editMessageHandler(Request req, String messageIdStr) async {
Future<Response> editMessageHandler(Request req) async {
final userId = userIdProperty[req];
if (userId == null) {
@@ -145,6 +147,13 @@ Future<Response> editMessageHandler(Request req, String messageIdStr) async {
);
}
final messageIdStr = req.rawPathParameters[#messageId];
if (messageIdStr == null) {
return Response.badRequest(
body: Body.fromString('Invalid message ID'),
);
}
final messageId = int.tryParse(messageIdStr);
if (messageId == null) {
return Response.badRequest(
@@ -160,7 +169,7 @@ Future<Response> editMessageHandler(Request req, String messageIdStr) async {
}
// Get user to verify ownership
final userQuery = userBox.query(User_.userId.equals(userId)).build();
final userQuery = userBox.query(ChatUser_.userId.equals(userId)).build();
final user = userQuery.findFirst();
userQuery.close();
@@ -193,7 +202,7 @@ Future<Response> editMessageHandler(Request req, String messageIdStr) async {
}
/// Delete a message
Future<Response> deleteMessageHandler(Request req, String messageIdStr) async {
Future<Response> deleteMessageHandler(Request req) async {
final userId = userIdProperty[req];
if (userId == null) {
@@ -202,6 +211,13 @@ Future<Response> deleteMessageHandler(Request req, String messageIdStr) async {
);
}
final messageIdStr = req.rawPathParameters[#messageId];
if (messageIdStr == null) {
return Response.badRequest(
body: Body.fromString('Invalid message ID'),
);
}
final messageId = int.tryParse(messageIdStr);
if (messageId == null) {
return Response.badRequest(
@@ -217,7 +233,7 @@ Future<Response> deleteMessageHandler(Request req, String messageIdStr) async {
}
// Get user to verify ownership
final userQuery = userBox.query(User_.userId.equals(userId)).build();
final userQuery = userBox.query(ChatUser_.userId.equals(userId)).build();
final user = userQuery.findFirst();
userQuery.close();