{
  "projectId": "665b6e8d000998478790",
  "projectName": "TeraChat",
  "databases": [
    {
      "$id": "therachat_db",
      "name": "therachat_db",
      "enabled": true
    }
  ],
  "collections": [
    {
      "$id": "user-profiles",
      "$permissions": [
        "create(\"users\")",
        "read(\"users\")",
        "update(\"users\")",
        "delete(\"users\")"
      ],
      "databaseId": "therachat_db",
      "name": "user-profiles",
      "enabled": true,
      "documentSecurity": false,
      "attributes": [
        {
          "key": "userId",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 256
        },
        {
          "key": "userType",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "elements": [
            "admin",
            "client",
            "patient"
          ],
          "format": "enum",
          "size": 256
        },
        {
          "key": "fullName",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 50
        },
        {
          "key": "avatarId",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 100,
          "default": null
        },
        {
          "key": "avatarURL",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 300,
          "default": null
        },
        {
          "key": "about",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 500,
          "default": "Hey there, am using Asikhulume Therapy Chat!"
        },
        {
          "key": "lastSeenOnlineAt",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 256,
          "default": null
        },
        {
          "key": "status",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "elements": [
            "Online",
            "Offline",
            "Unavailable"
          ],
          "format": "enum",
          "size": 256,
          "default": "Offline"
        },
        {
          "key": "sessions",
          "type": "relationship",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "relatedCollection": "sessions",
          "relationType": "manyToMany",
          "twoWay": true,
          "twoWayKey": "participants",
          "onDelete": "setNull",
          "side": "child"
        },
        {
          "key": "changerId",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 100,
          "default": null
        },
        {
          "key": "changeLog",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 1000,
          "default": null
        }
      ],
      "indexes": [
        {
          "key": "created_at_idx",
          "type": "key",
          "status": "available",
          "error": "",
          "attributes": [
            "$createdAt"
          ],
          "orders": [
            "ASC"
          ]
        },
        {
          "key": "idxUserId",
          "type": "fulltext",
          "status": "available",
          "error": "",
          "attributes": [
            "userId"
          ],
          "orders": [
            "ASC"
          ]
        },
        {
          "key": "user_full_name_idx",
          "type": "fulltext",
          "status": "available",
          "error": "",
          "attributes": [
            "fullName"
          ],
          "orders": [
            "ASC"
          ]
        },
        {
          "key": "idx_user_id",
          "type": "unique",
          "status": "available",
          "error": "",
          "attributes": [
            "userId"
          ],
          "orders": [
            "ASC"
          ]
        }
      ]
    },
    {
      "$id": "sessions",
      "$permissions": [
        "create(\"users\")",
        "read(\"users\")",
        "update(\"users\")",
        "delete(\"users\")"
      ],
      "databaseId": "therachat_db",
      "name": "sessions",
      "enabled": true,
      "documentSecurity": false,
      "attributes": [
        {
          "key": "participants",
          "type": "relationship",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "relatedCollection": "user-profiles",
          "relationType": "manyToMany",
          "twoWay": true,
          "twoWayKey": "sessions",
          "onDelete": "setNull",
          "side": "parent"
        },
        {
          "key": "sessionMessages",
          "type": "relationship",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "relatedCollection": "session-messages",
          "relationType": "manyToOne",
          "twoWay": true,
          "twoWayKey": "session",
          "onDelete": "cascade",
          "side": "child"
        },
        {
          "key": "changerId",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 200,
          "default": null
        },
        {
          "key": "changeLog",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 1000,
          "default": null
        }
      ],
      "indexes": [
        {
          "key": "createdAtIdx",
          "type": "key",
          "status": "available",
          "error": "",
          "attributes": [
            "$createdAt"
          ],
          "orders": [
            "DESC"
          ]
        },
        {
          "key": "chatIdIdx",
          "type": "fulltext",
          "status": "available",
          "error": "",
          "attributes": [
            "$id"
          ],
          "orders": [
            "ASC"
          ]
        }
      ]
    },
    {
      "$id": "session-messages",
      "$permissions": [
        "create(\"users\")",
        "read(\"users\")",
        "update(\"users\")",
        "delete(\"users\")"
      ],
      "databaseId": "therachat_db",
      "name": "session-messages",
      "enabled": true,
      "documentSecurity": false,
      "attributes": [
        {
          "key": "attachments",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": true,
          "size": 100,
          "default": null
        },
        {
          "key": "recipientId",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 100
        },
        {
          "key": "senderId",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 100
        },
        {
          "key": "read",
          "type": "boolean",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "default": false
        },
        {
          "key": "message",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 1500
        },
        {
          "key": "session",
          "type": "relationship",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "relatedCollection": "sessions",
          "relationType": "manyToOne",
          "twoWay": true,
          "twoWayKey": "sessionMessages",
          "onDelete": "cascade",
          "side": "parent"
        },
        {
          "key": "editedAt",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 50,
          "default": null
        }
      ],
      "indexes": [
        {
          "key": "senderId_idx",
          "type": "key",
          "status": "available",
          "error": "",
          "attributes": [
            "senderId"
          ],
          "orders": [
            "ASC"
          ]
        },
        {
          "key": "read_idx",
          "type": "key",
          "status": "available",
          "error": "",
          "attributes": [
            "read"
          ],
          "orders": [
            "ASC"
          ]
        },
        {
          "key": "created_at_idx",
          "type": "key",
          "status": "available",
          "error": "",
          "attributes": [
            "$createdAt"
          ],
          "orders": [
            "DESC"
          ]
        }
      ]
    },
    {
      "$id": "patient-profiles",
      "$permissions": [
        "create(\"users\")",
        "read(\"users\")",
        "update(\"users\")",
        "delete(\"users\")"
      ],
      "databaseId": "therachat_db",
      "name": "patient-profiles",
      "enabled": true,
      "documentSecurity": false,
      "attributes": [
        {
          "key": "userId",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 256
        },
        {
          "key": "firstName",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 256
        },
        {
          "key": "lastName",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 256
        },
        {
          "key": "age",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 50,
          "default": null
        },
        {
          "key": "gender",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "elements": [
            "Male",
            "Female",
            "Other"
          ],
          "format": "enum",
          "size": 256,
          "default": null
        },
        {
          "key": "location",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 100
        },
        {
          "key": "employmentStatus",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 256
        },
        {
          "key": "relationshipStatus",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 256
        },
        {
          "key": "preferredLanguage",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 256
        },
        {
          "key": "currentMedication",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 256,
          "default": null
        },
        {
          "key": "medicalConditions",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 256,
          "default": null
        },
        {
          "key": "changerId",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 100,
          "default": null
        },
        {
          "key": "changeLog",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 1000,
          "default": null
        }
      ],
      "indexes": [
        {
          "key": "created_at_idx",
          "type": "key",
          "status": "available",
          "error": "",
          "attributes": [
            "$createdAt"
          ],
          "orders": [
            "ASC"
          ]
        },
        {
          "key": "idxUserId",
          "type": "fulltext",
          "status": "available",
          "error": "",
          "attributes": [
            "userId"
          ],
          "orders": [
            "ASC"
          ]
        },
        {
          "key": "idx_user_id",
          "type": "unique",
          "status": "available",
          "error": "",
          "attributes": [
            "userId"
          ],
          "orders": [
            "ASC"
          ]
        }
      ]
    },
    {
      "$id": "client-profiles",
      "$permissions": [
        "create(\"users\")",
        "read(\"users\")",
        "update(\"users\")",
        "delete(\"users\")"
      ],
      "databaseId": "therachat_db",
      "name": "client-profiles",
      "enabled": true,
      "documentSecurity": false,
      "attributes": [
        {
          "key": "userId",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 256
        },
        {
          "key": "title",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "elements": [
            "Dr",
            "Mr",
            "Mrs",
            "Miss"
          ],
          "format": "enum",
          "size": 256
        },
        {
          "key": "firstName",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 256
        },
        {
          "key": "lastName",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 256
        },
        {
          "key": "email",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 50,
          "format": "email"
        },
        {
          "key": "phoneNumber",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 256
        },
        {
          "key": "emergencyContact",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 256,
          "default": null
        },
        {
          "key": "physicalAddress",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 100,
          "default": null
        },
        {
          "key": "dob",
          "type": "datetime",
          "status": "available",
          "error": "",
          "required": true,
          "format": "datetime",
          "array": false
        },
        {
          "key": "specializedSkills",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": true,
          "size": 2000
        },
        {
          "key": "languages",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": true,
          "size": 2000
        },
        {
          "key": "nursingLicenceNumber",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 256
        },
        {
          "key": "qualificationEarned",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 256
        },
        {
          "key": "nursingSchool",
          "type": "string",
          "status": "available",
          "error": "",
          "required": true,
          "array": false,
          "size": 256
        },
        {
          "key": "graduationDate",
          "type": "datetime",
          "status": "available",
          "error": "",
          "required": true,
          "format": "datetime",
          "array": false
        },
        {
          "key": "changerId",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 100,
          "default": null
        },
        {
          "key": "changeLog",
          "type": "string",
          "status": "available",
          "error": "",
          "required": false,
          "array": false,
          "size": 1000,
          "default": null
        }
      ],
      "indexes": [
        {
          "key": "created_at_idx",
          "type": "key",
          "status": "available",
          "error": "",
          "attributes": [
            "$createdAt"
          ],
          "orders": [
            "ASC"
          ]
        },
        {
          "key": "idxUserId",
          "type": "fulltext",
          "status": "available",
          "error": "",
          "attributes": [
            "userId"
          ],
          "orders": [
            "ASC"
          ]
        },
        {
          "key": "idx_user_id",
          "type": "unique",
          "status": "available",
          "error": "",
          "attributes": [
            "userId"
          ],
          "orders": [
            "ASC"
          ]
        }
      ]
    }
  ],
  "buckets": [
    {
      "$id": "user-avatars",
      "$permissions": [
        "create(\"users\")",
        "read(\"users\")",
        "update(\"users\")",
        "delete(\"users\")"
      ],
      "fileSecurity": true,
      "name": "user-avatars-status",
      "enabled": true,
      "maximumFileSize": 52428800,
      "allowedFileExtensions": [
        "jpg",
        "png",
        "svg",
        "webp",
        "gif",
        "mp4",
        "jpeg"
      ],
      "compression": "none",
      "encryption": true,
      "antivirus": true
    },
    {
      "$id": "session-message-attachments",
      "$permissions": [
        "create(\"users\")",
        "read(\"users\")",
        "update(\"users\")",
        "delete(\"users\")"
      ],
      "fileSecurity": false,
      "name": "session-message-attachments",
      "enabled": true,
      "maximumFileSize": 52428800,
      "allowedFileExtensions": [
        "jpg",
        "png",
        "svg",
        "gif",
        "pdf"
      ],
      "compression": "gzip",
      "encryption": true,
      "antivirus": true
    }
  ]
}