
Илья
15.07.2017
09:36:29
libgdx простенький
более менее

Sergey
15.07.2017
14:54:56

Андрэ
15.07.2017
15:15:06
ок. сорри

Google

Dmitry
16.07.2017
19:20:49
Помогите разобраться с проектированием апи, ну или киньте ссылочку на соответствующий чатик, где можно задать вопрос. В общем есть 3 типа файлов — бинарный (у него есть ссылка на скачивание, вес, майм и немного служебных полей), картинка (добавляются поля с шириной, высотой) и видео (добавляется продолжительность и поле с превью). Собственно вопрос — в ответе на запрос может возвращаться массив со всеми тремя типами файлов одновременно, как лучше сформировать json объекты для каждого из типов, чтобы было меньше боли при дальнейшей работе с ними на фронте/мобилках?

Roquie
16.07.2017
19:48:52
GET example.com/v1/array_of_types
{
"data": [
{
"type": "binary",
// other fields for binary type
},
{
"type": "image",
// other fields for img type
},
{
"type": "video",
// other fields for video type
},
],
}
@basavind вот так норм

Sergey
16.07.2017
19:49:47
> как лучше сформировать json объекты для каждого из типов
А как бы ты на клиенте это проще и удобнее разруливал бы?

Roquie
16.07.2017
19:50:15

Dmitry
16.07.2017
19:50:30
ага, есть такой вариант, а не проблематично потом парсить в первую очередь type для того, чтобы сконструировать объект определенного типа?

Sergey
16.07.2017
19:50:35

Dmitry
16.07.2017
19:51:00
вот и я о том же

Mykola
16.07.2017
19:51:15
тут лучше под либу подстраиваться конкретную
которая умеет в десериализацию

Dmitry
16.07.2017
19:51:45
ммм.. ну например под gson на андройде есть идеи?

Roquie
16.07.2017
19:51:45

Google

Sergey
16.07.2017
19:52:17

Dmitry
16.07.2017
19:52:35
ну блин, я не к тому про gson написал :)

Sergey
16.07.2017
19:53:01
там есть возможность в рантайме выбирать мэппер
RuntimeTypeAdapter

Dmitry
16.07.2017
19:53:24

Sergey
16.07.2017
19:53:42
для iOS под objective-c не знаю, под свифт есть шикарная либка которая это тоже умеет

Roquie
16.07.2017
19:54:03
Не вижу здесь проблемы. Сделать фабрику и по типу создавать нужный объект.

Sergey
16.07.2017
19:54:08
они уже потом мэпятся на твои объекты

Roquie
16.07.2017
19:56:01
Сергей дело говорит. Я недавно делал приложение для iOS, ты все руками забиваешь в структуру и на выходе получаешь коллекцию объектов.

Dmitry
16.07.2017
19:56:13
в таком случае можно чуть подробней почему для мобилок не особо и как это не особо можно улучшить?
если для мобилок - не особо.

Sergey
16.07.2017
19:56:42
не особо проблематично. Для всего остального темболее.
в целом для твоей задачи других вариантов на самом деле у тебя нет

Dmitry
16.07.2017
19:58:18
скорее всего да
спасибо за помощь!

Артур Евгеньевич
17.07.2017
19:26:00
Парни, давайте поговорим за АОП
Кто юзал, какие впечатления, какие подводные камни

Aleh
17.07.2017
19:26:24
И зачем

Артур Евгеньевич
17.07.2017
19:26:48
Мне сейчас надо сделать иерархическое рекурсивное удаление всех дочерних сущностей, но не хочупилить сервис под это дело

Google

Артур Евгеньевич
17.07.2017
19:27:30
И вот думаю здорово было бы сделать аннотацию, которая при попытке удалить сущность, перехватывала бы вызов и запускала метод удаления у "детей" с определенным интерфейсом
Также думаю внедрить аннотации для авторизации
а то проверки всех прав смотрятся печально

Aleh
17.07.2017
19:28:38

Артур Евгеньевич
17.07.2017
19:29:28
да на пхп но какая разница

da horsie
17.07.2017
19:29:38
"This allows behaviors that are not central to the business logic (such as logging) to be added to a program without cluttering the code core to the functionality."

Артур Евгеньевич
17.07.2017
19:29:53
Ну да это сквозная функциональность
логирование, кеширование, транзакции, авторизация и т.д

da horsie
17.07.2017
19:30:16
Ты уверен, что твоя задача "is not central to the business logic"?

Артур Евгеньевич
17.07.2017
19:31:13
но тем не менее мне кажется хорошо ляжет такой подход...или как лучше сделать

Артур Евгеньевич
17.07.2017
19:32:01
сначала пытался вынести в трейт этот метод(там еще логирование и авторизация как раз есть)
также были планы создать сервис MassDeletetor
там в любом случае рефлексию придется юзать, чтоы понять потомков сущности

Aleh
17.07.2017
19:33:01
А почему просто не сделать это в репозитории явно?

Артур Евгеньевич
17.07.2017
19:33:33

Aleh
17.07.2017
19:33:47

Артур Евгеньевич
17.07.2017
19:34:08
ну там порядка 6 сущностей таких
я бы хотел убрать дублирвоание

Google

Admin
ERROR: S client not available

Артур Евгеньевич
17.07.2017
19:35:52
да и логировние с авторизацией добавлять если это еще +2 зависимости к сервису
Ну а если отвлечься от моей конкретики, какие еще могут быть подводные камни?
походу надо создать чатик по АОП
?

Sergey
17.07.2017
20:51:06
+ не факт что там есть дублирование если это разные сущности
ну то есть если "пользователи" твоих фич разные, то даже тот факт что они один в один не означает что есть дублирование

Артур Евгеньевич
17.07.2017
20:52:22
ну там просто нужно проставить флг is_deleted = 1

Sergey
17.07.2017
20:52:35
ну так нет дублирования

Артур Евгеньевич
17.07.2017
20:52:39
и пройтись по потомкам

Sergey
17.07.2017
20:52:55
просто метод который выставляет флаг, и у каждой сущности он свой потому что работает со своим стейтом. Нет дублирования

Артур Евгеньевич
17.07.2017
20:53:03
а также проверить привелегии и алогировать что было удалено

Sergey
17.07.2017
20:53:04

Артур Евгеньевич
17.07.2017
20:53:20

Sergey
17.07.2017
20:53:28
по подчиненным сущностям
каким таким подчиненным сущностям и на кой черт тебе что-то с ними делать если ты корень агрегата пометил как удаленный

Артур Евгеньевич
17.07.2017
20:54:02
курс-курсФилиала-расписание-уроки

Google

Sergey
17.07.2017
20:54:04
давай конкретнее
так ты удаляешь курс или урок?

Артур Евгеньевич
17.07.2017
20:54:34
Я все могу удалять
Иначлаьно задача вот в чем:

Sergey
17.07.2017
20:54:46
ну прекрасно, я пока дублирования не увидал
удаление разных штук - разные штуки
для этой задачи уж точно AOP не нужон. AOP хорошо для инфраструктуной шляпы. Типа @transactional
а тебе надо просто не лениться