package com.w11k.lsql.example;
import com.w11k.lsql.LSql;
import com.w11k.lsql.LinkedRow;
import com.w11k.lsql.Row;
import com.w11k.lsql.Table;
import com.w11k.lsql.dialects.H2Dialect;
import com.w11k.lsql.jdbc.ConnectionProviders;
import org.joda.time.DateTime;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.HashMap;
import java.util.Map;
public class CrudExamples {
private LSql lSql;
@BeforeMethod
public void beforeMethod() throws Exception {
Connection conn = DriverManager.getConnection("jdbc:h2:mem:lsqlexamples;mode=postgresql");
lSql = new LSql(new H2Dialect(), ConnectionProviders.fromInstance(conn));
lSql.executeRawSql("CREATE TABLE person (" +
"id SERIAL PRIMARY KEY, " +
"name TEXT, " +
"birthday TIMESTAMP)");
lSql.executeRawSql("CREATE TABLE address (" +
"id SERIAL PRIMARY KEY, " +
"person_id INT REFERENCES person(id), " +
"city TEXT)");
}
@AfterMethod
public void afterMethod() {
lSql.executeRawSql("DROP TABLE address;");
lSql.executeRawSql("DROP TABLE person;");
}
@Test
public void insert() throws Exception {
/*
[[[
fdsfjdsfdsfdsfds fdsjfk jds lfdsf
- fsfdsfs
- fjdfdslfs
```
*/
Table personTable = lSql.table("person");
// Option 1: java.util.Map
Map<String, Object> person1 = new HashMap<String, Object>();
person1.put("name", "John");
person1.put("birthday", DateTime.parse("1980-10-1"));
personTable.insert(new Row(person1));
// Option 2: Use a Row class
Row person2 = Row.fromKeyVals(
"name", "Linus",
"birthday", DateTime.parse("1970-10-1")
);
personTable.insert(person2);
// Option 3: LinkedRow
LinkedRow person3 = personTable.newLinkedRow(
"name", "Linus",
"birthday", DateTime.parse("1970-10-1")
);
person3.save();
/*
```
]]]
*/
// Row and LinkedRow are subclasses of java.util.Map
}
@Test
public void get() throws Exception {
insert();
Table personTable = lSql.table("person");
LinkedRow linkedRow = personTable.load(1).get();
assert linkedRow.getString("name").equals("John");
}
}