Skip to content
This repository was archived by the owner on Oct 14, 2019. It is now read-only.

Commit a9fe898

Browse files
author
Your Name
committed
Angular 2 and firebase starter
1 parent db16443 commit a9fe898

File tree

7 files changed

+748
-17
lines changed

7 files changed

+748
-17
lines changed

Diff for: batch-server.ts

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
2+
import {firebaseConfig} from "./src/environments/firebase.config";
3+
import {initializeApp, auth,database} from 'firebase';
4+
var Queue = require('firebase-queue');
5+
6+
7+
console.log('Running batch server ...');
8+
9+
initializeApp(firebaseConfig);
10+
11+
auth()
12+
.signInWithEmailAndPassword('[email protected]', 'test123')
13+
.then(runConsumer)
14+
.catch(onError);
15+
16+
function onError(err) {
17+
console.error("Could not login", err);
18+
process.exit();
19+
}
20+
21+
22+
function runConsumer() {
23+
24+
console.log("Running consumer ...");
25+
26+
const lessonsRef = database().ref("lessons");
27+
const lessonsPerCourseRef = database().ref("lessonsPerCourse");
28+
29+
const queueRef = database().ref('queue');
30+
31+
32+
const queue = new Queue(queueRef, function(data, progress, resolve, reject) {
33+
34+
console.log('received delete request ...',data);
35+
36+
const deleteLessonPromise = lessonsRef.child(data.lessonId).remove();
37+
38+
const deleteLessonPerCoursePromise =
39+
lessonsPerCourseRef.child(`${data.courseId}/${data.lessonId}`).remove();
40+
41+
Promise.all([deleteLessonPromise, deleteLessonPerCoursePromise])
42+
.then(
43+
() => {
44+
console.log("lesson deleted");
45+
resolve();
46+
}
47+
)
48+
.catch(() => {
49+
console.log("lesson deletion in error");
50+
reject();
51+
});
52+
53+
54+
});
55+
56+
57+
}
58+
59+
60+
61+
62+
63+
64+
65+
66+
67+
68+
69+
70+

Diff for: db-data.ts

+276
Large diffs are not rendered by default.

Diff for: package.json

+25-17
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "hello-world",
2+
"name": "final-project",
33
"version": "0.0.0",
44
"license": "MIT",
55
"angular-cli": {},
@@ -8,37 +8,45 @@
88
"lint": "tslint \"src/**/*.ts\"",
99
"test": "ng test",
1010
"pree2e": "webdriver-manager update",
11-
"e2e": "protractor"
11+
"e2e": "protractor",
12+
"populate-db": "./node_modules/.bin/ts-node ./populate-db.ts",
13+
"batch-server": "./node_modules/.bin/ts-node ./batch-server.ts"
1214
},
1315
"private": true,
1416
"dependencies": {
15-
"@angular/common": "2.0.0",
16-
"@angular/compiler": "2.0.0",
17-
"@angular/core": "2.0.0",
18-
"@angular/forms": "2.0.0",
19-
"@angular/http": "2.0.0",
20-
"@angular/platform-browser": "2.0.0",
21-
"@angular/platform-browser-dynamic": "2.0.0",
17+
"@angular/common": "2.0.1",
18+
"@angular/compiler": "2.0.1",
19+
"@angular/core": "2.0.1",
20+
"@angular/forms": "2.0.1",
21+
"@angular/http": "2.0.1",
22+
"@angular/platform-browser": "2.0.1",
23+
"@angular/platform-browser-dynamic": "2.0.1",
2224
"@angular/router": "3.0.0",
23-
"core-js": "^2.4.1",
25+
"@types/es6-promise": "0.0.32",
26+
"@types/lodash": "^4.14.36",
27+
"@types/request": "0.0.30",
28+
"angularfire2": "^2.0.0-beta.4",
29+
"core-js": "^2.4.0",
30+
"firebase": "^3.3.1",
31+
"firebase-queue": "^1.5.0",
32+
"lodash": "^4.15.0",
2433
"rxjs": "5.0.0-beta.12",
2534
"ts-helpers": "^1.1.1",
26-
"zone.js": "^0.6.23"
35+
"zone.js": "^0.6.21"
2736
},
2837
"devDependencies": {
2938
"@types/jasmine": "^2.2.30",
3039
"angular-cli": "1.0.0-beta.16",
3140
"codelyzer": "~0.0.26",
3241
"jasmine-core": "2.4.1",
3342
"jasmine-spec-reporter": "2.5.0",
34-
"karma": "1.2.0",
35-
"karma-chrome-launcher": "^2.0.0",
36-
"karma-cli": "^1.0.1",
37-
"karma-jasmine": "^1.0.2",
43+
"karma": "0.13.22",
44+
"karma-chrome-launcher": "0.2.3",
45+
"karma-jasmine": "0.3.8",
3846
"karma-remap-istanbul": "^0.2.1",
39-
"protractor": "4.0.9",
47+
"protractor": "4.0.3",
4048
"ts-node": "1.2.1",
4149
"tslint": "3.13.0",
42-
"typescript": "2.0.2"
50+
"typescript": "^2.0.2"
4351
}
4452
}

Diff for: populate-db.ts

+68
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
import {database, initializeApp} from "firebase";
2+
import {firebaseConfig} from "./src/environments/firebase.config";
3+
import {dbData} from "./db-data";
4+
5+
6+
console.log('Initizalizing Firebase database ... ');
7+
8+
initializeApp(firebaseConfig);
9+
10+
11+
const coursesRef = database().ref('courses');
12+
const lessonsRef = database().ref('lessons');
13+
14+
15+
16+
dbData.courses.forEach( course => {
17+
18+
console.log('adding course', course.url);
19+
20+
const courseRef = coursesRef.push({
21+
url: course.url,
22+
description: course.description,
23+
iconUrl: course.iconUrl,
24+
courseListIcon: course.courseListIcon,
25+
longDescription: course.longDescription
26+
});
27+
28+
let lessonKeysPerCourse = [];
29+
30+
course.lessons.forEach((lesson:any) => {
31+
32+
console.log('adding lesson ', lesson.url);
33+
34+
lessonKeysPerCourse.push(lessonsRef.push({
35+
description: lesson.description,
36+
duration: lesson.duration,
37+
url: lesson.url,
38+
tags: lesson.tags,
39+
videoUrl: lesson.videoUrl || null,
40+
longDescription: lesson.longDescription,
41+
courseId: courseRef.key
42+
}).key);
43+
44+
});
45+
46+
47+
const association = database().ref('lessonsPerCourse');
48+
49+
const lessonsPerCourse = association.child(courseRef.key);
50+
51+
lessonKeysPerCourse.forEach(lessonKey => {
52+
console.log('adding lesson to course ');
53+
54+
const lessonCourseAssociation = lessonsPerCourse.child(lessonKey);
55+
56+
lessonCourseAssociation.set(true);
57+
});
58+
59+
60+
});
61+
62+
63+
64+
65+
66+
67+
68+

0 commit comments

Comments
 (0)