Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@stucchio
Created October 31, 2014 07:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stucchio/57895478411c3e7739b0 to your computer and use it in GitHub Desktop.
Save stucchio/57895478411c3e7739b0 to your computer and use it in GitHub Desktop.
module Storage
DB_HOST = ENV["POSTGRES_PORT_5432_TCP_ADDR"]
DB_PORT = ENV["POSTGRES_PORT_5432_TCP_PORT"]
DB_NAME = ENV["POSTGRES_DBNAME"]
DB_USER = ENV["POSTGRES_PGUSER"]
DB_PASS = ENV["POSTGRES_PGPASS"]
conn = connect(Postgres, DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_PORT)
immutable User
id::Int64
name::ASCIIString
end
UserRef = Union(Int64,String)
user_ref(u::User) = u.id::UserRef
function save_user(name::ASCIIString)
stmt = prepare(conn, "INSERT INTO users (name) VALUES (\$1);")
try
return execute(stmt, {name})
finally
finish(stmt)
end
end
function get_user(ref::UserRef)
stmt::DBI.StatementHandle
if (typeof(ref)==ASCIIString)
stmt = prepare(conn, "SELECT id, name FROM users WHERE name=\$1;")
else
stmt = prepare(conn, "SELECT id, name FROM users WHERE id=\$1;")
end
try
result = execute(stmt, {ref})
for row in result
return User(row[1], row[2])
end
finally
finish(stmt)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment