aboutsummaryrefslogblamecommitdiffstats
path: root/tjp.sh
blob: 888f09e9c6ddf2d1635ac4bc6a05d074d294d785 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
















                                                       
                                                                                                                                                                                   


                                                                                                                          






                                                                                                            















                                                                                                            





                                                                                                                                       

 

                                          
                                   
                    
                                                                                                                                                                                  

 
                                    


                                                                                                    
                    
                                                                                                                                                                   

 

                                     
                                   
                    
                                                                                                                                                                                  
 
 




                                                                                                                                                                       
                                                                                                                                 

 

                                   
                                                                                                                                                                   



                                   
                                                                                                            















                                                                                                                                                                                    
                                                                    

                                                               
                                                                                                                                     

 

 

                   


                       








                               
                         



                             


                          


                                     


                        


                                


                         






                                                                      



                   


                                                                      
          
                                 


                     
                                         


                                            
                                                 
                                                     
                                                  
                                                         
                                                
                                                    
                                                 
                                                        

                                                                             


          
#!/bin/sh

# Tool to add entries to journal on postgres on rimsky.
# Requires server to be up, ~/.pgpass to be in place.

# Database connection details
HOST="postgres.banded-neon.ts.net"
USER="postgresql"
DB="journal"
DB_CONTACTS="contacts"

# Add MOD contact
add_MOD_contact() {
	echo "Enter first name:"
	read mod_first_name
	echo "Enter last name:"
	read mod_last_name
    contact_id=$(psql -h "$HOST" -U "$USER" -d "$DB" -c "INSERT INTO contacts (first_name, last_name, contact_type) VALUES ('$mod_first_name', '$mod_last_name', 3) RETURNING id;")
    echo "MOD contact added with ID: $contact_id. Feel free to go in and add comments, email and phone number separately."
}

# Function to add a sleep entry
add_sleep_entry() {
    echo "Enter your sleep journal entry:"
    read entry
    psql -h "$HOST" -U "$USER" -d "$DB" -c "INSERT INTO journal_entries (entry, type) VALUES ('$entry', 4);"
}

# Function to add a personal entry
add_personal_entry() {
    echo "Enter your personal journal entry:"
    read entry
    psql -h "$HOST" -U "$USER" -d "$DB" -c "INSERT INTO journal_entries (entry, type) VALUES ('$entry', 2);"
}

# Function to add a MOD entry
add_MOD_entry() {
    echo "Enter your MOD journal entry:"
    read entry
    psql -h "$HOST" -U "$USER" -d "$DB" -c "INSERT INTO journal_entries (entry, type) VALUES ('$entry', 1);"
}

# Function to select all personal entries
list_personal_entries() {
    psql -h "$HOST" -U "$USER" -d "$DB" -c "SELECT id, date_added, entry, comment FROM journal_entries WHERE type = 2 ORDER BY id ASC;"
}

# Function to select all sleep entries
list_sleep_entries() {
    psql -h "$HOST" -U "$USER" -d "$DB" -c "SELECT id, date_added, entry, comment FROM journal_entries WHERE type = 4 ORDER BY id ASC;"
}

# Funtion to list personel entries by date
list_personal_entries_on_date() {
    echo "Enter date (YYYY-MM-DD):"
    read target_date
    psql -h "$HOST" -U "$USER" -d "$DB" -c "SELECT id, entry, date_added::DATE from journal_entries WHERE date_added::date = '$target_date' AND type = 2 ORDER BY date_added ASC;"
}

# Function to select all MOD entries
# list_MOD_entries() {
#     psql -h "$HOST" -U "$USER" -d "$DB" -c "\x" -c "SELECT * FROM journal_entries WHERE type = 1;"
# }
list_MOD_entries() {
    psql -h "$HOST" -U "$USER" -d "$DB" -c "\x" -c "SELECT id, date_added, entry, comment, meeting_id FROM journal_entries WHERE type = 1 ORDER BY date_added ASC;"
}

# Funtion to list MOD entries by date
list_MOD_entries_on_date() {
    echo "Enter date (YYYY-MM-DD):"
    read target_date
    psql -h "$HOST" -U "$USER" -d "$DB" -c "SELECT id, entry, date_added::DATE from journal_entries WHERE date_added::date = '$target_date' AND type = 1 ORDER BY date_added ASC;"
}

list_MOD_meeting_entries() {
    meeting_id=$1  # Change this to take the first argument directly
	psql -h "$HOST" -U "$USER" -d "$DB" -c "SELECT journal_entries.id, entry, date_added, meetings.name FROM public.journal_entries
													inner join meetings on journal_entries.meeting_id = meetings.id
													WHERE meetings.id = $meeting_id
													ORDER BY date_added ASC;"
}

# Function to list all MOD contacts
list_MOD_contacts() {
    psql -h "$HOST" -U "$USER" -d "$DB" -c "SELECT id, first_name, last_name, email, phone, contact_comments FROM contacts WHERE contact_type = 3 ORDER BY id ASC;"
}

# Function to list all MOD meetings
list_MOD_meetings() {
    psql -h "$HOST" -U "$USER" -d "$DB" -c "SELECT id, name, date, subject FROM meetings ORDER BY date ASC;"
}

# Function to add a new meeting
add_meeting() {
    echo "Enter meeting name:"
    read meeting_name
	echo "Enter date (ISO):"
	read meeting_date
	echo "Enter meeting subject:"
	read meeting_subject
    meeting_id=$(psql -h "$HOST" -U "$USER" -d "$DB" -t -c "INSERT INTO meetings (name, date, subject) VALUES ('$meeting_name', '$meeting_date', '$meeting_subject') RETURNING id;")
    echo "Meeting added with ID: $meeting_id"
}

# Function to add a journal entry for an existing meeting
add_entry_to_meeting() {
    meeting_id=$1  # Change this to take the first argument directly
    echo "Enter your journal entry for meeting ID $meeting_id:"
    read entry
    psql -h "$HOST" -U "$USER" -d "$DB" -c "INSERT INTO journal_entries (entry, meeting_id, type) VALUES ('$entry', $meeting_id, 1);"
}



# Main script logic
case "$1" in
    -s)
        add_sleep_entry
        ;;
    -p)
        add_personal_entry
        ;;
    -m)
        add_MOD_entry
        ;;
	-C)
		add_MOD_contact
		;;
    -Y) list_MOD_contacts
        ;;
    -l)
        list_personal_entries
        ;;
    -q)
        list_sleep_entries
        ;;
    -L)
        list_personal_entries_on_date
        ;;
    -M)
        list_MOD_entries
        ;;
    -D)
        list_MOD_entries_on_date
        ;;
    -F)
        list_MOD_meetings
        ;;
    -G)
        if [ -z "$2" ]; then
            echo "Error: Meeting ID is required when using -G option."
            exit 1
        fi
        list_MOD_meeting_entries "$2"
        ;;
    -e)
        add_meeting
        ;;
    -E)
        if [ -z "$2" ]; then
            echo "Error: Meeting ID is required when using -E option."
            exit 1
        fi
        add_entry_to_meeting "$2"
        ;;
    *)
        echo "Usage:"
        echo "  tjp -s - Add sleep entry"
        echo "  tjp -p - Add personal entry"
        echo "  tjp -m - Add MOD entry"
        echo "  tjp -C - Add MOD contact"
        echo "  tjp -Y - Select all MOD contacts"
        echo "  tjp -l - Select all personal entries"
        echo "  tjp -q - Select all sleep entries"
        echo "  tjp -L - Select personal entries by date"
        echo "  tjp -M - Select all MOD entries"
        echo "  tjp -D - Select MOD entries on date"
        echo "  tjp -F - Select all MOD meetings"
        echo "  tjp -G - Select all MOD meeting entries"
        echo "  tjp -e - Add new meeting (returns meeting ID)"
        echo "  tjp -E ID - Add new journal entry for meeting whose ID is ID"
        ;;
esac