oci-sdk 0.1.0

Oracle Cloud Infrastructure SDK for Rust Lang
Documentation
mod lib;

use crate::lib::{AuthConfig, CreateTableDetails, Nosql, QueryDetails, TableLimits};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
    let nosql = Nosql::new(
        AuthConfig::new(
            String::from("ocid1.user.oc1..random"),
            String::from("/mnt/5cb80605-c86e-4351-b941-96d1cb6eadab/Documents/Projects/oci-sdk/oci-private-key.pem"),
            String::from("50:a6:c1:a1:da:71:57:dc:87:ae:90:af:9c:38:99:67"),
            String::from("ocid1.tenancy.oc1..random"),
            String::from("sa-saopaulo-1"),
            String::from(""),
        ),
        Some("http://localhost:12000".to_string()),
    );

    let table_limits = TableLimits {
        max_read_units: 1,
        max_write_units: 1,
        max_storage_in_g_bs: 1,
    };

    let create_table_details = CreateTableDetails {
        name: String::from("table_name"),
        compartment_id: String::from("ocid1.compartment.oc1..randomcompartment"),
        ddl_statement: String::from("CREATE TABLE table_name ( stream_name string, start number, finish number, shot_source string DEFAULT \"IMAGE_SERVER\" NOT NULL, video_source string DEFAULT \"OCI\" NOT NULL, PRIMARY KEY ( SHARD ( stream_name ), start ) )"),
        table_limits,
    };

    let response = nosql.create_table(create_table_details).await?;
    let body = response.text().await?;

    println!("{}", body);

    let query_details = QueryDetails {
        compartment_id: String::from("ocid1.compartment.oc1..randomcompartment"),
        statement: String::from("SELECT * FROM table_name"),
    };

    let response = nosql.query(query_details, 1000).await?;

    let body = response.text().await?;

    println!("{}", body);

    Ok(())
}

// {
//     "method": "POST",
//     "url": "http://localhost:12000/20190828/query?limit=1000",
//     "headers": {
//         "user-agent": "Oracle-PythonSDK/2.32.1 (python 3.9.7; x86_64-Linux)",
//         "accept-encoding": "gzip, deflate",
//         "accept": "application/json",
//         "connection": "keep-alive",
//         "content-type": "application/json",
//         "opc-client-info": "Oracle-PythonSDK/2.32.1",
//         "opc-request-id": "833D0CBCFA6547F6A94B5596EB7FBD6B",
//         "content-length": "103",
//         "date": "Sat, 23 Jul 2022 16:31:12 GMT",
//         "host": "localhost:12000",
//         "x-content-sha256": "zlP9czVeI11h9GVlklc/ptuhBjZLQtbCWpdKe663KSE=",
//         "authorization": 'Signature algorithm="rsa-sha256",headers="date (request-target) host content-length content-type x-content-sha256",keyId="ocid1.tenancy.oc1..random/ocid1.user.oc1..random/50:a6:c1:a1:da:71:57:dc:87:ae:90:af:9c:38:99:67",signature="ucLG7pN4egDwKgv9Rxc3kFLHq+rkF+BCNO/k2CgnASsPY+xObOU9BvCEkw7zOxD3B2UykeH2OHJ/76F5x7xZhEkFlRWju+fIgWo48m9d/lxTJ0NtfCoVZ8kZ7bNzg46NoMV++yMW6veKTL+skKYf00ybARs0KUTCsbEUL+yyXhcihrjX5vsG316vTfPDjZNOuWS/N5MCHIF8eSPlKrx5AiumEfFjhBaS8db49fxvb0l5TpMuArRZ0UydYH4LFh0YnHp455OnStL1NXSvSytpp5LOhePPxspCYTZoUTHVMO6A74Nvv5whKqpd366n2JouX0jgRAwVAALwRob+i7ns/g==",version="1"',
//     },
//     "_cookies": "",
//     "body": '{"compartmentId": "ocid1.compartment.oc1..randomcompartment", "statement": "SELECT * FROM table_name "}',
//     "hooks": {"response": []},
//     "_body_position": None,
// }