-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
2,078 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
/target | ||
**/*.rs.bk |
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
[package] | ||
name = "readspacer-api" | ||
version = "0.1.0" | ||
authors = ["Jayy-Lmao <jameswarringtonholman@gmail.com>"] | ||
edition = "2018" | ||
|
||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html | ||
|
||
[dependencies] | ||
postgres = "0.15.2" | ||
actix-web = "1.0.7" | ||
serde = { version = "1.0.101", features = ["derive"] } | ||
|
||
[[bin]] | ||
name = "readspacer-api" | ||
path = "src/main.rs" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
FROM ekidd/rust-musl-builder AS build | ||
WORKDIR /usr/src/ | ||
USER root | ||
|
||
# install rustup/cargo | ||
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y | ||
ENV PATH /root/.cargo/bin:$PATH | ||
|
||
# Add compilation target for later scratch container | ||
ENV RUST_TARGETS="x86_64-unknown-linux-musl" | ||
RUN rustup target install x86_64-unknown-linux-musl | ||
|
||
# Creating a placeholder project | ||
RUN USER=root cargo new readspacer-api | ||
WORKDIR /usr/src/readspacer-api | ||
|
||
# moving deps info | ||
COPY ./Cargo.lock ./Cargo.lock | ||
COPY ./Cargo.toml ./Cargo.toml | ||
|
||
# Caching deps | ||
RUN cargo build --target x86_64-unknown-linux-musl --release | ||
RUN rm target/x86_64-unknown-linux-musl/release/deps/readspacer* | ||
|
||
# Replacing with actual src | ||
RUN rm src/*.rs | ||
COPY ./src ./src | ||
|
||
# Only code changes should need to compile | ||
RUN cargo build --target x86_64-unknown-linux-musl --release | ||
|
||
# This creates a TINY container with the executable! Like 4-5mb srsly | ||
FROM scratch | ||
COPY --from=build /usr/src/readspacer-api/target/x86_64-unknown-linux-musl/release/readspacer-api . | ||
USER 1000 | ||
CMD ["./readspacer-api"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
use actix_web::{web, App, HttpServer, Responder}; | ||
use serde::Serialize; | ||
|
||
mod person; | ||
|
||
#[derive(Serialize)] | ||
pub struct Person { | ||
pub person_id: i32, | ||
pub person_name: String | ||
} | ||
|
||
fn get_person_list() -> impl Responder { | ||
let mut vec:Vec<Person> = Vec::new(); | ||
person::get_person_all(&mut vec); | ||
web::Json(vec) | ||
} | ||
|
||
// Use i32 for int and serial in postgresql | ||
fn get_person(info: web::Path<i32>) -> impl Responder { | ||
let mut vec:Vec<Person> = Vec::new(); | ||
person::get_person_by_id(&mut vec, info.into_inner()); | ||
web::Json(vec) | ||
} | ||
|
||
fn greet() -> impl Responder { | ||
"Yo there" | ||
} | ||
|
||
fn main() { | ||
println!("Server starting..."); | ||
HttpServer::new(|| { | ||
App::new() | ||
.service(web::resource("/hello") | ||
.route(web::get().to(greet))) | ||
.service(web::resource("/persons/{person_id}") | ||
.route(web::get().to(get_person))) | ||
// .route(web::delete().to(delete_person)) | ||
// .route(web::put().to(update_person))) | ||
.service(web::resource("/persons") | ||
.route(web::get().to(get_person_list))) | ||
// .route(web::post().to(create_person))) | ||
}) | ||
.bind("0.0.0.0:8000") | ||
.unwrap() | ||
.run() | ||
.unwrap(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
extern crate postgres; | ||
use postgres::{Connection, TlsMode}; | ||
use std::env; | ||
// static PG_CONNECTION_STRING: &str = "postgresql://jayy-lmao:yeetus@db:5442"; | ||
|
||
pub fn get_person_all(vec: &mut Vec<crate::Person>) { | ||
let pg_connection_string = env::var("DATABASE_URI").expect("need a db uri"); | ||
println!("Connecting to {}", pg_connection_string); | ||
let conn = Connection::connect(&pg_connection_string[..], TlsMode::None) .unwrap(); | ||
println!("Connection is fine"); | ||
for row in &conn.query("SELECT person_id, person_name FROM persons", &[]).unwrap() { | ||
let person = crate::Person { | ||
person_id: row.get(0), | ||
person_name: row.get(1) | ||
}; | ||
vec.push(person); | ||
} | ||
} | ||
|
||
pub fn get_person_by_id(vec: &mut Vec<crate::Person>, id: i32) { | ||
let pg_connection_string = env::var("DATABASE_URI").expect("need a db uri"); | ||
let conn = Connection::connect(&pg_connection_string[..], TlsMode::None) .unwrap(); | ||
for row in &conn.query("SELECT person_id, person_name FROM persons WHERE person_id = $1", &[&id]).unwrap() { | ||
let person = crate::Person { | ||
person_id: row.get(0), | ||
person_name: row.get(1) | ||
}; | ||
vec.push(person); | ||
} | ||
} |
Submodule readspacer-api
deleted from
fefe53