From 3aad0d1b6c03a0b5506184ae5e79312ca3bd30ad Mon Sep 17 00:00:00 2001 From: Sophie <29753584+Druue@users.noreply.github.com> Date: Wed, 10 Jul 2024 11:08:52 +0200 Subject: [PATCH] chore(fmt): cleanup text_document_completion (#4837) * lil cleanup of text_document_completion.rs * clippy --- prisma-fmt/src/text_document_completion.rs | 27 ++++++------------- .../text_document_completion/multi_schema.rs | 14 ++++++++++ .../referential_actions.rs | 15 +++++++++++ 3 files changed, 37 insertions(+), 19 deletions(-) create mode 100644 prisma-fmt/src/text_document_completion/multi_schema.rs create mode 100644 prisma-fmt/src/text_document_completion/referential_actions.rs diff --git a/prisma-fmt/src/text_document_completion.rs b/prisma-fmt/src/text_document_completion.rs index b791a69c3515..f459503fb0da 100644 --- a/prisma-fmt/src/text_document_completion.rs +++ b/prisma-fmt/src/text_document_completion.rs @@ -5,7 +5,7 @@ use lsp_types::*; use psl::{ diagnostics::Span, error_tolerant_parse_configuration, - parser_database::{ast, ParserDatabase, ReferentialAction, SourceFile}, + parser_database::{ast, ParserDatabase, SourceFile}, schema_ast::ast::AttributePosition, Diagnostics, PreviewFeature, }; @@ -13,6 +13,8 @@ use psl::{ use crate::LSPContext; mod datasource; +mod multi_schema; +mod referential_actions; pub(super) type CompletionContext<'a> = LSPContext<'a, CompletionParams>; @@ -88,16 +90,6 @@ fn push_ast_completions(ctx: CompletionContext<'_>, completion_list: &mut Comple let find_at_position = ctx.db.ast(ctx.initiating_file_id).find_at_position(position); - fn push_referential_action(completion_list: &mut CompletionList, referential_action: ReferentialAction) { - completion_list.items.push(CompletionItem { - label: referential_action.as_str().to_owned(), - kind: Some(CompletionItemKind::ENUM), - // what is the difference between detail and documentation? - detail: Some(referential_action.documentation().to_owned()), - ..Default::default() - }); - } - match find_at_position { ast::SchemaPosition::Model( _model_id, @@ -107,7 +99,7 @@ fn push_ast_completions(ctx: CompletionContext<'_>, completion_list: &mut Comple ), ) if attr_name == "onDelete" || attr_name == "onUpdate" => { for referential_action in ctx.connector().referential_actions(&relation_mode).iter() { - push_referential_action(completion_list, referential_action); + referential_actions::referential_action_completion(completion_list, referential_action); } } @@ -124,7 +116,9 @@ fn push_ast_completions(ctx: CompletionContext<'_>, completion_list: &mut Comple .referential_actions(&relation_mode) .iter() .filter(|ref_action| ref_action.to_string().starts_with(&value)) - .for_each(|ref_action| push_referential_action(completion_list, ref_action)); + .for_each(|referential_action| { + referential_actions::referential_action_completion(completion_list, referential_action) + }); } } } @@ -216,12 +210,7 @@ fn push_namespaces(ctx: CompletionContext<'_>, completion_list: &mut CompletionL namespace.to_string() }; - completion_list.items.push(CompletionItem { - label: String::from(namespace), - insert_text: Some(insert_text), - kind: Some(CompletionItemKind::PROPERTY), - ..Default::default() - }) + multi_schema::schema_namespace_completion(completion_list, namespace, insert_text); } } diff --git a/prisma-fmt/src/text_document_completion/multi_schema.rs b/prisma-fmt/src/text_document_completion/multi_schema.rs new file mode 100644 index 000000000000..6c89e7094b2e --- /dev/null +++ b/prisma-fmt/src/text_document_completion/multi_schema.rs @@ -0,0 +1,14 @@ +use lsp_types::{CompletionItem, CompletionItemKind, CompletionList}; + +pub(super) fn schema_namespace_completion( + completion_list: &mut CompletionList, + namespace: &String, + insert_text: String, +) { + completion_list.items.push(CompletionItem { + label: String::from(namespace), + insert_text: Some(insert_text), + kind: Some(CompletionItemKind::PROPERTY), + ..Default::default() + }) +} diff --git a/prisma-fmt/src/text_document_completion/referential_actions.rs b/prisma-fmt/src/text_document_completion/referential_actions.rs new file mode 100644 index 000000000000..b7fd41950c2e --- /dev/null +++ b/prisma-fmt/src/text_document_completion/referential_actions.rs @@ -0,0 +1,15 @@ +use lsp_types::{CompletionItem, CompletionItemKind, CompletionList}; +use psl::parser_database::ReferentialAction; + +pub(super) fn referential_action_completion( + completion_list: &mut CompletionList, + referential_action: ReferentialAction, +) { + completion_list.items.push(CompletionItem { + label: referential_action.as_str().to_owned(), + kind: Some(CompletionItemKind::ENUM), + // ? (@tomhoule) what is the difference between detail and documentation? + detail: Some(referential_action.documentation().to_owned()), + ..Default::default() + }) +}