chore: detect field type when import csv (#6400)

This commit is contained in:
Nathan.fooo 2024-09-25 15:09:00 +08:00 committed by GitHub
parent 9b811f0166
commit 6a1619d300
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 63 additions and 53 deletions

View File

@ -987,7 +987,7 @@ dependencies = [
[[package]]
name = "collab"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"arc-swap",
@ -1012,7 +1012,7 @@ dependencies = [
[[package]]
name = "collab-database"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"async-trait",
@ -1051,7 +1051,7 @@ dependencies = [
[[package]]
name = "collab-document"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"arc-swap",
@ -1072,7 +1072,7 @@ dependencies = [
[[package]]
name = "collab-entity"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"bytes",
@ -1092,7 +1092,7 @@ dependencies = [
[[package]]
name = "collab-folder"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"arc-swap",
@ -1113,7 +1113,7 @@ dependencies = [
[[package]]
name = "collab-importer"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"async-recursion",
@ -1166,7 +1166,7 @@ dependencies = [
[[package]]
name = "collab-plugins"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"async-stream",
@ -1246,7 +1246,7 @@ dependencies = [
[[package]]
name = "collab-user"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"collab",

View File

@ -120,14 +120,14 @@ custom-protocol = ["tauri/custom-protocol"]
# To switch to the local path, run:
# scripts/tool/update_collab_source.sh
# ⚠️⚠️⚠️️
collab = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-entity = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-folder = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-document = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-database = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-plugins = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-user = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-importer = { version = "0.1", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-entity = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-folder = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-document = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-database = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-plugins = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-user = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-importer = { version = "0.1", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
# Working directory: frontend

View File

@ -985,7 +985,7 @@ dependencies = [
[[package]]
name = "collab"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"arc-swap",
@ -1010,7 +1010,7 @@ dependencies = [
[[package]]
name = "collab-database"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"async-trait",
@ -1049,7 +1049,7 @@ dependencies = [
[[package]]
name = "collab-document"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"arc-swap",
@ -1070,7 +1070,7 @@ dependencies = [
[[package]]
name = "collab-entity"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"bytes",
@ -1090,7 +1090,7 @@ dependencies = [
[[package]]
name = "collab-folder"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"arc-swap",
@ -1111,7 +1111,7 @@ dependencies = [
[[package]]
name = "collab-importer"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"async-recursion",
@ -1164,7 +1164,7 @@ dependencies = [
[[package]]
name = "collab-plugins"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"async-stream",
@ -1244,7 +1244,7 @@ dependencies = [
[[package]]
name = "collab-user"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"collab",

View File

@ -118,14 +118,14 @@ custom-protocol = ["tauri/custom-protocol"]
# To switch to the local path, run:
# scripts/tool/update_collab_source.sh
# ⚠️⚠️⚠️️
collab = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-entity = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-folder = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-document = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-database = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-plugins = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-user = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-importer = { version = "0.1", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-entity = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-folder = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-document = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-database = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-plugins = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-user = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-importer = { version = "0.1", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
# Working directory: frontend

View File

@ -848,7 +848,7 @@ dependencies = [
[[package]]
name = "collab"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"arc-swap",
@ -873,7 +873,7 @@ dependencies = [
[[package]]
name = "collab-database"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"async-trait",
@ -912,7 +912,7 @@ dependencies = [
[[package]]
name = "collab-document"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"arc-swap",
@ -933,7 +933,7 @@ dependencies = [
[[package]]
name = "collab-entity"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"bytes",
@ -953,7 +953,7 @@ dependencies = [
[[package]]
name = "collab-folder"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"arc-swap",
@ -974,7 +974,7 @@ dependencies = [
[[package]]
name = "collab-importer"
version = "0.1.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"async-recursion",
@ -1027,7 +1027,7 @@ dependencies = [
[[package]]
name = "collab-plugins"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"async-stream",
@ -1107,7 +1107,7 @@ dependencies = [
[[package]]
name = "collab-user"
version = "0.2.0"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=381da6a30c61e0bb7f350703b2538c477b645276#381da6a30c61e0bb7f350703b2538c477b645276"
source = "git+https://github.com/AppFlowy-IO/AppFlowy-Collab?rev=44efb8214aaf1bb7326401b891af0626886509ce#44efb8214aaf1bb7326401b891af0626886509ce"
dependencies = [
"anyhow",
"collab",

View File

@ -142,14 +142,14 @@ rocksdb = { git = "https://github.com/rust-rocksdb/rust-rocksdb", rev = "1710120
# To switch to the local path, run:
# scripts/tool/update_collab_source.sh
# ⚠️⚠️⚠️️
collab = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-entity = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-folder = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-document = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-database = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-plugins = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-user = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab-importer = { version = "0.1", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "381da6a30c61e0bb7f350703b2538c477b645276" }
collab = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-entity = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-folder = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-document = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-database = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-plugins = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-user = { version = "0.2", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
collab-importer = { version = "0.1", git = "https://github.com/AppFlowy-IO/AppFlowy-Collab", rev = "44efb8214aaf1bb7326401b891af0626886509ce" }
# Working directory: frontend
# To update the commit ID, run:

View File

@ -9,6 +9,7 @@ use collab_database::database::{Database, DatabaseData};
use collab_database::entity::{CreateDatabaseParams, CreateViewParams};
use collab_database::error::DatabaseError;
use collab_database::rows::RowId;
use collab_database::template::csv::CSVTemplate;
use collab_database::views::DatabaseLayout;
use collab_database::workspace_database::{
CollabPersistenceImpl, DatabaseCollabPersistenceService, DatabaseCollabService, DatabaseMeta,
@ -437,11 +438,20 @@ impl DatabaseManager {
content: String,
format: CSVFormat,
) -> FlowyResult<ImportResult> {
let params = tokio::task::spawn_blocking(move || {
CSVImporter.import_csv_from_string(view_id, content, format)
})
.await
.map_err(internal_error)??;
let params = match format {
CSVFormat::Original => {
let mut csv_template = CSVTemplate::try_from_reader(content.as_bytes(), true, None)?;
csv_template.reset_view_id(view_id.clone());
let database_template = csv_template.try_into_database_template().await?;
database_template.into_params()
},
CSVFormat::META => tokio::task::spawn_blocking(move || {
CSVImporter.import_csv_from_string(view_id, content, format)
})
.await
.map_err(internal_error)??,
};
let view_id = params.inline_view_id.clone();
let database_id = params.database_id.clone();