From d60b7421ae5c180a70b7d6006c4fa540b6d2976f Mon Sep 17 00:00:00 2001 From: Vedant Koditkar Date: Sat, 16 Jul 2022 19:11:59 +0530 Subject: [PATCH 1/2] Add support for Table and TableRow block --- .../UpdateBlocks/TableRowUpdateBlock.cs | 17 ++++++++++++ .../UpdateBlocks/TableUpdateBlock.cs | 19 +++++++++++++ Src/Notion.Client/Models/Blocks/BlockType.cs | 6 +++++ Src/Notion.Client/Models/Blocks/IBlock.cs | 2 ++ Src/Notion.Client/Models/Blocks/TableBlock.cs | 27 +++++++++++++++++++ .../Models/Blocks/TableRowBlock.cs | 19 +++++++++++++ 6 files changed, 90 insertions(+) create mode 100644 Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableRowUpdateBlock.cs create mode 100644 Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableUpdateBlock.cs create mode 100644 Src/Notion.Client/Models/Blocks/TableBlock.cs create mode 100644 Src/Notion.Client/Models/Blocks/TableRowBlock.cs diff --git a/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableRowUpdateBlock.cs b/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableRowUpdateBlock.cs new file mode 100644 index 00000000..be422530 --- /dev/null +++ b/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableRowUpdateBlock.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Notion.Client +{ + public class TableRowUpdateBlock : UpdateBlock, IUpdateBlock + { + [JsonProperty("table_row")] + public Info TableRow { get; set; } + + public class Info + { + [JsonProperty("cells")] + public IEnumerable> Cells { get; set; } + } + } +} diff --git a/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableUpdateBlock.cs b/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableUpdateBlock.cs new file mode 100644 index 00000000..6079e27b --- /dev/null +++ b/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableUpdateBlock.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; + +namespace Notion.Client +{ + public class TableUpdateBlock : UpdateBlock, IUpdateBlock + { + [JsonProperty("table")] + public Info Table { get; set; } + + public class Info + { + [JsonProperty("has_column_header")] + public bool HasColumnHeader { get; set; } + + [JsonProperty("has_row_header")] + public bool HasRowHeader { get; set; } + } + } +} diff --git a/Src/Notion.Client/Models/Blocks/BlockType.cs b/Src/Notion.Client/Models/Blocks/BlockType.cs index 6ebec8f1..f3181b22 100644 --- a/Src/Notion.Client/Models/Blocks/BlockType.cs +++ b/Src/Notion.Client/Models/Blocks/BlockType.cs @@ -91,6 +91,12 @@ public enum BlockType [EnumMember(Value = "synced_block")] SyncedBlock, + [EnumMember(Value = "table")] + Table, + + [EnumMember(Value = "table_row")] + TableRow, + [EnumMember(Value = "unsupported")] Unsupported } diff --git a/Src/Notion.Client/Models/Blocks/IBlock.cs b/Src/Notion.Client/Models/Blocks/IBlock.cs index a7e925d1..f3c89d88 100644 --- a/Src/Notion.Client/Models/Blocks/IBlock.cs +++ b/Src/Notion.Client/Models/Blocks/IBlock.cs @@ -28,6 +28,8 @@ namespace Notion.Client [JsonSubtypes.KnownSubType(typeof(ParagraphBlock), BlockType.Paragraph)] [JsonSubtypes.KnownSubType(typeof(PDFBlock), BlockType.PDF)] [JsonSubtypes.KnownSubType(typeof(QuoteBlock), BlockType.Quote)] + [JsonSubtypes.KnownSubType(typeof(TableBlock), BlockType.Table)] + [JsonSubtypes.KnownSubType(typeof(TableRowBlock), BlockType.TableRow)] [JsonSubtypes.KnownSubType(typeof(TableOfContentsBlock), BlockType.TableOfContents)] [JsonSubtypes.KnownSubType(typeof(TemplateBlock), BlockType.Template)] [JsonSubtypes.KnownSubType(typeof(ToDoBlock), BlockType.ToDo)] diff --git a/Src/Notion.Client/Models/Blocks/TableBlock.cs b/Src/Notion.Client/Models/Blocks/TableBlock.cs new file mode 100644 index 00000000..e9f716df --- /dev/null +++ b/Src/Notion.Client/Models/Blocks/TableBlock.cs @@ -0,0 +1,27 @@ +using Newtonsoft.Json; + +namespace Notion.Client +{ + public class TableBlock : Block, IColumnChildrenBlock, INonColumnBlock + { + public override BlockType Type => BlockType.Table; + + [JsonProperty("table")] + public TableInfo Table { get; set; } + + public class TableInfo + { + [JsonProperty("table_width")] + public int TableWidth { get; set; } + + [JsonProperty("has_column_header")] + public bool HasColumnHeader { get; set; } + + [JsonProperty("has_row_header")] + public bool HasRowHeader { get; set; } + + [JsonProperty("children")] + public TableRowBlock Children { get; set; } + } + } +} diff --git a/Src/Notion.Client/Models/Blocks/TableRowBlock.cs b/Src/Notion.Client/Models/Blocks/TableRowBlock.cs new file mode 100644 index 00000000..978e7d8c --- /dev/null +++ b/Src/Notion.Client/Models/Blocks/TableRowBlock.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using Newtonsoft.Json; + +namespace Notion.Client +{ + public class TableRowBlock : Block, IColumnChildrenBlock, INonColumnBlock + { + public override BlockType Type => BlockType.TableRow; + + [JsonProperty("table_row")] + public Info TableRow { get; set; } + + public class Info + { + [JsonProperty("cells")] + public IEnumerable> Cells { get; set; } + } + } +} From f739b99ce5dac9e24acd62fa9921fa176283af2f Mon Sep 17 00:00:00 2001 From: Vedant Koditkar Date: Sat, 16 Jul 2022 19:19:03 +0530 Subject: [PATCH 2/2] =?UTF-8?q?Run=20linter=20=F0=9F=9A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BlocksUpdateParameters/UpdateBlocks/TableRowUpdateBlock.cs | 2 +- .../BlocksUpdateParameters/UpdateBlocks/TableUpdateBlock.cs | 2 +- Src/Notion.Client/Models/Blocks/TableBlock.cs | 2 +- Src/Notion.Client/Models/Blocks/TableRowBlock.cs | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableRowUpdateBlock.cs b/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableRowUpdateBlock.cs index be422530..c228de66 100644 --- a/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableRowUpdateBlock.cs +++ b/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableRowUpdateBlock.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Newtonsoft.Json; namespace Notion.Client diff --git a/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableUpdateBlock.cs b/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableUpdateBlock.cs index 6079e27b..ef0e8933 100644 --- a/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableUpdateBlock.cs +++ b/Src/Notion.Client/Api/Blocks/RequestParams/BlocksUpdateParameters/UpdateBlocks/TableUpdateBlock.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using Newtonsoft.Json; namespace Notion.Client { diff --git a/Src/Notion.Client/Models/Blocks/TableBlock.cs b/Src/Notion.Client/Models/Blocks/TableBlock.cs index e9f716df..dd20d94b 100644 --- a/Src/Notion.Client/Models/Blocks/TableBlock.cs +++ b/Src/Notion.Client/Models/Blocks/TableBlock.cs @@ -1,4 +1,4 @@ -using Newtonsoft.Json; +using Newtonsoft.Json; namespace Notion.Client { diff --git a/Src/Notion.Client/Models/Blocks/TableRowBlock.cs b/Src/Notion.Client/Models/Blocks/TableRowBlock.cs index 978e7d8c..e7214e6c 100644 --- a/Src/Notion.Client/Models/Blocks/TableRowBlock.cs +++ b/Src/Notion.Client/Models/Blocks/TableRowBlock.cs @@ -1,4 +1,4 @@ -using System.Collections.Generic; +using System.Collections.Generic; using Newtonsoft.Json; namespace Notion.Client