@@ -14,10 +14,64 @@ class BuildReplacements
1414 public function replaceStrings (string $ model_name ): array
1515 {
1616 return [
17+ '{{ repository_path }} ' => $ this ->getFilePathString ('repositories ' , $ model_name ),
18+ '{{ resource_path }} ' => $ this ->getFilePathString ('resources ' , $ model_name ),
19+ '{{ service_path }} ' => $ this ->getFilePathString ('services ' , $ model_name ),
20+ '{{ create_request_path }} ' => $ this ->getFilePathString ('requests ' , $ model_name , 'Create ' . $ model_name ),
21+ '{{ update_request_path }} ' => $ this ->getFilePathString ('requests ' , $ model_name , 'Update ' . $ model_name ),
1722 '{{ namespacedModel }} ' => "App \\Models \\$ model_name " ,
1823 '{{ model }} ' => $ model_name ,
1924 '{{ model_var }} ' => Str::snake ($ model_name ),
2025 '{{ model_lc }} ' => lcfirst ($ model_name )
2126 ];
2227 }
28+
29+ /**
30+ * Set up file path string.
31+ *
32+ * @param string $instance
33+ * @param string $model_name
34+ * @param string $fixed_model_name
35+ * @return string $path
36+ */
37+ public function getFilePathString (string $ instance , string $ model_name , ?string $ fixed_model_name = null ): string
38+ {
39+ // Return service path.
40+ if ($ instance == 'repositories ' ) {
41+ return $ this ->versioningEnabled ($ instance )
42+ ? 'App \\Http \\Resources \\' . config ('api._version ' ) . '\\' . $ model_name . 'Resource '
43+ : 'App \\Http \\Resources \\' . $ model_name . 'Resource ' ;
44+ }
45+
46+ // Return service path.
47+ if ($ instance == 'services ' ) {
48+ return $ this ->versioningEnabled ($ instance )
49+ ? 'App \\Http \\Services \\' . config ('api._version ' ) . '\\' . $ model_name . 'Service '
50+ : 'App \\Http \\Services \\' . $ model_name . 'Service ' ;
51+ }
52+
53+ // Return request path.
54+ if ($ instance == 'requests ' ) {
55+ return $ this ->versioningEnabled ($ instance )
56+ ? 'App \\Http \\Requests \\' . config ('api._version ' ) . "\\$ model_name \\$ fixed_model_name "
57+ : "App \\Http \\Requests \\$ model_name \\$ fixed_model_name " ;
58+ }
59+
60+ // By default returning repository interface path.
61+ return $ this ->versioningEnabled ($ instance )
62+ ? 'App \\Repositories \\' . config ('api._version ' ) . '\\Interfaces \\' . $ model_name . 'RepositoryInterface '
63+ : 'App \\Repositories \\Interfaces \\' . $ model_name . 'RepositoryInterface ' ;
64+ }
65+
66+ /**
67+ * Check if versioning is enabled for specific instance.
68+ *
69+ * @param string $instance
70+ * @return bool
71+ */
72+ public function versioningEnabled (string $ instance ): bool
73+ {
74+ return (bool ) config ('api._version ' ) &&
75+ !in_array ($ instance , config ('api-formula.versioning_disabled_for ' ));
76+ }
2377}
0 commit comments