/src/serenity/Userland/Libraries/LibSQL/AST/Describe.cpp
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2021, Mahmoud Mandour <ma.mandourr@gmail.com> |
3 | | * |
4 | | * SPDX-License-Identifier: BSD-2-Clause |
5 | | */ |
6 | | |
7 | | #include <LibSQL/AST/AST.h> |
8 | | #include <LibSQL/Database.h> |
9 | | #include <LibSQL/Meta.h> |
10 | | #include <LibSQL/ResultSet.h> |
11 | | #include <LibSQL/Row.h> |
12 | | |
13 | | namespace SQL::AST { |
14 | | |
15 | | ResultOr<ResultSet> DescribeTable::execute(ExecutionContext& context) const |
16 | 0 | { |
17 | 0 | auto const& schema_name = m_qualified_table_name->schema_name(); |
18 | 0 | auto const& table_name = m_qualified_table_name->table_name(); |
19 | 0 | auto table_def = TRY(context.database->get_table(schema_name, table_name)); |
20 | |
|
21 | 0 | auto describe_table_def = MUST(context.database->get_table("master"sv, "internal_describe_table"sv)); |
22 | 0 | auto descriptor = describe_table_def->to_tuple_descriptor(); |
23 | |
|
24 | 0 | ResultSet result { SQLCommand::Describe }; |
25 | 0 | TRY(result.try_ensure_capacity(table_def->columns().size())); |
26 | |
|
27 | 0 | for (auto& column : table_def->columns()) { |
28 | 0 | Tuple tuple(descriptor); |
29 | 0 | tuple[0] = column->name(); |
30 | 0 | tuple[1] = SQLType_name(column->type()); |
31 | |
|
32 | 0 | result.insert_row(tuple, Tuple {}); |
33 | 0 | } |
34 | |
|
35 | 0 | return result; |
36 | 0 | } |
37 | | |
38 | | } |