Контакты

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (17)

Лучшие ответы пользователя

Все ответы (45)
  • Как сделать insert ... on duplicate key update в Lighthouse-php на Laravel?

    @ettychel Автор вопроса
    Решил свой вопрос созданием класса мутатора, все шаги описаны ниже

    Добавляем пакет кастомных типов данных

    composer require mll-lab/graphql-php-scalars

    Создаем класс мутатор

    php artisan lighthouse:mutation ClassNameMutator

    По пути /yourPath/appName/app/GraphQL/Mutations будет создан файл ClassNameMutator.php
    Пишем в самом конце свой метод createOrUpdate

    use App\Models\ModelName;
    
    ...
    
    public function createOrUpdate($rootValue, array $args, GraphQLContext $context)
    {
        $model = ModelName::find($args['id']);
        if ($model == null) {$model = new ModelName();}
        $model->fill($args)->save();
        $model = ModelName::select($args['field'])->find($args['id']);
    
        return $model;
    }


    В файле /yourPath/appName/graphql/schema.graphql прописываем следующее:

    "A Json string with format normal Array"
    scalar Mixed @scalar(class: "MLL\\GraphQLScalars\\Mixed")
    
     ...
        
    type Mutation {
        uoiModel(input: uoi! @spread): Mixed @field(resolver: "ClassNameMutator@createOrUpdate")
    }
    input uoi{
        id: ID!         //Поле таблицы в запрос
        otherField: ID  //Поле таблицы в запрос
        field: Mixed    //Поля, которые нужны в ответ, указываются в виде простого массива ["field1","field2","fieldn"]
    }


    Теперь у нас есть мутация, которой можно легко пользоваться, запрос будет таким:

    mutation {
        uoiModel(
            input: {
                id: 900003
                status: 49
                field: [
                    "id",
                    "status"
                ]
            }
        )
    }


    Данное решение подходит для таблиц как с инкрементным id, так и без
    Ответ написан
    2 комментария
  • Как сделать фильтрацию по датам?

    @ettychel
    Что первое в голову пришло:
    Сделай .map, дополни новым свойством timestamp:
    chartPoints.map(e => {
      return e[tamestamp] = Date.parse(e.date)
    }

    а потом сравнивай как хочешь по полю timestamp, а выводи chartPoints[n].date
    Это наверное самый простой вариант
    Ответ написан
    5 комментариев
  • Как перевести код с python на node js?

    @ettychel
    Ниже ваш код питона в JS с использованием библиотеки discord-js
    А вообще тут знание питона и не нужно, достаточно пара запросов в гугл
    Код

    const Discord = require("discord.js");
    const bot = new Discord.Client();
    
    bot.on("ready", async () => {
      console.log("Bot Connected");
      global.tdict = {};
      await bot.user.setActivity("r!help", { type: "PLAYING" });
    });
    
    bot.on("voiceStateUpdate", async (before, after) => {
      const author = before.member.id || after.member.id;
      if (!before.channel && after.channel) {
        console.log("1");
        const t1 = Math.floor(Date.now() / 1000);
        global.tdict[author] = t1;
      } else if (before.channel && !after.channel && global.tdict.hasOwnProperty(author)) {
        const t2 = Math.floor(Date.now() / 1000);
        console.log("0");
        console.log(t2 - global.tdict[author]);
      }
    });

    Ответ написан
    1 комментарий
  • Как редактировать сайт на nuxt.js?

    @ettychel
    Считаю, здесь происходят озарения!
    Документация
    Nuxt.js это не CMS система, это фреймворк для людей умеющих в код
    Ответ написан
    Комментировать
  • После окончания события .select(), как не закрывать попап окно при клике вне?

    @ettychel
    Не вчитываясь в документацию
    Установите событие.mousedown(), которое при нажатии на селект будет выставлять модальному окну параметр bg-close=false
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (13)