Skip to content

Commit 95c3b10

Browse files
committed
feat(example): add and update examples
1 parent 5f7fa60 commit 95c3b10

File tree

4 files changed

+84
-7
lines changed

4 files changed

+84
-7
lines changed

Examples/SimpleQuery/main.swift Examples/Query/main.swift

+7-4
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22
import Foundation
33
import Libsql
44

5-
let db = try Libsql.Database(":memory:")
5+
let db = try Database(":memory:")
66
let conn = try db.connect()
77

8-
_ = try conn.execute("create table users(id integer primary key autoincrement, name text)")
8+
_ = try conn.executeBatch("""
9+
create table users(id integer primary key autoincrement, name text);
10+
insert into users (name) values ('Iku Turso');
11+
""")
912

1013
let forenames = ["John", "Mary", "Alice", "Mark"]
1114
let surnames = ["Doe", "Smith", "Jones", "Taylor"]
@@ -14,8 +17,8 @@ for forename in forenames {
1417
for surname in surnames {
1518
_ = try conn.execute(
1619
"insert into users (name) values (?)",
17-
["\(forename) \(surname)"
18-
]);
20+
["\(forename) \(surname)"]
21+
);
1922
}
2023
}
2124

Examples/Transaction/main.swift

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
2+
import Foundation
3+
import Libsql
4+
5+
let db = try Database(":memory:")
6+
let conn = try db.connect()
7+
8+
_ = try conn.executeBatch("""
9+
create table users(id integer primary key autoincrement, name text);
10+
insert into users (name) values ('Iku Turso');
11+
""")
12+
13+
let tx = try conn.transaction();
14+
15+
let forenames = ["John", "Mary", "Alice", "Mark"]
16+
let surnames = ["Doe", "Smith", "Jones", "Taylor"]
17+
18+
for forename in forenames {
19+
for surname in surnames {
20+
_ = try tx.execute(
21+
"insert into users (name) values (?)",
22+
["\(forename) \(surname)"]
23+
);
24+
}
25+
}
26+
27+
tx.rollback() // Discards all inserts
28+
29+
30+
// Only returns "1 Iku turso", since the transaction was rollbacked.
31+
for row in try conn.query("select * from users", [1]) {
32+
print(try row.getInt(0), try row.getString(1))
33+
}
34+

Examples/Vector/main.swift

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
2+
import Foundation
3+
import Libsql
4+
5+
let db = try Database(":memory:")
6+
let conn = try db.connect()
7+
8+
try conn.executeBatch("""
9+
DROP TABLE IF EXISTS movies;
10+
CREATE TABLE movies (title TEXT, year INT, embedding F32_BLOB(3));
11+
CREATE INDEX movies_idx ON movies (libsql_vector_idx(embedding));
12+
INSERT INTO movies (title, year, embedding) VALUES
13+
('Napoleon', 2023, vector32('[1,2,3]')),
14+
('Black Hawk Down', 2001, vector32('[10,11,12]')),
15+
('Gladiator', 2000, vector32('[7,8,9]')),
16+
('Blade Runner', 1982, vector32('[4,5,6]'));
17+
""")
18+
19+
let rows = try conn.query("""
20+
SELECT title, year
21+
FROM vector_top_k('movies_idx', '[4,5,6]', 3)
22+
JOIN movies ON movies.rowid = id
23+
""")
24+
25+
for row in rows {
26+
print(try row.get(0), try row.get(1))
27+
}
28+

Package.swift

+15-3
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ var package = Package(
1111
.library(name: "Libsql", targets: ["Libsql"]),
1212

1313
// Examples
14-
.executable(name: "SimpleQuery", targets: ["SimpleQuery"])
14+
.executable(name: "Query", targets: ["Query"]),
15+
.executable(name: "Transaction", targets: ["Transaction"]),
16+
.executable(name: "Vector", targets: ["Vector"]),
1517
],
1618
targets: [
1719
.target(name: "Libsql", dependencies: ["CLibsql"]),
@@ -20,9 +22,19 @@ var package = Package(
2022

2123
// Examples
2224
.executableTarget(
23-
name: "SimpleQuery",
25+
name: "Query",
2426
dependencies: ["Libsql"],
25-
path: "Examples/SimpleQuery"
27+
path: "Examples/Query"
28+
),
29+
.executableTarget(
30+
name: "Transaction",
31+
dependencies: ["Libsql"],
32+
path: "Examples/Transaction"
33+
),
34+
.executableTarget(
35+
name: "Vector",
36+
dependencies: ["Libsql"],
37+
path: "Examples/Vector"
2638
),
2739
]
2840
)

0 commit comments

Comments
 (0)