Skip to content

Object Data Model

mallocupiedRam edited this page Feb 16, 2022 · 29 revisions

Object Data Model

There are a number of different key objects in the Dronuts system. These are outlined below.

Customer

{
    "customer_id" :    int,        // Unique integer id
    "first_name" :     string,
    "last_name" :      string,
    "email" :          string,
    "phone_number" :   string,
    "password" :       string,    // Salted, hashed password.
    "addresses":       [Location] // Reference to LOCATION objects
} 

Example Customer

{
    "customer_id" :     12,
    "first_name":       "Riccardo",
    "last_name":        "Santoni",
    "email":            "[email protected]",
    "phone_number":     "415-509-2866",
    "password":         "735ed12abec12bdcb42b",
    "addresses":        [
                            {
                                "location_id":         12,
                                "street":              "5350 beeler street",
                                "city":                "Pittsburgh",
                                "state":               "PA",
                                "zipcode":             "15217",
                            }
                        ]
}

Store

{
    "store_id" :       int,        // Unique integer id
    "name" :           string,
    "email" :          string,
    "phone_number" :   string,
    "address":         Location   // Reference to LOCATION object
} 

Example Store

{
    "store_id" :       12,
    "name" :           "Dronuts Store #12",
    "email" :          "[email protected]",
    "phone_number":    "412-291-8119",  
    "address":         {
                           "location_id":         12,
                           "street":              "732 Filbert St",
                           "city":                "Pittsburgh",
                           "state":               "PA",
                           "zipcode":             "15232",
                        }
}

Employee

{
    "employee_id" : int, // UNIQUE
    "password" : string, // Hashed password, salted
    "first_name": string,
    "last_name": string,
    "email": string,
    "phone_number": string,
    "address": [Location]

}

Employee example

{
    "employee_id" : 1432,
    "password" : a12skdi8Ehd,
    "first_name" : John,
    "last_name":Smith,
    "email": [email protected],
    "phone_number": 412-102-3456,
    "address": {
                           "location_id":         12,
                           "street":              "100 Fifth Avenue",
                           "city":                "Pittsburgh",
                           "state":               "PA",
                           "zipcode":             "15252",
                        }

}

Drone

{
    "drone_id" : int, //UNIQUE
    "battery_life": int,
    "drone_location": int //Reference to LOCATION objects
    "drone_orderId": int, //Reference to the id number of a specific order
    "critical" : boolean //set based on battery life and drone malfunctions

}

Drone Example

{
    "drone_id" : 3,
    "battery_life" : 80,
    "drone_location":  12,
    "drone_orderId": 2,
    "critical" : False
}

Drone Example 2

{
    "drone_id" : 3,
    "battery_life" : 10,
    "drone_location":  12,
    "drone_orderId": 2,
    "critical" : True 
}

Location

{
    "location_id" :       int,        // Unique integer id
    "street_address" :    string,
    "city" :              string,
    "state" :             string,
    "zipcode":            string   
} 

Example Location

{
    "location_id":         12,
    "street":              "732 Filbert St",
    "city":                "Pittsburgh",
    "state":               "PA",
    "zipcode":             "15232",
}

Donut

{
    "donut_id" :       int,        // Unique integer id
    "flavor" :         string,        
    "price" :          float
} 

Example Donut

{
    "order_id" :       8,
    "flavor" :         "Cinnamon Sugar",
    "price" :          3.0
}

Order

{
    "order_id" :       int,        // Unique integer id
    "customer" :       Customer,        // Reference to CUSTOMER object
    "drone" :          Drone,        // Reference to DRONE object
    "location_id" :    Location,        // Reference to LOCATION object
    "store_id" :       Store,        // Reference to STORE object
    "order_items":     [Donut],   // Reference to DONUT objects
    "order_total":     float       // Sum of prices of DONUT objects and sales tax
} 

Example Order

{
    "order_id":            10,
    "customer":         {
                              "customer_id" :     12,
                              "first_name":       "Riccardo",
                              "last_name":        "Santoni",
                              "email":            "[email protected]",
                              "phone_number":     "415-509-2866",
                              "password":         "735ed12abec12bdcb42b",
                              "addresses":        [
                                                    {
                                                        "location_id":         12,
                                                         "street":              "5350 beeler street",
                                                         "city":                "Pittsburgh",
                                                         "state":               "PA",
                                                         "zipcode":             "15217",
                                                     }
                                                  ]
                         },
    "drone":             {
                              "drone_id" : 3,
                              "battery_life" : 80,
                              "drone_location":  12,
                              "drone_orderId": 2,
                              "critical" : False
                        },
    "location":         {
                               "location_id":         12,
                               "street":              "100 Fifth Avenue",
                               "city":                "Pittsburgh",
                               "state":               "PA",
                               "zipcode":             "15252",
                           },
    "store" :               {
                               "store_id" :       12,
                               "name" :           "Dronuts Store #12",
                               "email" :          "[email protected]",
                               "phone_number":    "412-291-8119",  
                               "address":         {
                                                      "location_id":         12,
                                                      "street":              "732 Filbert St",
                                                      "city":                "Pittsburgh",
                                                      "state":               "PA",
                                                      "zipcode":             "15232",
                                                   }
                          },
    "order_items":        [
                            {
                                "donut_id":            8,
                                "flavor":              "Cinnamon Sugar",
                                "price":               3.0,
                            },
                            {
                                "donut_id":            11,
                                "flavor":              "Boston Kreme",
                                "price":               3.5,
                            }
                        ],
    "order_total":      6.89
}

Payment

{ "payment_id" : int, // Unique integer id "order_total" : float,
"tax" : float,
"service_fee" : float,
"tip" : float,
"order_id": int // reference to an order object "customer_id": int // reference to a customer object "completion_status": bool
}

Example Payment

{ "payment_id" : 57, "order_total" : 31.50,
"tax" : 2.3625,
"service_fee" : 1.50,
"tip" : 5.00,
"order_id": 57, "customer_id": 34, "completion_status": false
}