Skip to content

Commit 2845bc0

Browse files
authored
Merge pull request #12 from mpysiak/import-poc
Import PoC
2 parents 1aef60d + ac13246 commit 2845bc0

40 files changed

+1285
-46
lines changed

composer.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
"symfony/dependency-injection": "^6.4 || ^7.3",
2929
"symfony/framework-bundle": "^6.4 || ^7.3",
3030
"symfony/messenger": "^6.4 || ^7.3",
31+
"symfony/property-access": "^6.4 || ^7.3",
32+
"symfony/serializer": "^6.4 || ^7.3",
3133
"symfony/ux-live-component": "^2.12",
3234
"symfony/uid": "^6.4 || ^7.3"
3335
},
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
sylius_grid:
2+
grids:
3+
sylius_import_export_admin_process_export:
4+
driver:
5+
name: doctrine/orm
6+
options:
7+
class: Sylius\ImportExport\Entity\ExportProcess
8+
sorting:
9+
createdAt: desc
10+
fields:
11+
createdAt:
12+
type: datetime
13+
label: sylius.ui.created_at
14+
format:
15+
type: string
16+
label: sylius_import_export.ui.format
17+
resource:
18+
type: string
19+
label: sylius_import_export.ui.resource
20+
status:
21+
type: twig
22+
label: sylius.ui.status
23+
options:
24+
template: '@SyliusImportExport\admin\import_export\grid\field\status.html.twig'
25+
actions:
26+
item:
27+
download:
28+
type: download
29+
label: sylius_import_export.ui.download
30+
options:
31+
link:
32+
route: sylius_import_export_admin_process_export_download
33+
parameters:
34+
uuid: resource.uuid
35+
show:
36+
type: show
37+
delete:
38+
type: delete
39+
bulk:
40+
delete:
41+
type: delete
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
sylius_grid:
2+
grids:
3+
sylius_import_export_admin_process_import:
4+
driver:
5+
name: doctrine/orm
6+
options:
7+
class: Sylius\ImportExport\Entity\ImportProcess
8+
sorting:
9+
createdAt: desc
10+
fields:
11+
createdAt:
12+
type: datetime
13+
label: sylius.ui.created_at
14+
format:
15+
type: string
16+
label: sylius_import_export.ui.format
17+
resource:
18+
type: string
19+
label: sylius_import_export.ui.resource
20+
importedCount:
21+
type: string
22+
label: sylius_import_export.ui.imported_count
23+
status:
24+
type: twig
25+
label: sylius.ui.status
26+
options:
27+
template: '@SyliusImportExport\admin\import_export\grid\field\status.html.twig'
28+
actions:
29+
item:
30+
show:
31+
type: show

config/config/sylius_grid.yaml

Lines changed: 4 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,11 @@
1+
imports:
2+
- { resource: 'grid/**.yaml' }
3+
14
sylius_grid:
25
templates:
36
action:
47
export: '@SyliusImportExport\admin\import_export\grid\action\export.html.twig'
8+
import: '@SyliusImportExport\admin\import_export\grid\action\import.html.twig'
59
download: '@SyliusImportExport\admin\import_export\grid\action\download.html.twig'
610
bulk_action:
711
export: '@SyliusImportExport\admin\import_export\grid\bulk_action\export.html.twig'
8-
9-
grids:
10-
sylius_import_export_admin_process_export:
11-
driver:
12-
name: doctrine/orm
13-
options:
14-
class: Sylius\ImportExport\Entity\ExportProcess
15-
sorting:
16-
createdAt: desc
17-
fields:
18-
createdAt:
19-
type: datetime
20-
label: sylius.ui.created_at
21-
format:
22-
type: string
23-
label: sylius_import_export.ui.format
24-
resource:
25-
type: string
26-
label: sylius_import_export.ui.resource
27-
status:
28-
type: twig
29-
label: sylius.ui.status
30-
options:
31-
template: '@SyliusImportExport\admin\import_export\grid\field\status.html.twig'
32-
actions:
33-
item:
34-
download:
35-
type: download
36-
label: sylius_import_export.ui.download
37-
options:
38-
link:
39-
route: sylius_import_export_admin_process_export_download
40-
parameters:
41-
uuid: resource.uuid
42-
show:
43-
type: show
44-
delete:
45-
type: delete
46-
bulk:
47-
delete:
48-
type: delete

config/config/sylius_resource.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,8 @@ sylius_resource:
55
classes:
66
model: Sylius\ImportExport\Entity\ExportProcess
77
interface: Sylius\ImportExport\Entity\ExportProcessInterface
8+
sylius_import_export.process_import:
9+
driver: doctrine/orm
10+
classes:
11+
model: Sylius\ImportExport\Entity\ImportProcess
12+
interface: Sylius\ImportExport\Entity\ImportProcessInterface
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<doctrine-mapping
4+
xmlns="http://doctrine-project.org/schemas/orm/doctrine-mapping"
5+
xmlns:gedmo="http://gediminasm.org/schemas/orm/doctrine-extensions-mapping"
6+
>
7+
<mapped-superclass name="Sylius\ImportExport\Entity\ImportProcess" table="sylius_import_export_process_import">
8+
<id name="uuid" column="uuid" type="string">
9+
<generator strategy="NONE" />
10+
</id>
11+
12+
<field name="status" column="status" type="string" />
13+
<field name="resource" column="resource" type="string" />
14+
<field name="format" column="format" type="string" />
15+
<field name="filePath" column="file_path" type="string" />
16+
<field name="parameters" column="parameters" type="json" />
17+
<field name="batchesCount" column="batches_count" type="integer" />
18+
<field name="importedCount" column="imported_count" type="integer" />
19+
<field name="temporaryDataStorage" column="temporary_data_storage" type="string" nullable="true" />
20+
<field name="toBeImportedCount" column="to_be_imported_count" type="integer" />
21+
<field name="output" column="output" type="text" nullable="true" />
22+
<field name="errorMessage" column="error_message" type="text" nullable="true" />
23+
<field name="createdAt" column="created_at" type="datetime">
24+
<gedmo:timestampable on="create" />
25+
</field>
26+
<field name="updatedAt" column="updated_at" type="datetime">
27+
<gedmo:timestampable on="update" />
28+
</field>
29+
</mapped-superclass>
30+
</doctrine-mapping>

config/routes/admin.yaml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,14 @@ sylius_import_export.admin.resource.export:
66
_sylius:
77
filterable: true
88

9+
sylius_import_export.admin.resource.import:
10+
path: /import/{grid}
11+
methods: [POST]
12+
defaults:
13+
_controller: sylius_import_export.controller.import_action
14+
_sylius:
15+
filterable: true
16+
917
sylius_import_export_admin_process_export:
1018
resource: |
1119
alias: sylius_import_export.process_export
@@ -38,3 +46,27 @@ sylius_import_export_admin_process_export_download:
3846
_sylius:
3947
section: admin
4048
permission: true
49+
50+
sylius_import_export_admin_process_import:
51+
resource: |
52+
alias: sylius_import_export.process_import
53+
section: admin
54+
templates: "@SyliusAdmin\\shared\\crud"
55+
except: ['show', 'create', 'update']
56+
redirect: index
57+
grid: sylius_import_export_admin_process_import
58+
permission: true
59+
path: /import-export/imports
60+
type: sylius.resource
61+
62+
sylius_import_export_admin_process_import_show:
63+
path: /import-export/imports/{id}
64+
methods: [ GET ]
65+
defaults:
66+
_controller: sylius_import_export.controller.process_import::showAction
67+
_sylius:
68+
section: admin
69+
template: '@SyliusAdmin/shared/crud/show.html.twig'
70+
permission: true
71+
vars:
72+
hook_prefix: 'sylius_import_export.admin.process_import'

config/services.xml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,23 @@
4444
<tag name="messenger.middleware" />
4545
</service>
4646

47+
<service id="sylius_import_export.messenger.command_handler.create_import_process" class="Sylius\ImportExport\Messenger\Handler\CreateImportProcessHandler">
48+
<argument type="service" id="sylius_import_export.factory.process" />
49+
<argument type="service" id="sylius_import_export.repository.process_import" />
50+
<argument type="service" id="sylius.command_bus" />
51+
<argument type="service" id="sylius_import_export.importer_resolver" />
52+
53+
<tag name="messenger.message_handler" bus="sylius.command_bus" />
54+
</service>
55+
56+
<service id="sylius_import_export.messenger.command_handler.import" class="Sylius\ImportExport\Messenger\Handler\ImportCommandHandler">
57+
<argument type="service" id="sylius_import_export.repository.process_import" />
58+
<argument type="service" id="sylius_import_export.denormalizer.registry" />
59+
<argument type="service" id="doctrine.orm.entity_manager" />
60+
61+
<tag name="messenger.message_handler" bus="sylius.command_bus" />
62+
</service>
63+
4764
<service id="sylius_import_export.twig.component.export_resource" class="Sylius\ImportExport\Twig\Component\ExportResourceFormComponent">
4865
<argument type="service" id="form.factory" />
4966
<argument>%sylius_import_export.export.form_class%</argument>
@@ -83,8 +100,18 @@
83100
<tag name="controller.service_arguments" />
84101
</service>
85102

103+
<service id="sylius_import_export.controller.import_action" class="Sylius\ImportExport\Controller\ImportAction" public="true">
104+
<argument type="service" id="sylius.resource_registry" />
105+
<argument type="service" id="form.factory" />
106+
<argument type="service" id="sylius.command_bus" />
107+
<argument>%sylius_import_export.import.form_class%</argument>
108+
109+
<tag name="controller.service_arguments" />
110+
</service>
111+
86112
<service id="sylius_import_export.factory.process" class="Sylius\ImportExport\Factory\ProcessFactory">
87113
<argument type="service" id="sylius_import_export.factory.process_export" />
114+
<argument type="service" id="sylius_import_export.factory.process_import" />
88115
</service>
89116

90117
<service id="sylius_import_export.export.batched_data_manager" class="Sylius\ImportExport\Manager\BatchedExportDataManager">
@@ -107,5 +134,17 @@
107134
>
108135
<argument type="service" id=".inner" />
109136
</service>
137+
138+
<service id="sylius_import_export.twig.component.import_resource" class="Sylius\ImportExport\Twig\Component\ImportResourceFormComponent">
139+
<argument type="service" id="form.factory" />
140+
<argument>%sylius_import_export.import.form_class%</argument>
141+
142+
<tag
143+
name="twig.component"
144+
key="sylius_import_export:admin:import"
145+
template="@SyliusImportExport\admin\import_export\component\main_import_form.html.twig"
146+
/>
147+
</service>
148+
110149
</services>
111150
</container>

config/services/denormalizer.xml

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<container xmlns="http://symfony.com/schema/dic/services"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
6+
7+
<services>
8+
<service id="sylius_import_export.denormalizer.entity_relation" class="Sylius\ImportExport\Denormalizer\EntityRelationDenormalizer">
9+
<argument type="service" id="doctrine.orm.entity_manager" />
10+
<tag name="serializer.normalizer" priority="64" />
11+
</service>
12+
13+
<service id="sylius_import_export.denormalizer.default_resource" class="Sylius\ImportExport\Denormalizer\DefaultResourceDenormalizer">
14+
<argument type="service" id="serializer" />
15+
</service>
16+
<service id="Sylius\ImportExport\Denormalizer\ResourceDenormalizerInterface" alias="sylius_import_export.denormalizer.default_resource" />
17+
18+
<service id="sylius_import_export.denormalizer.registry" class="Sylius\ImportExport\Denormalizer\DenormalizerRegistry">
19+
<argument type="service" id="sylius_import_export.denormalizer.default_resource" />
20+
<argument type="tagged_iterator" tag="sylius_import_export.resource_denormalizer" />
21+
</service>
22+
<service id="Sylius\ImportExport\Denormalizer\DenormalizerRegistryInterface" alias="sylius_import_export.denormalizer.registry" />
23+
</services>
24+
</container>

config/services/form.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
>
88
<parameters>
99
<parameter key="sylius_import_export.export.form_class">Sylius\ImportExport\Form\Type\ExportResourceType</parameter>
10+
<parameter key="sylius_import_export.import.form_class">Sylius\ImportExport\Form\Type\ImportResourceType</parameter>
1011
</parameters>
1112

1213
<services>
@@ -19,5 +20,11 @@
1920

2021
<tag name="form.type" />
2122
</service>
23+
24+
<service id="sylius_import_export.form.type.import" class="Sylius\ImportExport\Form\Type\ImportResourceType">
25+
<argument>%kernel.project_dir%</argument>
26+
27+
<tag name="form.type" />
28+
</service>
2229
</services>
2330
</container>

0 commit comments

Comments
 (0)