@@ -135,6 +135,48 @@ namespace async_postgres::lua {
135135 return 0 ;
136136 }
137137
138+ lua_protected_fn (describePrepared) {
139+ lua->CheckType (1 , async_postgres::connection_meta);
140+ lua->CheckType (2 , GLua::Type::String);
141+ lua->CheckType (3 , GLua::Type::Function);
142+
143+ auto state = lua_connection_state ();
144+ if (state->query ) {
145+ throw std::runtime_error (" query already in progress" );
146+ }
147+
148+ async_postgres::DescribePreparedCommand command = {lua->GetString (2 )};
149+ async_postgres::Query query = {std::move (command)};
150+
151+ if (lua->IsType (3 , GLua::Type::Function)) {
152+ query.callback = GLua::AutoReference (lua, 3 );
153+ }
154+
155+ state->query = std::move (query);
156+ return 0 ;
157+ }
158+
159+ lua_protected_fn (describePortal) {
160+ lua->CheckType (1 , async_postgres::connection_meta);
161+ lua->CheckType (2 , GLua::Type::String);
162+ lua->CheckType (3 , GLua::Type::Function);
163+
164+ auto state = lua_connection_state ();
165+ if (state->query ) {
166+ throw std::runtime_error (" query already in progress" );
167+ }
168+
169+ async_postgres::DescribePortalCommand command = {lua->GetString (2 )};
170+ async_postgres::Query query = {std::move (command)};
171+
172+ if (lua->IsType (3 , GLua::Type::Function)) {
173+ query.callback = GLua::AutoReference (lua, 3 );
174+ }
175+
176+ state->query = std::move (query);
177+ return 0 ;
178+ }
179+
138180 lua_protected_fn (reset) {
139181 lua->CheckType (1 , async_postgres::connection_meta);
140182
@@ -175,6 +217,8 @@ void register_connection_mt(GLua::ILuaInterface* lua) {
175217 register_lua_fn (queryParams);
176218 register_lua_fn (prepare);
177219 register_lua_fn (queryPrepared);
220+ register_lua_fn (describePrepared);
221+ register_lua_fn (describePortal);
178222 register_lua_fn (reset);
179223 register_lua_fn (setNotifyCallback);
180224
0 commit comments