import json
import sys

class newJSON() :
    def __init__(
        self,
        old_type,
        old_address,
        old_date,
        old_dateSent,
        old_read,
        old_status,
        old_body,
        old_locked,
        old_subId,
    ) :
        self.subscriptionId = old_subId
        self.address = old_address
        self.body = old_body
        self.date = old_date
        self.dateSent = old_dateSent
        self.locked = 1 if old_locked else 0
        self.protocol = None
        self.read = 1 if old_read else 0
        self.status = old_status
        self.type = old_type
        self.serviceCenter = None
        self.backupType = "sms"

def formatMsg(oldMsgJSON) :
    return newJSON(
        oldMsgJSON["type"],
        oldMsgJSON["address"],
        oldMsgJSON["date"],
        oldMsgJSON["dateSent"],
        oldMsgJSON["read"],
        oldMsgJSON["status"],
        oldMsgJSON["body"],
        oldMsgJSON["locked"],
        oldMsgJSON["subId"],
    ).__dict__

def convertBck(old_path : str,new_path : str) :
    with open(old_path) as file :
        data = json.load(file)
    
    newBck = []
    for msg in data["messages"] :
        # Skip all message without body
        if msg["body"] != "" :
            newBck.append(formatMsg(msg))
    # Write to new file
    with open(new_path,"w") as file :
        json.dump(newBck,file,indent=2)   

def appendToBck(old_path : str,target_path : str) :
    # Load file to import
    with open(old_path) as file :
        old_data = json.load(file)
    # Load file to edit
    with open(new_path,"rw") as file :
        target = json.load(file)
    for msg in data["messages"] :
        if msg["body"] != "" :
            data.append(formatMsg(msg))
    with open(new_path,"w") as file :
        json.dump(newBck,file,indent=2)   

def main() :
    if len(sys.argv) != 3 :
        print(
            "Unrecognized arguments :\n",
            "python3 conv_backup.py ./backup.json ./new.json"
        )
        sys.exit(1)
    convertBck(sys.argv[1],sys.argv[2])
    sys.exit(0)
    

if __name__ == "__main__" :
    main()