#!/bin/sh # wcmkroom - create a new room in fanr.sqlite # Usage: ./wcmkroom # Requires: genulid binary in same directory. set -eu DB="fanr.sqlite" # Get script directory (POSIX) SCRIPT_DIR=$(dirname "$0") GENULID="$SCRIPT_DIR/genulid" if [ ! -x "$GENULID" ]; then echo "Error: $GENULID not found or not executable" >&2 exit 1 fi if [ $# -lt 3 ]; then echo "Usage: $0 " >&2 echo "Example: $0 'General' 'Main chat room' alice bob charlie" >&2 exit 1 fi ROOM_NAME="$1" ROOM_BANNER="$2" shift 2 # Generate ULID for room ID ROOM_ID=$("$GENULID") if [ -z "$ROOM_ID" ]; then echo "Error: genulid produced empty output" >&2 exit 1 fi # Insert room sqlite3 "$DB" <&2 # Add initial members MEMBER_COUNT=0 for USERNAME in "$@"; do USER_ID=$(sqlite3 "$DB" "SELECT id FROM users WHERE username = '$USERNAME';") if [ -n "$USER_ID" ]; then sqlite3 "$DB" <&2 MEMBER_COUNT=$((MEMBER_COUNT + 1)) else echo " Warning: User '$USERNAME' not found, skipping." >&2 fi done if [ $MEMBER_COUNT -eq 0 ]; then echo "Error: No valid users provided. Deleting room '$ROOM_NAME'." >&2 sqlite3 "$DB" "DELETE FROM rooms WHERE id = '$ROOM_ID';" exit 1 fi