summaryrefslogtreecommitdiff
path: root/server/continuedev/plugins/steps/draft
diff options
context:
space:
mode:
Diffstat (limited to 'server/continuedev/plugins/steps/draft')
-rw-r--r--server/continuedev/plugins/steps/draft/abstract_method.py21
-rw-r--r--server/continuedev/plugins/steps/draft/redux.py50
-rw-r--r--server/continuedev/plugins/steps/draft/typeorm.py54
3 files changed, 125 insertions, 0 deletions
diff --git a/server/continuedev/plugins/steps/draft/abstract_method.py b/server/continuedev/plugins/steps/draft/abstract_method.py
new file mode 100644
index 00000000..7ceefe9b
--- /dev/null
+++ b/server/continuedev/plugins/steps/draft/abstract_method.py
@@ -0,0 +1,21 @@
+from ....core.main import Step
+from ....core.sdk import ContinueSDK
+
+
+class ImplementAbstractMethodStep(Step):
+ name: str = "Implement abstract method for all subclasses"
+ method_name: str
+ class_name: str
+
+ async def run(self, sdk: ContinueSDK):
+ if sdk.lsp is None:
+ self.description = "Language Server Protocol is not enabled"
+ return
+
+ implementations = await sdk.lsp.go_to_implementations(self.class_name)
+
+ for implementation in implementations:
+ await sdk.edit_file(
+ range_in_files=[implementation.range_in_file],
+ prompt=f"Implement method `{self.method_name}` for this subclass of `{self.class_name}`",
+ )
diff --git a/server/continuedev/plugins/steps/draft/redux.py b/server/continuedev/plugins/steps/draft/redux.py
new file mode 100644
index 00000000..83b5e592
--- /dev/null
+++ b/server/continuedev/plugins/steps/draft/redux.py
@@ -0,0 +1,50 @@
+from ....core.main import Step
+from ....core.sdk import ContinueSDK
+from ....core.steps import EditFileStep
+
+
+class EditReduxStateStep(Step):
+ description: str # e.g. "I want to load data from the weatherapi.com API"
+
+ async def run(self, sdk: ContinueSDK):
+ # Find the right file to edit
+
+ # RootStore
+ store_filename = ""
+ sdk.run_step(
+ EditFileStep(
+ filename=store_filename,
+ prompt=f"Edit the root store to add a new slice for {self.description}",
+ )
+ )
+ store_file_contents = await sdk.ide.readFile(store_filename)
+
+ # Selector
+ selector_filename = ""
+ sdk.run_step(
+ EditFileStep(
+ filepath=selector_filename,
+ prompt=f"Edit the selector to add a new property for {self.description}. The store looks like this: {store_file_contents}",
+ )
+ )
+
+ # Reducer
+ reducer_filename = ""
+ sdk.run_step(
+ EditFileStep(
+ filepath=reducer_filename,
+ prompt=f"Edit the reducer to add a new property for {self.description}. The store looks like this: {store_file_contents}",
+ )
+ )
+ """
+ Starts with implementing selector
+ 1. RootStore
+ 2. Selector
+ 3. Reducer or entire slice
+
+ Need to first determine whether this is an:
+ 1. edit
+ 2. add new reducer and property in existing slice
+ 3. add whole new slice
+ 4. build redux from scratch
+ """
diff --git a/server/continuedev/plugins/steps/draft/typeorm.py b/server/continuedev/plugins/steps/draft/typeorm.py
new file mode 100644
index 00000000..c79fa041
--- /dev/null
+++ b/server/continuedev/plugins/steps/draft/typeorm.py
@@ -0,0 +1,54 @@
+from textwrap import dedent
+
+from ....core.main import Step
+from ....core.sdk import ContinueSDK
+
+
+class CreateTableStep(Step):
+ sql_str: str
+ name: str = "Create a table in TypeORM"
+
+ async def run(self, sdk: ContinueSDK):
+ # Write TypeORM entity
+ entity_name = self.sql_str.split(" ")[2].capitalize()
+ await sdk.edit_file(
+ f"src/entity/{entity_name}.ts",
+ dedent(
+ f"""\
+ {self.sql_str}
+
+ Write a TypeORM entity called {entity_name} for this table, importing as necessary:"""
+ ),
+ )
+
+ # Add entity to data-source.ts
+ await sdk.edit_file(
+ filepath="src/data-source.ts", prompt=f"Add the {entity_name} entity:"
+ )
+
+ # Generate blank migration for the entity
+ out = await sdk.run(
+ f"npx typeorm migration:create ./src/migration/Create{entity_name}Table"
+ )
+ migration_filepath = out.text.split(" ")[1]
+
+ # Wait for user input
+ await sdk.wait_for_user_confirmation("Fill in the migration?")
+
+ # Fill in the migration
+ await sdk.edit_file(
+ migration_filepath,
+ dedent(
+ f"""\
+ This is the table that was created:
+
+ {self.sql_str}
+
+ Fill in the migration for the table:"""
+ ),
+ )
+
+ # Run the migration
+ await sdk.run(
+ "npx typeorm-ts-node-commonjs migration:run -d ./src/data-source.ts"
+ )