Operaciones de inserción, actualización, eliminación, selección y rpcRaw seguras de tipos en tablas de InsForge usando el SDK de Kotlin con clases de datos de serialización Kotlinx.
Ejecutar una consulta SELECT y devolver una matriz JSON sin procesar. Utiliza este método cuando necesites trabajar con datos dinámicos/sin tipo, como consultas con uniones que devuelven objetos anidados.
import kotlinx.serialization.json.jsonArrayimport kotlinx.serialization.json.jsonObjectimport kotlinx.serialization.json.jsonPrimitive// Query with relationships - raw JSON accessval result = insforge.database .from("tweets") .select("id, content, profiles!tweets_user_id_fkey(username)") .executeRaw() // Returns JsonArrayresult.forEach { element -> val obj = element.jsonObject val id = obj["id"]?.jsonPrimitive?.content val content = obj["content"]?.jsonPrimitive?.content val profile = obj["profiles"]?.jsonObject val username = profile?.get("username")?.jsonPrimitive?.content println("Tweet by $username: $content")}// Dynamic queries where structure is unknownval rawData = insforge.database .from("dynamic_table") .select() .executeRaw()// Process raw JSON as neededrawData.forEach { element -> val obj = element.jsonObject obj.keys.forEach { key -> println("$key: ${obj[key]}") }}
Llamar a funciones almacenadas de PostgreSQL (RPC - Llamada a procedimiento remoto). Este método te permite invocar directamente funciones SQL definidas en tu base de datos.
// Define response data classes@Serializabledata class UserStats( val totalPosts: Int, val totalLikes: Int, val joinedAt: String)@Serializabledata class User( val id: String, val name: String, val email: String)// Call function with parametersval stats = insforge.database.rpc<UserStats>( "get_user_stats", mapOf("user_id" to 123))println("Total posts: ${stats.totalPosts}")// Call function without parametersval users = insforge.database.rpc<List<User>>("get_all_active_users")users.forEach { user -> println("User: ${user.name}")}// Call function returning a single valueval count = insforge.database.rpc<Int>("count_active_posts")println("Active posts: $count")// Call function with multiple parametersval result = insforge.database.rpc<List<Post>>( "search_posts", mapOf( "search_term" to "kotlin", "limit" to 10, "offset" to 0 ))