diff --git a/.sqlx/query-02438c29c249ce2b446d15a41d07c40ce73946e62744a486cbbac256c4a4cf55.json b/.sqlx/query-02438c29c249ce2b446d15a41d07c40ce73946e62744a486cbbac256c4a4cf55.json
deleted file mode 100644
index 69bc7e1..0000000
--- a/.sqlx/query-02438c29c249ce2b446d15a41d07c40ce73946e62744a486cbbac256c4a4cf55.json
+++ /dev/null
@@ -1,34 +0,0 @@
-{
- "db_name": "PostgreSQL",
- "query": "SELECT items.id, items.name, item_classes.name AS \"class_name\"\n FROM items\n JOIN item_classes\n ON items.class = item_classes.id\n WHERE items.original_packaging = $1",
- "describe": {
- "columns": [
- {
- "ordinal": 0,
- "name": "id",
- "type_info": "Uuid"
- },
- {
- "ordinal": 1,
- "name": "name",
- "type_info": "Varchar"
- },
- {
- "ordinal": 2,
- "name": "class_name",
- "type_info": "Varchar"
- }
- ],
- "parameters": {
- "Left": [
- "Uuid"
- ]
- },
- "nullable": [
- false,
- true,
- false
- ]
- },
- "hash": "02438c29c249ce2b446d15a41d07c40ce73946e62744a486cbbac256c4a4cf55"
-}
diff --git a/.sqlx/query-11f1edc0dce92fbd127159dbebd72b16de479d071f03433b480087bef99f5b1c.json b/.sqlx/query-11f1edc0dce92fbd127159dbebd72b16de479d071f03433b480087bef99f5b1c.json
new file mode 100644
index 0000000..54ca168
--- /dev/null
+++ b/.sqlx/query-11f1edc0dce92fbd127159dbebd72b16de479d071f03433b480087bef99f5b1c.json
@@ -0,0 +1,37 @@
+{
+ "db_name": "PostgreSQL",
+ "query": "INSERT INTO item_events (item, date, event, description)\n VALUES ($1, $2, $3, $4)",
+ "describe": {
+ "columns": [],
+ "parameters": {
+ "Left": [
+ "Uuid",
+ "Date",
+ {
+ "Custom": {
+ "name": "item_event",
+ "kind": {
+ "Enum": [
+ "acquire",
+ "borrow",
+ "buy",
+ "dispose",
+ "gift",
+ "loan",
+ "lose",
+ "recieve_gift",
+ "return_borrowed",
+ "return_loaned",
+ "sell",
+ "use"
+ ]
+ }
+ }
+ },
+ "Varchar"
+ ]
+ },
+ "nullable": []
+ },
+ "hash": "11f1edc0dce92fbd127159dbebd72b16de479d071f03433b480087bef99f5b1c"
+}
diff --git a/.sqlx/query-1b860018f6cd1b18d28a87ba9da1f96fd7c8021c5e2ea652e6f6fe11a823c32c.json b/.sqlx/query-1b860018f6cd1b18d28a87ba9da1f96fd7c8021c5e2ea652e6f6fe11a823c32c.json
new file mode 100644
index 0000000..490fb4b
--- /dev/null
+++ b/.sqlx/query-1b860018f6cd1b18d28a87ba9da1f96fd7c8021c5e2ea652e6f6fe11a823c32c.json
@@ -0,0 +1,72 @@
+{
+ "db_name": "PostgreSQL",
+ "query": "SELECT\n event AS \"event: ItemEvent\",\n next AS \"next: ItemState\"\n FROM item_events_transitions\n WHERE state = $1",
+ "describe": {
+ "columns": [
+ {
+ "ordinal": 0,
+ "name": "event: ItemEvent",
+ "type_info": {
+ "Custom": {
+ "name": "item_event",
+ "kind": {
+ "Enum": [
+ "acquire",
+ "borrow",
+ "buy",
+ "dispose",
+ "gift",
+ "loan",
+ "lose",
+ "recieve_gift",
+ "return_borrowed",
+ "return_loaned",
+ "sell",
+ "use"
+ ]
+ }
+ }
+ }
+ },
+ {
+ "ordinal": 1,
+ "name": "next: ItemState",
+ "type_info": {
+ "Custom": {
+ "name": "item_state",
+ "kind": {
+ "Enum": [
+ "borrowed",
+ "inactive",
+ "loaned",
+ "owned"
+ ]
+ }
+ }
+ }
+ }
+ ],
+ "parameters": {
+ "Left": [
+ {
+ "Custom": {
+ "name": "item_state",
+ "kind": {
+ "Enum": [
+ "borrowed",
+ "inactive",
+ "loaned",
+ "owned"
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "nullable": [
+ false,
+ false
+ ]
+ },
+ "hash": "1b860018f6cd1b18d28a87ba9da1f96fd7c8021c5e2ea652e6f6fe11a823c32c"
+}
diff --git a/.sqlx/query-3dedb7b184103c1d418f7b94e26c75aea0c7d22e009299d1b87443e350578171.json b/.sqlx/query-3fe94e76159c7911db688854710271e351ca34273dfdb21a7499f588715a91ee.json
similarity index 71%
rename from .sqlx/query-3dedb7b184103c1d418f7b94e26c75aea0c7d22e009299d1b87443e350578171.json
rename to .sqlx/query-3fe94e76159c7911db688854710271e351ca34273dfdb21a7499f588715a91ee.json
index 767fcf1..e93c7e3 100644
--- a/.sqlx/query-3dedb7b184103c1d418f7b94e26c75aea0c7d22e009299d1b87443e350578171.json
+++ b/.sqlx/query-3fe94e76159c7911db688854710271e351ca34273dfdb21a7499f588715a91ee.json
@@ -1,6 +1,6 @@
{
"db_name": "PostgreSQL",
- "query": "\n WITH RECURSIVE cte AS (\n SELECT\n id,\n ARRAY[]::UUID[] AS parents,\n ARRAY[]::VARCHAR[] AS parent_names,\n ARRAY[]::VARCHAR[] AS parent_class_names\n FROM items\n WHERE parent IS NULL\n\n UNION\n\n SELECT\n items.id,\n cte.parents || items.parent,\n cte.parent_names || parent.name,\n cte.parent_class_names || parent_class.name\n FROM cte\n JOIN items\n ON items.parent = cte.id\n JOIN items AS \"parent\"\n ON parent.id = cte.id\n JOIN item_classes AS \"parent_class\"\n ON parent.class = parent_class.id\n )\n SELECT\n cte.id AS \"id!\",\n items.name,\n items.class,\n item_classes.name AS \"class_name\",\n cte.parents AS \"parents!\",\n cte.parent_names AS \"parent_names!: Vec