diff options
Diffstat (limited to 'server/src/jchat_dev.erl')
-rw-r--r-- | server/src/jchat_dev.erl | 88 |
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). |