Implement chat server auth, models, handlers, and docs context
This commit is contained in:
1 parent
23602efd5f
commit
f6b27565cd
16 files changed
+1285
-152
No files matched your search
@@ -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();
|
||||
|
||||
|
||||
Reference in new issue
Block a user