aboutsummaryrefslogtreecommitdiff
path: root/server/src/jchat_dev.erl
diff options
context:
space:
mode:
authorCalvin Morrison <calvin@pobox.com>2025-09-03 21:15:36 -0400
committerCalvin Morrison <calvin@pobox.com>2025-09-03 21:15:36 -0400
commit49fa5aa2a127bdf8924d02bf77e5086b39c7a447 (patch)
tree61d86a7705dacc9fddccc29fa79d075d83ab8059 /server/src/jchat_dev.erl
i vibe coded itHEADmaster
Diffstat (limited to 'server/src/jchat_dev.erl')
-rw-r--r--server/src/jchat_dev.erl88
1 files changed, 88 insertions, 0 deletions
diff --git a/server/src/jchat_dev.erl b/server/src/jchat_dev.erl
new file mode 100644
index 0000000..6178c20
--- /dev/null
+++ b/server/src/jchat_dev.erl
@@ -0,0 +1,88 @@
+-module(jchat_dev).
+
+-export([seed_data/0, create_sample_conversations/0]).
+
+-include("jchat.hrl").
+
+%% Create sample data for development/testing
+seed_data() ->
+ create_sample_users(),
+ create_sample_conversations(),
+ ok.
+
+%% Create sample users
+create_sample_users() ->
+ Users = [
+ {<<"user1">>, <<"Alice">>},
+ {<<"user2">>, <<"Bob">>},
+ {<<"user3">>, <<"Charlie">>}
+ ],
+
+ lists:foreach(fun({UserId, Username}) ->
+ jchat_db:create_user(UserId, #{
+ <<"username">> => Username
+ })
+ end, Users).
+
+%% Create sample conversations
+create_sample_conversations() ->
+ % Conversation 1: General chat
+ Conv1Id = jchat_utils:generate_id(),
+ jchat_db:create_conversation(Conv1Id, #{
+ title => <<"General Chat">>,
+ description => <<"General discussion for everyone">>,
+ is_archived => false,
+ is_muted => false,
+ participant_ids => [<<"user1">>, <<"user2">>, <<"user3">>],
+ metadata => #{}
+ }),
+
+ % Add some messages to conversation 1
+ create_sample_messages(Conv1Id, [
+ {<<"user1">>, <<"Hello everyone! 👋">>},
+ {<<"user2">>, <<"Hey Alice! How's it going?">>},
+ {<<"user3">>, <<"Good morning all!">>}
+ ]),
+
+ % Conversation 2: Project discussion
+ Conv2Id = jchat_utils:generate_id(),
+ jchat_db:create_conversation(Conv2Id, #{
+ title => <<"JCHAT Project">>,
+ description => <<"Discussion about the JCHAT implementation">>,
+ is_archived => false,
+ is_muted => false,
+ participant_ids => [<<"user1">>, <<"user2">>],
+ metadata => #{}
+ }),
+
+ % Add some messages to conversation 2
+ create_sample_messages(Conv2Id, [
+ {<<"user1">>, <<"The server is working great now!">>},
+ {<<"user2">>, <<"Awesome! Ready to test the client integration.">>}
+ ]),
+
+ ok.
+
+%% Helper to create sample messages
+create_sample_messages(ConversationId, Messages) ->
+ lists:foldl(fun({SenderId, Body}, N) ->
+ MessageId = jchat_utils:generate_id(),
+ jchat_db:create_message(MessageId, #{
+ conversation_id => ConversationId,
+ sender_id => SenderId,
+ body => Body,
+ body_type => <<"text/plain">>,
+ attachments => null,
+ reply_to_message_id => null,
+ is_system_message => false,
+ metadata => #{}
+ }),
+
+ % Update conversation with last message info
+ jchat_db:update_conversation(ConversationId, #{
+ last_message_id => MessageId,
+ message_count => N + 1
+ }),
+
+ N + 1
+ end, 0, Messages).