 //: The resulting code is not as streamlined as usual GRDB code, but we could
 //: already do what we needed without much effort.
 //:
+//: ## Custom Protocol: MyDatabaseDecoder
+//:
 //: In the rest of this playground, we will define a **new realm of requests**.
 //:
 //: GRDB ships with three build-in realms of requests: requests of raw rows,

import GRDB

//: This playground demonstrates how one can implement **customized decoding of

    }
}

try dbQueue.read { db in
    print("> Fetch from SQL")
    let bases = try Base.fetchAll(db, "SELECT * FROM base")
    for base in bases {
        print(base.description)
    }
}

//: This is the end of this tour of **customized decoding of database rows**.
//:
//: In this tour, you have learned:
//:
//: - to keep things simple: as long as you can fetch rows, you can decode them
//: the way you want.
//: - to define a whole new realm of requests based on a custom protocol. This
//: involves writing a few extensions that give your protocol the same fluent
//: interface that is ready-made for the built-in FetchableRecord protocol. This
//: is more work, but you are granted with the full customization power.
