Skip to content

Commit

Permalink
Revert "switch secondary database for rainfall"
Browse files Browse the repository at this point in the history
This reverts commit 36f7192.
  • Loading branch information
gassc committed Jul 2, 2021
1 parent 7ccfab9 commit 22d4d26
Show file tree
Hide file tree
Showing 9 changed files with 14 additions and 402 deletions.
9 changes: 0 additions & 9 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,12 @@ services:
volumes:
- /var/lib/postgresql/data/
env_file: .env.docker
rainfall_db:
image: quay.io/azavea/postgis:3-postgres12.2-slim
ports:
- "5435:5435"
restart: always
volumes:
- /var/lib/postgresql/data/
env_file: .env.docker
db-init:
build:
context: .
dockerfile: docker/db-init/Dockerfile
depends_on:
- db
- rainfall_db
env_file: .env.docker
app:
build:
Expand Down
3 changes: 1 addition & 2 deletions docker/db-init/startup.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/bin/bash

python3 manage.py migrate --no-input --database=default
python3 manage.py migrate --no-input --database=rainfall_db
python3 manage.py migrate --no-input
# pipenv run python3 manage.py migrate --no-input

This file was deleted.

37 changes: 0 additions & 37 deletions trwwapi/rainfall/migrations/0003_auto_20210603_0738.py

This file was deleted.

43 changes: 0 additions & 43 deletions trwwapi/rainfall/migrations/0004_auto_20210603_0910.py

This file was deleted.

37 changes: 0 additions & 37 deletions trwwapi/rainfall/migrations/0005_auto_20210603_2236.py

This file was deleted.

108 changes: 12 additions & 96 deletions trwwapi/rainfall/models.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,10 @@
from dataclasses import dataclass
from django.contrib.gis.db import models
import django.db.models.options as options
# from django.contrib.postgres.indexes import
from django.db.models import JSONField
from django.db.models.constraints import UniqueConstraint
from ..common.mixins import PandasModelMixin, TimestampedMixin

# --------------------------------------------------------------
# set up the database routing
# https://djangosnippets.org/snippets/2687/
# Add recognized model option to django (this lets us use 'in_db' in Meta)
options.DEFAULT_NAMES = options.DEFAULT_NAMES + ('in_db',)


# --------------------------------------------------------------
# Rainfall Observation Models
# Unique timestamp with sensor-based rainfall observations in JSON.
# Table is wide but not long

class RainfallObservationMeta(PandasModelMixin):
"""Base abstract model for all rainfall observations ORM models.
Expand Down Expand Up @@ -75,85 +63,11 @@ class RtrgObservation(RainfallObservationMeta):
"""
pass

# TODO: create a class for managing and validating the contents of
# the RainfallObservationMeta data and metadata fields
# @dataclass
# class RainfallObservationsJSON():
# pass

# --------------------------------------------------------------
# Rainfall Record Models
# Each record is a single observation per timestamp per sensor; tables are long but not wide.
# All of these are unmanaged by Django. They use a composite primary key (ts+sid) and time-based
# partitioning, neither of which can be managed by Django.

class RainfallRecordMixin(PandasModelMixin):

# id = models.BigAutoField()
ts = models.DateTimeField(db_index=True, verbose_name="Timestamp")
sid = models.CharField(max_length=12, db_index=True, verbose_name="Sensor ID")
val = models.FloatField(verbose_name="Rainfall (inches)", blank=True, null=True)
src = models.CharField(max_length=4, verbose_name="Source", blank=True, null=True)

class Meta:
abstract = True
ordering = ['-ts', 'sid']
constraints = [
UniqueConstraint(fields=['ts', 'sid'], name='%(class)s_uniq_record_constraint')
]
in_db = "rainfall_db"
managed = False


class GaugeRecord(RainfallRecordMixin):
"""Calibrated Rain Gauge data (historic)
"""
pass


class GarrRecord(RainfallRecordMixin):
"""Gauge-Adjusted Radar Rainfall (historic)
"""
pass


class RtrrRecord(RainfallRecordMixin):
"""Raw Radar data (real-time)
"""
pass


class RtrgRecord(RainfallRecordMixin):
"""Raw Rain Gauge data (real-time)
"""
pass

class Rtrg5Record(RainfallRecordMixin):
"""Raw Rain Gauge data (real-time, 5-minute)
"""
pass

class Garr5Record(RainfallRecordMixin):
"""Gauge-Adjusted Radar Rainfall (historic, 5-minute)
"""
pass


# TODO: create a class for managing and validating the contents of
# the RainfallObservationMeta data and metadata fields
# @dataclass
# class RainfallObservationsJSON():
# pass


# --------------------------------------------------------------
# Reports + Rainfall Events


class RainfallReport(TimestampedMixin):
month_start = models.DateField()
document = models.FileField()
events = models.ManyToManyField('RainfallEvent')
# events = models.ManyToManyField('RainfallEvent')


class RainfallEvent(PandasModelMixin, TimestampedMixin):
Expand All @@ -179,8 +93,15 @@ class Meta:
def __str__(self):
return self.event_label

# --------------------------------------------------------------
# Sensor Geography



# TODO: create a class for managing and validating the contents of
# the RainfallObservationMeta data and metadata fields
# @dataclass
# class RainfallObservationsJSON():
# pass


class Pixel(PandasModelMixin):
pixel_id = models.CharField(max_length=12)
Expand All @@ -204,18 +125,13 @@ class Gauge(PandasModelMixin):
def __str__(self):
return "{0} - {1}".format(self.web_id, self.name)

# --------------------------------------------------------------

# MODELNAME_TO_GEOMODEL_LOOKUP helps us dynamically select the correct geodata
# for an observation model, since we don't enforce a relationship between the
# observation models and sensor layer models

MODELNAME_TO_GEOMODEL_LOOKUP = {
GarrObservation._meta.object_name: Pixel,
RtrrObservation._meta.object_name: Pixel,
GarrRecord._meta.object_name: Pixel,
RtrrRecord._meta.object_name: Pixel,
GaugeObservation._meta.object_name: Gauge,
RtrgObservation._meta.object_name: Gauge,
GaugeRecord._meta.object_name: Gauge,
RtrgRecord._meta.object_name: Gauge
RtrgObservation._meta.object_name: Gauge
}
Loading

0 comments on commit 22d4d26

Please sign in to comment.