/** * Validate request * * @param RequestInterface $request */ protected function validateRequest(RequestInterface $request) { if ($request->getRepository() === $this) { return; } throw new InvalidArgumentException(sprintf(static::EXCEPTION_INVALID_REQUEST, $this->getName(), $request->getRepository()->getName())); }
/** * Request name string (with alias) * * @param RequestInterface $request * @return string */ protected function requestNameToString(RequestInterface $request) : string { return $this->nameToString($request->getRepository()->getName(), $request->getAlias()); }
/** * {@inheritDoc} * @see \Fixin\Model\Storage\Grammar\GrammarInterface::insertInto($repository, $request) */ public function insertInto(RepositoryInterface $repository, RequestInterface $request) : QueryInterface { $query = $this->container->clonePrototype(static::PROTOTYPE_QUERY)->appendWord(static::STATEMENT_INSERT)->appendClause(static::CLAUSE_INTO, $this->quoteIdentifier($repository->getName())); // Columns if ($columns = $request->getColumns()) { $list = []; foreach ($columns as $alias => $identifier) { $list[] = $this->identifierToString(is_numeric($alias) ? $identifier : $alias, $query); } $query->appendString(sprintf(static::MASK_COLUMN_NAMES, implode(static::LIST_SEPARATOR, $list))); } // Select $query->appendString($this->requestToString($request, $query)); return $query; }