src/Webiny/AnalyticsDb/AnalyticsDb.php
public function save()
    {
        $entries = $this->logBuffer->getEntries();

        $entrySkeleton = [
            'ts'    => $this->ts,
            'month' => $this->month,
            'year'  => $this->year
        ];

        $dimensionSkeleton = [
            'ts'    => $this->ts,
            'month' => $this->month,
            'year'  => $this->year
        ];

        /**
         * @var $e LogEntry
         */
        foreach ($entries as $e) {
            // build entry
            $entry = $entrySkeleton;
            $entry['entity'] = $e->getName();
            $entry['ref'] = $e->getRef();

            // check if we have attributes defined
            if (count($e->getAttributes()) > 0) {
                $entry['attributes'] = $e->getAttributes();
            }

            // insert or update the DAILY stat
            $this->mongo->update(self::ADB_STATS_DAILY, // match
                [
                    'entity' => $e->getName(),
                    'ref'    => $e->getRef(),
                    'ts'     => $this->ts
                ], // update
                [
                    '$inc'         => ['count' => $e->getIncrement()],
                    '$setOnInsert' => $entry
                ], // options
                ['upsert' => true]);

            // insert or update the MONTHLY stat
            unset($entry['ts']);
            $entry['month'] = $this->month;
            $entry['year'] = $this->year;
            $this->mongo->update(self::ADB_STATS_MONTHLY, // match
                [
                    'entity' => $e->getName(),
                    'ref'    => $e->getRef(),
                    'ts'     => $this->monthTs
                ], // update
                [
                    '$inc'         => ['count' => $e->getIncrement()],
                    '$setOnInsert' => $entry
                ], // options
                ['upsert' => true]);

            // insert dimensions for the entry
            $dimEntry = $dimensionSkeleton;
            $dimEntry['entity'] = $e->getName();

            /**
             * @var $dim LogDimension
             */
            foreach ($e->getDimensions() as $dim) {
                $dimEntry['name'] = $dim->getName();
                $dimEntry['value'] = $dim->getValue();

                $this->mongo->update(self::ADB_DIMS, // match
                    [
                        'name'   => $dim->getName(),
                        'value'  => $dim->getValue(),
                        'entity' => $e->getName(),
                        'ts'     => $this->ts
                    ], // update
                    [
                        '$inc'         => [
                            'count.' . $e->getRef() => $dim->getIncrement(),
                            'total'                 => $dim->getIncrement()
                        ],
                        '$setOnInsert' => $dimEntry
                    ], // options
                    ['upsert' => true]);
            }
        }

        // clear buffer
        $this->logBuffer = new LogBuffer();
    }
public function save()
    {
        $entries = $this->logBuffer->getEntries();

        $entrySkeleton = [
            'ts'    => $this->ts,
            'month' => $this->month,
            'year'  => $this->year
        ];

        $dimensionSkeleton = [
            'ts'    => $this->ts,
            'month' => $this->month,
            'year'  => $this->year
        ];

        /**
         * @var $e LogEntry
         */
        foreach ($entries as $e) {
            // build entry
            $entry = $entrySkeleton;
            $entry['entity'] = $e->getName();
            $entry['ref'] = $e->getRef();

            // check if we have attributes defined
            if (count($e->getAttributes()) > 0) {
                $entry['attributes'] = $e->getAttributes();
            }

            // insert or update the DAILY stat
            $this->mongo->update(self::ADB_STATS_DAILY, // match
                [
                    'entity' => $e->getName(),
                    'ref'    => $e->getRef(),
                    'ts'     => $this->ts
                ], // update
                [
                    '$inc'         => ['count' => $e->getIncrement()],
                    '$setOnInsert' => $entry
                ], // options
                ['upsert' => true]);

            // insert or update the MONTHLY stat
            unset($entry['ts']);
            $entry['month'] = $this->month;
            $entry['year'] = $this->year;
            $this->mongo->update(self::ADB_STATS_MONTHLY, // match
                [
                    'entity' => $e->getName(),
                    'ref'    => $e->getRef(),
                    'ts'     => $this->monthTs
                ], // update
                [
                    '$inc'         => ['count' => $e->getIncrement()],
                    '$setOnInsert' => $entry
                ], // options
                ['upsert' => true]);

            // insert dimensions for the entry
            $dimEntry = $dimensionSkeleton;
            $dimEntry['entity'] = $e->getName();

            /**
             * @var $dim LogDimension
             */
            foreach ($e->getDimensions() as $dim) {
                $dimEntry['name'] = $dim->getName();
                $dimEntry['value'] = $dim->getValue();

                $this->mongo->update(self::ADB_DIMS, // match
                    [
                        'name'   => $dim->getName(),
                        'value'  => $dim->getValue(),
                        'entity' => $e->getName(),
                        'ts'     => $this->ts
                    ], // update
                    [
                        '$inc'         => [
                            'count.' . $e->getRef() => $dim->getIncrement(),
                            'total'                 => $dim->getIncrement()
                        ],
                        '$setOnInsert' => $dimEntry
                    ], // options
                    ['upsert' => true]);
            }
        }

        // clear buffer
        $this->logBuffer = new LogBuffer();
    }
public function save ( ) { $ entries = $ this -> logBuffer -> getEntries ( ) ; $ entrySkeleton = [ 'ts' => $ this -> ts , 'month' => $ this -> month , 'year' => $ this -> year ] ; $ dimensionSkeleton = [ 'ts' => $ this -> ts , 'month' => $ this -> month , 'year' => $ this -> year ] ; /**
         * @var $e LogEntry
         */ foreach ( $ entries as $ e ) { // build entry $ entry = $ entrySkeleton ; $ entry [ 'entity' ] = $ e -> getName ( ) ; $ entry [ 'ref' ] = $ e -> getRef ( ) ; // check if we have attributes defined if ( count ( $ e -> getAttributes ( ) ) > 0 ) { $ entry [ 'attributes' ] = $ e -> getAttributes ( ) ; } // insert or update the DAILY stat $ this -> mongo -> update ( self :: ADB_STATS_DAILY , // match [ 'entity' => $ e -> getName ( ) , 'ref' => $ e -> getRef ( ) , 'ts' => $ this -> ts ] , // update [ '$inc' => [ 'count' => $ e -> getIncrement ( ) ] , '$setOnInsert' => $ entry ] , // options [ 'upsert' => true ] ) ; // insert or update the MONTHLY stat unset ( $ entry [ 'ts' ] ) ; $ entry [ 'month' ] = $ this -> month ; $ entry [ 'year' ] = $ this -> year ; $ this -> mongo -> update ( self :: ADB_STATS_MONTHLY , // match [ 'entity' => $ e -> getName ( ) , 'ref' => $ e -> getRef ( ) , 'ts' => $ this -> monthTs ] , // update [ '$inc' => [ 'count' => $ e -> getIncrement ( ) ] , '$setOnInsert' => $ entry ] , // options [ 'upsert' => true ] ) ; // insert dimensions for the entry $ dimEntry = $ dimensionSkeleton ; $ dimEntry [ 'entity' ] = $ e -> getName ( ) ; /**
             * @var $dim LogDimension
             */ foreach ( $ e -> getDimensions ( ) as $ dim ) { $ dimEntry [ 'name' ] = $ dim -> getName ( ) ; $ dimEntry [ 'value' ] = $ dim -> getValue ( ) ; $ this -> mongo -> update ( self :: ADB_DIMS , // match [ 'name' => $ dim -> getName ( ) , 'value' => $ dim -> getValue ( ) , 'entity' => $ e -> getName ( ) , 'ts' => $ this -> ts ] , // update [ '$inc' => [ 'count.' . $ e -> getRef ( ) => $ dim -> getIncrement ( ) , 'total' => $ dim -> getIncrement ( ) ] , '$setOnInsert' => $ dimEntry ] , // options [ 'upsert' => true ] ) ; } } // clear buffer $ this -> logBuffer = new LogBuffer ( ) ; }
Save all the entries from the buffer.
Save all the entries from the buffer .