Skip to content
Snippets Groups Projects
Commit 9fa2016d authored by Josh Pollock's avatar Josh Pollock
Browse files

further abstract select queries

parent 13509bcb
No related branches found
No related tags found
No related merge requests found
...@@ -2,12 +2,11 @@ ...@@ -2,12 +2,11 @@
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="8debb13c-dec3-4d96-b552-5550bc63772b" name="Default" comment=""> <list default="true" id="8debb13c-dec3-4d96-b552-5550bc63772b" name="Default" comment="">
<change afterPath="$PROJECT_DIR$/.idea/php.xml" afterDir="false" /> <change afterPath="$PROJECT_DIR$/src/Select/ValueSelectQueryBuilder.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/Select/DoesSelectQueryByEntryId.php" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Select/Entry.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Select/Entry.php" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/Select/DoesSelectQueryByValue.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Select/DoesSelectQuery.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Select/DoesSelectQuery.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Select/EntryValues.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Select/EntryValues.php" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Select/EntryValues.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Select/EntryValues.php" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Select/SelectQueryBuilder.php" beforeDir="false" afterPath="$PROJECT_DIR$/src/Select/SelectQueryBuilder.php" afterDir="false" />
</list> </list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" /> <option name="TRACKING_ENABLED" value="true" />
...@@ -20,14 +19,14 @@ ...@@ -20,14 +19,14 @@
<pharConfigPath>$PROJECT_DIR$/composer.json</pharConfigPath> <pharConfigPath>$PROJECT_DIR$/composer.json</pharConfigPath>
</component> </component>
<component name="FileEditorManager"> <component name="FileEditorManager">
<splitter split-orientation="horizontal" split-proportion="0.5078864"> <splitter split-orientation="horizontal" split-proportion="0.6553628">
<split-first> <split-first>
<leaf> <leaf>
<file leaf-file-name="FeatureContainer.php" pinned="false" current-in-tab="false"> <file leaf-file-name="FeatureContainer.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/Features/FeatureContainer.php"> <entry file="file://$PROJECT_DIR$/src/Features/FeatureContainer.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="609"> <state relative-caret-position="609">
<caret line="70" column="29" lean-forward="true" selection-start-line="70" selection-start-column="29" selection-end-line="70" selection-end-column="29" /> <caret line="70" column="29" selection-start-line="70" selection-start-column="29" selection-end-line="70" selection-end-column="29" />
<folding> <folding>
<element signature="e#57#99#0#PHP" expanded="true" /> <element signature="e#57#99#0#PHP" expanded="true" />
</folding> </folding>
...@@ -39,7 +38,7 @@ ...@@ -39,7 +38,7 @@
<entry file="file://$PROJECT_DIR$/src/DeleteQueries.php"> <entry file="file://$PROJECT_DIR$/src/DeleteQueries.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="576"> <state relative-caret-position="576">
<caret line="60" lean-forward="true" selection-start-line="60" selection-end-line="60" /> <caret line="60" selection-start-line="60" selection-end-line="60" />
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -47,35 +46,17 @@ ...@@ -47,35 +46,17 @@
<file leaf-file-name="EntryValues.php" pinned="false" current-in-tab="true"> <file leaf-file-name="EntryValues.php" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/Select/EntryValues.php"> <entry file="file://$PROJECT_DIR$/src/Select/EntryValues.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="397"> <state relative-caret-position="120">
<caret line="59" column="22" selection-start-line="59" selection-start-column="22" selection-end-line="59" selection-end-column="22" /> <caret line="8" column="43" selection-start-line="8" selection-start-column="43" selection-end-line="8" selection-end-column="43" />
</state> </state>
</provider> </provider>
</entry> </entry>
</file> </file>
<file leaf-file-name="DoesSelectQuery.php" pinned="false" current-in-tab="false"> <file leaf-file-name="ValueSelectQueryBuilder.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQuery.php"> <entry file="file://$PROJECT_DIR$/src/Select/ValueSelectQueryBuilder.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105"> <state relative-caret-position="450">
<caret line="7" column="25" selection-start-line="7" selection-start-column="10" selection-end-line="7" selection-end-column="25" /> <caret line="30" column="24" lean-forward="true" selection-end-line="47" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="SelectQueryBuilder.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/Select/SelectQueryBuilder.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="663">
<caret line="59" column="91" lean-forward="true" selection-start-line="59" selection-start-column="91" selection-end-line="59" selection-end-column="91" />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="DoesSelectQueryByValue.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQueryByValue.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150">
<caret line="10" column="32" selection-start-line="10" selection-start-column="10" selection-end-line="10" selection-end-column="32" />
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -83,8 +64,8 @@ ...@@ -83,8 +64,8 @@
<file leaf-file-name="Entry.php" pinned="false" current-in-tab="false"> <file leaf-file-name="Entry.php" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/Select/Entry.php"> <entry file="file://$PROJECT_DIR$/src/Select/Entry.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="23"> <state relative-caret-position="345">
<caret line="9" column="33" lean-forward="true" selection-start-line="9" selection-start-column="33" selection-end-line="9" selection-end-column="33" /> <caret line="23" selection-start-line="23" selection-end-line="23" />
</state> </state>
</provider> </provider>
</entry> </entry>
...@@ -130,6 +111,9 @@ ...@@ -130,6 +111,9 @@
<option value="$PROJECT_DIR$/src/Select/DoesSelectQuery.php" /> <option value="$PROJECT_DIR$/src/Select/DoesSelectQuery.php" />
<option value="$PROJECT_DIR$/src/Select/DoesSelectQueryByValue.php" /> <option value="$PROJECT_DIR$/src/Select/DoesSelectQueryByValue.php" />
<option value="$PROJECT_DIR$/src/Select/DoesSelectQueryByEntryId.php" /> <option value="$PROJECT_DIR$/src/Select/DoesSelectQueryByEntryId.php" />
<option value="$PROJECT_DIR$/src/Select/SelectQueryBuilder.php" />
<option value="$PROJECT_DIR$/src/Select/Entry.php" />
<option value="$PROJECT_DIR$/src/Select/ValueSelectQueryBuilder.php" />
<option value="$PROJECT_DIR$/src/Select/EntryValues.php" /> <option value="$PROJECT_DIR$/src/Select/EntryValues.php" />
</list> </list>
</option> </option>
...@@ -142,6 +126,9 @@ ...@@ -142,6 +126,9 @@
<detection-done>true</detection-done> <detection-done>true</detection-done>
<sorting>DEFINITION_ORDER</sorting> <sorting>DEFINITION_ORDER</sorting>
</component> </component>
<component name="NodeModulesDirectoryManager">
<handled-path value="$PROJECT_DIR$/node_modules" />
</component>
<component name="NodePackageJsonFileManager"> <component name="NodePackageJsonFileManager">
<packageJsonPaths> <packageJsonPaths>
<path value="$PROJECT_DIR$/Tests/plugins/caldera-forms/includes/freemius/package.json" /> <path value="$PROJECT_DIR$/Tests/plugins/caldera-forms/includes/freemius/package.json" />
...@@ -270,12 +257,12 @@ ...@@ -270,12 +257,12 @@
<option name="number" value="Default" /> <option name="number" value="Default" />
<option name="presentableId" value="Default" /> <option name="presentableId" value="Default" />
<updated>1526182556614</updated> <updated>1526182556614</updated>
<workItem from="1526182558454" duration="2632000" /> <workItem from="1526182558454" duration="3014000" />
</task> </task>
<servers /> <servers />
</component> </component>
<component name="TimeTrackingManager"> <component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="2632000" /> <option name="totallyTimeSpent" value="3014000" />
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="260" y="43" width="1660" height="937" extended-state="0" /> <frame x="260" y="43" width="1660" height="937" extended-state="0" />
...@@ -284,7 +271,7 @@ ...@@ -284,7 +271,7 @@
<window_info anchor="bottom" id="TODO" order="6" /> <window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="bottom" id="Event Log" side_tool="true" /> <window_info anchor="bottom" id="Event Log" side_tool="true" />
<window_info anchor="bottom" id="Database Changes" show_stripe_button="false" /> <window_info anchor="bottom" id="Database Changes" show_stripe_button="false" />
<window_info anchor="bottom" id="Run" order="2" /> <window_info anchor="bottom" id="Run" order="2" weight="0.3297619" />
<window_info anchor="bottom" id="Version Control" /> <window_info anchor="bottom" id="Version Control" />
<window_info active="true" anchor="bottom" id="Terminal" visible="true" weight="0.14761905" /> <window_info active="true" anchor="bottom" id="Terminal" visible="true" weight="0.14761905" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.21631645" /> <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.21631645" />
...@@ -348,7 +335,7 @@ ...@@ -348,7 +335,7 @@
<entry file="file://$PROJECT_DIR$/src/Features/FeatureContainer.php"> <entry file="file://$PROJECT_DIR$/src/Features/FeatureContainer.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="609"> <state relative-caret-position="609">
<caret line="70" column="29" lean-forward="true" selection-start-line="70" selection-start-column="29" selection-end-line="70" selection-end-column="29" /> <caret line="70" column="29" selection-start-line="70" selection-start-column="29" selection-end-line="70" selection-end-column="29" />
<folding> <folding>
<element signature="e#57#99#0#PHP" expanded="true" /> <element signature="e#57#99#0#PHP" expanded="true" />
</folding> </folding>
...@@ -358,49 +345,56 @@ ...@@ -358,49 +345,56 @@
<entry file="file://$PROJECT_DIR$/src/DeleteQueries.php"> <entry file="file://$PROJECT_DIR$/src/DeleteQueries.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="576"> <state relative-caret-position="576">
<caret line="60" lean-forward="true" selection-start-line="60" selection-end-line="60" /> <caret line="60" selection-start-line="60" selection-end-line="60" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/Select/Entry.php"> <entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQueryByEntryId.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="23"> <state relative-caret-position="390">
<caret line="9" column="33" lean-forward="true" selection-start-line="9" selection-start-column="33" selection-end-line="9" selection-end-column="33" /> <caret line="26" column="36" selection-start-line="26" selection-start-column="36" selection-end-line="26" selection-end-column="36" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQuery.php">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="14" column="7" lean-forward="true" selection-start-line="14" selection-start-column="7" selection-end-line="14" selection-end-column="7" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQueryByValue.php"> <entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQueryByValue.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="150"> <state relative-caret-position="150">
<caret line="10" column="32" selection-start-line="10" selection-start-column="10" selection-end-line="10" selection-end-column="32" /> <caret line="10" column="10" selection-start-line="10" selection-start-column="10" selection-end-line="10" selection-end-column="10" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/Select/SelectQueryBuilder.php"> <entry file="file://$PROJECT_DIR$/src/Select/SelectQueryBuilder.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="663"> <state relative-caret-position="450">
<caret line="59" column="91" lean-forward="true" selection-start-line="59" selection-start-column="91" selection-end-line="59" selection-end-column="91" /> <caret line="31" column="5" lean-forward="true" selection-start-line="31" selection-start-column="5" selection-end-line="31" selection-end-column="5" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQuery.php"> <entry file="file://$PROJECT_DIR$/src/Select/Entry.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="105"> <state relative-caret-position="345">
<caret line="7" column="25" selection-start-line="7" selection-start-column="10" selection-end-line="7" selection-end-column="25" /> <caret line="23" selection-start-line="23" selection-end-line="23" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/Select/DoesSelectQueryByEntryId.php"> <entry file="file://$PROJECT_DIR$/src/Select/ValueSelectQueryBuilder.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="390"> <state relative-caret-position="450">
<caret line="26" column="36" selection-start-line="26" selection-start-column="36" selection-end-line="26" selection-end-column="36" /> <caret line="30" column="24" lean-forward="true" selection-end-line="47" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/src/Select/EntryValues.php"> <entry file="file://$PROJECT_DIR$/src/Select/EntryValues.php">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="397"> <state relative-caret-position="120">
<caret line="59" column="22" selection-start-line="59" selection-start-column="22" selection-end-line="59" selection-end-column="22" /> <caret line="8" column="43" selection-start-line="8" selection-start-column="43" selection-end-line="8" selection-end-column="43" />
</state> </state>
</provider> </provider>
</entry> </entry>
......
...@@ -22,17 +22,6 @@ class Entry extends SelectQueryBuilder ...@@ -22,17 +22,6 @@ class Entry extends SelectQueryBuilder
return $this->is('form_id', $formId); return $this->is('form_id', $formId);
} }
/**
* Get entry by ID
*
* @param int $entryId Entry ID
* @return $this
*/
public function queryByEntryId($entryId)
{
return $this->is('id', $entryId);
}
/** /**
* Query by entry ids * Query by entry ids
* *
...@@ -55,4 +44,10 @@ class Entry extends SelectQueryBuilder ...@@ -55,4 +44,10 @@ class Entry extends SelectQueryBuilder
{ {
return $this->is('user_id', $userId); return $this->is('user_id', $userId);
} }
/** @inheritdoc */
public function getEntryIdColumn()
{
return 'id';
}
} }
...@@ -3,60 +3,14 @@ ...@@ -3,60 +3,14 @@
namespace calderawp\CalderaFormsQuery\Select; namespace calderawp\CalderaFormsQuery\Select;
class EntryValues extends SelectQueryBuilder implements DoesSelectQueryByValue, DoesSelectQueryByEntryId /**
* Class EntryValues
*
* Performs select queries for entry values
*/
class EntryValues extends ValueSelectQueryBuilder
{ {
/** @inheritdoc */
public function queryByEntryId($entryId)
{
$this
->getSelectQuery()
->where()
->equals($this->getEntryIdColumn(), $entryId)
;
return $this;
}
/** @inheritdoc */
public function queryByFieldValue($fieldSlug, $fieldValue, $type = 'equals', $whereOperator = 'AND', $columns = [])
{
if (! empty($columns)) {
$this
->getSelectQuery()
->setColumns($columns);
}
switch ($type) {
case 'equals':
$this
->getSelectQuery()
->where($whereOperator)
->equals($this->getValueColumn(), $fieldValue)
;
break;
case 'notEquals':
$this->
getSelectQuery()
->where($whereOperator)
->notEquals($this->getValueColumn(), $fieldValue);
break;
case 'like':
$this->
getSelectQuery()
->where($whereOperator)
->like($this->getValueColumn(), $fieldValue);
break;
}
$this->isLike = 'like' === $type ? true : false;
if (!$this->isLike) {
$this->getSelectQuery()->where('AND')->equals('slug', $fieldSlug);
}
return $this;
}
/** @inheritdoc */ /** @inheritdoc */
public function getValueColumn() public function getValueColumn()
{ {
......
...@@ -6,7 +6,7 @@ namespace calderawp\CalderaFormsQuery\Select; ...@@ -6,7 +6,7 @@ namespace calderawp\CalderaFormsQuery\Select;
use calderawp\CalderaFormsQuery\QueryBuilder; use calderawp\CalderaFormsQuery\QueryBuilder;
use NilPortugues\Sql\QueryBuilder\Manipulation\Select; use NilPortugues\Sql\QueryBuilder\Manipulation\Select;
abstract class SelectQueryBuilder extends QueryBuilder implements DoesSelectQuery abstract class SelectQueryBuilder extends QueryBuilder implements DoesSelectQuery, DoesSelectQueryByEntryId
{ {
/** /**
...@@ -24,12 +24,11 @@ abstract class SelectQueryBuilder extends QueryBuilder implements DoesSelectQuer ...@@ -24,12 +24,11 @@ abstract class SelectQueryBuilder extends QueryBuilder implements DoesSelectQuer
return $this->selectQuery; return $this->selectQuery;
} }
/** /** @inheritdoc */
* @return Select public function queryByEntryId($entryId)
*/
protected function getCurrentQuery()
{ {
return $this->getSelectQuery(); return $this->is($this->getEntryIdColumn(), $entryId);
} }
/** /**
...@@ -44,6 +43,14 @@ abstract class SelectQueryBuilder extends QueryBuilder implements DoesSelectQuer ...@@ -44,6 +43,14 @@ abstract class SelectQueryBuilder extends QueryBuilder implements DoesSelectQuer
return $this; return $this;
} }
/**
* @return Select
*/
protected function getCurrentQuery()
{
return $this->getSelectQuery();
}
/** @inheritdoc */ /** @inheritdoc */
public function resetQuery() public function resetQuery()
......
<?php
namespace calderawp\CalderaFormsQuery\Select;
abstract class ValueSelectQueryBuilder extends SelectQueryBuilder implements DoesSelectQueryByValue
{
/** @inheritdoc */
public function queryByFieldValue($fieldSlug, $fieldValue, $type = 'equals', $whereOperator = 'AND', $columns = [])
{
if (!empty($columns)) {
$this
->getSelectQuery()
->setColumns($columns);
}
switch ($type) {
case 'equals':
$this
->getSelectQuery()
->where($whereOperator)
->equals($this->getValueColumn(), $fieldValue);
break;
case 'notEquals':
$this->
getSelectQuery()
->where($whereOperator)
->notEquals($this->getValueColumn(), $fieldValue);
break;
case 'like':
$this->
getSelectQuery()
->where($whereOperator)
->like($this->getValueColumn(), $fieldValue);
break;
}
$this->isLike = 'like' === $type ? true : false;
if (!$this->isLike) {
$this->getSelectQuery()->where('AND')->equals('slug', $fieldSlug);
}
return $this;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment