Skip to content

Instantly share code, notes, and snippets.

@timjonesdev
timjonesdev / my-lib-bad.module.ts
Last active June 27, 2019 20:24
The incorrect way to import modules for an Angular Library
import {NgModule} from '@angular/core';
import {MyLibComponent} from './my-lib.component';
import {NavigationModule} from "./navigation"; // <-- too short for library module
import {FormModule} from "./form"; // <-- too short for library module
@NgModule({
declarations: [MyLibComponent],
imports: [NavigationModule, FormModule],
exports: [NavigationModule, FormModule]
})
@timjonesdev
timjonesdev / MongoFirstDockerfile
Created August 16, 2019 04:19
The first draft of the Mongo Dockerfile
FROM mongo:4.0
# files used to initialize the database
COPY ./init-db.d/ /docker-entrypoint-initdb.d
@timjonesdev
timjonesdev / mongo_changestream_error.sh
Created August 16, 2019 04:25
The error encountered when trying to watch a Change Stream on a MongoDB instance that is not part of a replica set.
com.mongodb.MongoCommandException:
Command failed with error 40573 (Location40573):
'The $changeStream stage is only supported on replica sets' on server localhost:27017.
The full response is:
{
"ok" : 0.0,
"errmsg" : "The $changeStream stage is only supported on replica sets",
"code" : 40573,
"codeName" : "Location40573"
}
@timjonesdev
timjonesdev / Dockerfile
Created August 16, 2019 17:27
Mongo Seed Data Example with Docker and Docker Compose
FROM mongo:4.0
COPY init.js /init.js
@timjonesdev
timjonesdev / Makefile
Last active August 16, 2019 17:51
A one-command start for MongoDB
# this assumes that your docker-compose.yml file is located in ./docker
up-db-local: rebuild-mongo
pushd docker &&\
docker-compose up -d mongo &&\
popd
rebuild-mongo:
pushd docker &&\
docker-compose build mongo-seed &&\
docker-compose up mongo-seed &&\
@timjonesdev
timjonesdev / Player.java
Last active August 20, 2019 21:53
Player Model for Reactive Mongo Example
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@timjonesdev
timjonesdev / Team.java
Created August 20, 2019 21:54
Team model for Reactive Mongo Example
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.bson.types.ObjectId;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import java.util.ArrayList;
@timjonesdev
timjonesdev / initial_data.js
Created August 20, 2019 21:55
Initial Data Model for Reactive Mongo Example
db.teams.insert(
[
{
"_id": ObjectId("5d0c18c190d2b33ae629aaa7"),
"name": "HingleMcCringleberry",
"players": [
{"name": "Nick Chubb", "score": 0},
{"name": "James Conner", "score": 0},
{"name": "Julio Jones", "score": 0},
{"name": "Michael Thomas", "score": 0}
@timjonesdev
timjonesdev / TeamRepository.java
Created August 20, 2019 22:07
Team Reactive Mongo Repository for Reactive Mongo Example
import dev.timjones.reactive.data.model.Team;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
import reactor.core.publisher.Mono;
public interface TeamRepository extends ReactiveMongoRepository<Team, ObjectId> {
@Query(value = "{ 'players.name' : ?0 }")
Mono<Team> findDistinctByPlayerName(String playerName);
@timjonesdev
timjonesdev / ReactiveMongoConfig.java
Created August 20, 2019 22:31
Extend the AbstractReactiveMongoConfiguration
import com.mongodb.reactivestreams.client.MongoClient;
import com.mongodb.reactivestreams.client.MongoClients;
import org.springframework.context.annotation.Bean;
import org.springframework.data.mongodb.config.AbstractReactiveMongoConfiguration;
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
import org.springframework.data.mongodb.repository.config.EnableReactiveMongoRepositories;
/**
* Config class to set up necessary components for watching the MongoDB change stream
*/