SubmissionDataSource.php
2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
namespace NinjaForms\Includes\Contracts;
use NinjaForms\Includes\Entities\SingleSubmission;
use NinjaForms\Includes\Entities\SubmissionFilter;
/**
* Contract to retrieve a collection of single submissions from a data source
*
* Note that the collection has two parts - the submission meta and the
* submission values.
*
* The meta describes details about the submission such as timestamp, NF form
* id, data storage location, and a record id.
*
* The values portion is a collection of submission values associated with a
* given submission.
*
* The two are retrieved separately. This enables fast filtering of submissions
* to generate a collection of submission records; then, after initial
* filtering, the submission values for just the intended records can be
* retrieved.
*/
interface SubmissionDataSource
{
/**
* Retrieve a collection of submissions meta given filtering args
*
* @param array $args
* @return SingleSubmission[]
*/
public function retrieveSubmissionMeta(SubmissionFilter $submissionFilter): array;
/**
* Populate with submission values a single submission in a collection
*
* Submission collection may initially only contain submission meta to save
* time/memory. When called, this method retrieves the complete submission
* values for the provided SingleSubmision
*
* @param SingleSubmission $singleSubmission
* @return SingleSubmission
*/
public function retrieveSubmissionValues(SingleSubmission $singleSubmission): SingleSubmission;
/**
* Retrieve a single submission with values
*
* Absent a previously filtered collection of single submissions within the
* aggregate, request a single submission, fully populate it, and return.
*
* @param SingleSubmission $singleSubmission
* @return SingleSubmission
*/
public function retrieveSingleSubmission(SingleSubmission $singleSubmission): SingleSubmission;
/**
* Delete a submission from the data source
*
* @param SingleSubmission $singleSubmission
* @return SubmissionDataSource
*/
public function deleteSubmission(SingleSubmission $singleSubmission): SubmissionDataSource;
/**
* Restore a submission from the data source
*
* @param SingleSubmission $singleSubmission
* @return SubmissionDataSource
*/
public function restoreSubmission(SingleSubmission $singleSubmission): SubmissionDataSource;
/**
* Update a submission from the data source
*
* @param SingleSubmission $singleSubmission
* @return SubmissionDataSource
*/
public function updateSubmission(SingleSubmission $singleSubmission): SubmissionDataSource;
/**
* Return the dataSource id
*
* Identifies the implementing class, enabling retrieval of submission
* specifics by calling the implementing class
*
* @return string
*/
public function getDataSource( ): string;
}