Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/24 submit workbook page #53

Merged
merged 16 commits into from
Dec 23, 2023
Merged

Conversation

dysmento
Copy link
Contributor

@dysmento dysmento commented Dec 17, 2023

This is work in progress. I wanted to see how straightforward it would be to copy validate-upload.js over from ARPA reporter. The answer is not very, because we also need validation-rules.js ec-codes.js records.js validation-error.js persist-upload.js templateRules.json and maybe a couple I'm not remembering.

As much as I could, I brought these files over with a .ts extension, but in some cases I got a lot of type errors I didn't understand, so I fell back to .js in those cases.

Questions that came up while I worked on this:

  1. does this approach even make sense? I don't know if copying a bunch of code like this can be made to work in a different language on a different framework. The alternative would be to make small changes bit by bit, like a single validateUpload() function with a single rule like maybe validateVersion and move on from there.
  2. I somehow got the impression we were storing uploads in S3, but now I'm not sure, because ARPA reporter uses a filesystem. Where are we storing uploads?
  3. I saw a note in the lucid ERD diagram: "Is it worth having a separate validations table?" And now I'm wondering that too. It makes sense if you want to keep a history of every validation (and invalidation). Is that what we're going for?
  4. I notice the schema has no Notes field for an upload. Did we jettison the notes field?
  5. ARPA code has a way to look up a recipient by tax ID number, but CPF schema doesn't have one. Do we not need that?
  6. In much of the ARPA code, we're passing around a knex transaction object. I don't think prisma lets you access the transaction in the same way. What's the right approach to take for functions that need to participate in a prisma transaction?

I think someone should take this over from me, because my availability is not great until Friday. TODO:

  1. I added the form fields we'll need for upload workbook, but we still need to read from the database for the organization's list of reporting periods and agency codes
  2. I got an error trying to require api/src/lib/templateRules.json and I tried a couple of different ways but I couldn't figure it out. It's needed by validation-rules.js
  3. the file data needs to be persisted
  4. I added a call to validateUpload to api/src/services/uploads/uploads.ts but there's no way it works yet, and it needs to be made to work.
  5. I didn't have a chance to start creating the view that shows success or failure of the validation.

I almost forgot to mention: none of the tests have been brought over yet, which is probably not a small job, since we'd be moving them from mocha to jest.

api/src/lib/validate-upload.js Fixed Show fixed Hide fixed
api/src/lib/validate-upload.js Fixed Show fixed Hide fixed
Copy link

github-actions bot commented Dec 17, 2023

Terraform Summary

Step Result
🖌 Terraform Format & Style
⚙️ Terraform Initialization
🤖 Terraform Validation
📖 Terraform Plan

Hint: If "Terraform Format & Style" failed, run terraform fmt -recursive from the terraform/ directory and commit the results.

Output

Validation Output
Success! The configuration is valid.


Plan Output
Terraform used the selected providers to generate the following execution
plan. Resource actions are indicated with the following symbols:
+   create
  ~ update in-place
-   destroy
-/+ destroy and then create replacement
+/- create replacement and then destroy

Terraform will perform the following actions:

  # aws_ecs_service.console will be updated in-place
  ~ resource "aws_ecs_service" "console" {
        id                                 = "arn:aws:ecs:us-west-2:357150818708:service/cpfreporter/cpfreporter-console"
        name                               = "cpfreporter-console"
        tags                               = {}
      ~ task_definition                    = "arn:aws:ecs:us-west-2:357150818708:task-definition/cpfreporter-console:26" -> (known after apply)
        # (15 unchanged attributes hidden)

        # (3 unchanged blocks hidden)
    }

  # aws_ecs_task_definition.console must be replaced
+/- resource "aws_ecs_task_definition" "console" {
      ~ arn                      = "arn:aws:ecs:us-west-2:357150818708:task-definition/cpfreporter-console:26" -> (known after apply)
      ~ arn_without_revision     = "arn:aws:ecs:us-west-2:357150818708:task-definition/cpfreporter-console" -> (known after apply)
      ~ container_definitions    = (sensitive value) # forces replacement
      ~ id                       = "cpfreporter-console" -> (known after apply)
      ~ revision                 = 26 -> (known after apply)
-       tags                     = {} -> null
        # (9 unchanged attributes hidden)

        # (1 unchanged block hidden)
    }

  # aws_s3_object.lambda_artifact-graphql must be replaced
+/- resource "aws_s3_object" "lambda_artifact-graphql" {
+       acl                    = (known after apply)
      ~ bucket_key_enabled     = false -> (known after apply)
+       checksum_crc32         = (known after apply)
+       checksum_crc32c        = (known after apply)
+       checksum_sha1          = (known after apply)
+       checksum_sha256        = (known after apply)
      ~ content_type           = "binary/octet-stream" -> (known after apply)
      ~ etag                   = "d2d7e68fc69a7510ebb7aa4bd00785eb-6" -> "dc448572876ddfd7912a8c6203fa928e"
      ~ id                     = "graphql.1cbb23ad69ad38acfcd8dbd240d87c6d.zip" -> (known after apply)
      ~ key                    = "graphql.1cbb23ad69ad38acfcd8dbd240d87c6d.zip" -> "graphql.dc448572876ddfd7912a8c6203fa928e.zip" # forces replacement
+       kms_key_id             = (known after apply)
-       metadata               = {} -> null
      ~ source_hash            = "1cbb23ad69ad38acfcd8dbd240d87c6d" -> "dc448572876ddfd7912a8c6203fa928e"
      ~ storage_class          = "STANDARD" -> (known after apply)
-       tags                   = {} -> null
      ~ version_id             = "6A5QYjnpn9HJHzjH94KYkb5UL1fsamRj" -> (known after apply)
        # (5 unchanged attributes hidden)
    }

  # aws_s3_object.origin_dist_artifact["200.html"] will be updated in-place
  ~ resource "aws_s3_object" "origin_dist_artifact" {
      ~ etag                   = "78c53788f8f4350bd4eefb31430eab61" -> "7e7f571e4c6a7931e2d5da673c05f9f3"
        id                     = "dist/200.html"
      ~ source_hash            = "78c53788f8f4350bd4eefb31430eab61" -> "7e7f571e4c6a7931e2d5da673c05f9f3"
        tags                   = {}
      ~ version_id             = "vN2MVbsocmbDF9NwCNgwhEh9RbPS8yoC" -> (known after apply)
        # (10 unchanged attributes hidden)
    }

  # aws_s3_object.origin_dist_artifact["build-manifest.json"] will be updated in-place
  ~ resource "aws_s3_object" "origin_dist_artifact" {
      ~ etag                   = "6685e6dbc0c779208a00f604644bf4dc" -> "e4d3471f6d043d511dfaaa9616004e13"
        id                     = "dist/build-manifest.json"
      ~ source_hash            = "6685e6dbc0c779208a00f604644bf4dc" -> "e4d3471f6d043d511dfaaa9616004e13"
        tags                   = {}
      ~ version_id             = "0SIoJYQjeWipp5NPQOcqv1SCubMGw9TC" -> (known after apply)
        # (10 unchanged attributes hidden)
    }

  # aws_s3_object.origin_dist_artifact["chunk-references.json"] will be updated in-place
  ~ resource "aws_s3_object" "origin_dist_artifact" {
      ~ etag                   = "d8763584f902751d7747684da6cea750" -> "a7ce3fa7a3571a9515987b7809f0cabe"
        id                     = "dist/chunk-references.json"
      ~ source_hash            = "d8763584f902751d7747684da6cea750" -> "a7ce3fa7a3571a9515987b7809f0cabe"
        tags                   = {}
      ~ version_id             = "MFCsFbmo1sQVJUEyD2PzmZw4PCWPvauD" -> (known after apply)
        # (10 unchanged attributes hidden)
    }

  # aws_s3_object.origin_dist_artifact["index.html"] will be updated in-place
  ~ resource "aws_s3_object" "origin_dist_artifact" {
      ~ etag                   = "78c53788f8f4350bd4eefb31430eab61" -> "7e7f571e4c6a7931e2d5da673c05f9f3"
        id                     = "dist/index.html"
      ~ source_hash            = "78c53788f8f4350bd4eefb31430eab61" -> "7e7f571e4c6a7931e2d5da673c05f9f3"
        tags                   = {}
      ~ version_id             = "J1QED.ygy4grngkVk7URZde9bvBCaX7G" -> (known after apply)
        # (10 unchanged attributes hidden)
    }

  # aws_s3_object.origin_dist_artifact["static/js/99.aed1dd23.chunk.js"] will be created
+   resource "aws_s3_object" "origin_dist_artifact" {
+       acl                    = (known after apply)
+       bucket                 = "cpfreporter-origin-357150818708-us-west-2"
+       bucket_key_enabled     = (known after apply)
+       checksum_crc32         = (known after apply)
+       checksum_crc32c        = (known after apply)
+       checksum_sha1          = (known after apply)
+       checksum_sha256        = (known after apply)
+       content_type           = "text/javascript"
+       etag                   = "69b92d685e531f990f4afd0cd2418908"
+       force_destroy          = false
+       id                     = (known after apply)
+       key                    = "dist/static/js/99.aed1dd23.chunk.js"
+       kms_key_id             = (known after apply)
+       server_side_encryption = "AES256"
+       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/99.aed1dd23.chunk.js"
+       source_hash            = "69b92d685e531f990f4afd0cd2418908"
+       storage_class          = (known after apply)
+       tags_all               = {
+           "env"        = "staging"
+           "management" = "terraform"
+           "owner"      = "grants"
+           "repo"       = "cpf-reporter"
+           "service"    = "cpf-reporter"
+           "usage"      = "workload"
        }
+       version_id             = (known after apply)
    }

  # aws_s3_object.origin_dist_artifact["static/js/99.aed1dd23.chunk.js.LICENSE.txt"] will be created
+   resource "aws_s3_object" "origin_dist_artifact" {
+       acl                    = (known after apply)
+       bucket                 = "cpfreporter-origin-357150818708-us-west-2"
+       bucket_key_enabled     = (known after apply)
+       checksum_crc32         = (known after apply)
+       checksum_crc32c        = (known after apply)
+       checksum_sha1          = (known after apply)
+       checksum_sha256        = (known after apply)
+       content_type           = "text/plain"
+       etag                   = "d07b2d386f8665764f69e113088257af"
+       force_destroy          = false
+       id                     = (known after apply)
+       key                    = "dist/static/js/99.aed1dd23.chunk.js.LICENSE.txt"
+       kms_key_id             = (known after apply)
+       server_side_encryption = "AES256"
+       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/99.aed1dd23.chunk.js.LICENSE.txt"
+       source_hash            = "d07b2d386f8665764f69e113088257af"
+       storage_class          = (known after apply)
+       tags_all               = {
+           "env"        = "staging"
+           "management" = "terraform"
+           "owner"      = "grants"
+           "repo"       = "cpf-reporter"
+           "service"    = "cpf-reporter"
+           "usage"      = "workload"
        }
+       version_id             = (known after apply)
    }

  # aws_s3_object.origin_dist_artifact["static/js/UploadEditUploadPage.7014aec3.chunk.js"] will be created
+   resource "aws_s3_object" "origin_dist_artifact" {
+       acl                    = (known after apply)
+       bucket                 = "cpfreporter-origin-357150818708-us-west-2"
+       bucket_key_enabled     = (known after apply)
+       checksum_crc32         = (known after apply)
+       checksum_crc32c        = (known after apply)
+       checksum_sha1          = (known after apply)
+       checksum_sha256        = (known after apply)
+       content_type           = "text/javascript"
+       etag                   = "88a13ab6ee91b402cef0139fd0197183"
+       force_destroy          = false
+       id                     = (known after apply)
+       key                    = "dist/static/js/UploadEditUploadPage.7014aec3.chunk.js"
+       kms_key_id             = (known after apply)
+       server_side_encryption = "AES256"
+       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/UploadEditUploadPage.7014aec3.chunk.js"
+       source_hash            = "88a13ab6ee91b402cef0139fd0197183"
+       storage_class          = (known after apply)
+       tags_all               = {
+           "env"        = "staging"
+           "management" = "terraform"
+           "owner"      = "grants"
+           "repo"       = "cpf-reporter"
+           "service"    = "cpf-reporter"
+           "usage"      = "workload"
        }
+       version_id             = (known after apply)
    }

  # aws_s3_object.origin_dist_artifact["static/js/UploadEditUploadPage.7014aec3.chunk.js.LICENSE.txt"] will be created
+   resource "aws_s3_object" "origin_dist_artifact" {
+       acl                    = (known after apply)
+       bucket                 = "cpfreporter-origin-357150818708-us-west-2"
+       bucket_key_enabled     = (known after apply)
+       checksum_crc32         = (known after apply)
+       checksum_crc32c        = (known after apply)
+       checksum_sha1          = (known after apply)
+       checksum_sha256        = (known after apply)
+       content_type           = "text/plain"
+       etag                   = "96f9138b4e14af18a824fab3e9e23c9f"
+       force_destroy          = false
+       id                     = (known after apply)
+       key                    = "dist/static/js/UploadEditUploadPage.7014aec3.chunk.js.LICENSE.txt"
+       kms_key_id             = (known after apply)
+       server_side_encryption = "AES256"
+       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/UploadEditUploadPage.7014aec3.chunk.js.LICENSE.txt"
+       source_hash            = "96f9138b4e14af18a824fab3e9e23c9f"
+       storage_class          = (known after apply)
+       tags_all               = {
+           "env"        = "staging"
+           "management" = "terraform"
+           "owner"      = "grants"
+           "repo"       = "cpf-reporter"
+           "service"    = "cpf-reporter"
+           "usage"      = "workload"
        }
+       version_id             = (known after apply)
    }

  # aws_s3_object.origin_dist_artifact["static/js/UploadEditUploadPage.e704f8fc.chunk.js"] will be destroyed
  # (because key ["static/js/UploadEditUploadPage.e704f8fc.chunk.js"] is not in for_each map)
-   resource "aws_s3_object" "origin_dist_artifact" {
-       bucket                 = "cpfreporter-origin-357150818708-us-west-2" -> null
-       bucket_key_enabled     = false -> null
-       content_type           = "text/javascript" -> null
-       etag                   = "67dab15b0dde74ff6b1d3b5bf491a557" -> null
-       force_destroy          = false -> null
-       id                     = "dist/static/js/UploadEditUploadPage.e704f8fc.chunk.js" -> null
-       key                    = "dist/static/js/UploadEditUploadPage.e704f8fc.chunk.js" -> null
-       metadata               = {} -> null
-       server_side_encryption = "AES256" -> null
-       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/UploadEditUploadPage.e704f8fc.chunk.js" -> null
-       source_hash            = "67dab15b0dde74ff6b1d3b5bf491a557" -> null
-       storage_class          = "STANDARD" -> null
-       tags                   = {} -> null
-       tags_all               = {
-           "env"        = "staging"
-           "management" = "terraform"
-           "owner"      = "grants"
-           "repo"       = "cpf-reporter"
-           "service"    = "cpf-reporter"
-           "usage"      = "workload"
        } -> null
-       version_id             = "fnpN31d72vY6iTtXb3qoS2F49A0OAru3" -> null
    }

  # aws_s3_object.origin_dist_artifact["static/js/UploadEditUploadPage.e704f8fc.chunk.js.LICENSE.txt"] will be destroyed
  # (because key ["static/js/UploadEditUploadPage.e704f8fc.chunk.js.LICENSE.txt"] is not in for_each map)
-   resource "aws_s3_object" "origin_dist_artifact" {
-       bucket                 = "cpfreporter-origin-357150818708-us-west-2" -> null
-       bucket_key_enabled     = false -> null
-       content_type           = "text/plain" -> null
-       etag                   = "40ab61fe6d4a36e2787bad465212f1ef" -> null
-       force_destroy          = false -> null
-       id                     = "dist/static/js/UploadEditUploadPage.e704f8fc.chunk.js.LICENSE.txt" -> null
-       key                    = "dist/static/js/UploadEditUploadPage.e704f8fc.chunk.js.LICENSE.txt" -> null
-       metadata               = {} -> null
-       server_side_encryption = "AES256" -> null
-       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/UploadEditUploadPage.e704f8fc.chunk.js.LICENSE.txt" -> null
-       source_hash            = "40ab61fe6d4a36e2787bad465212f1ef" -> null
-       storage_class          = "STANDARD" -> null
-       tags                   = {} -> null
-       tags_all               = {
-           "env"        = "staging"
-           "management" = "terraform"
-           "owner"      = "grants"
-           "repo"       = "cpf-reporter"
-           "service"    = "cpf-reporter"
-           "usage"      = "workload"
        } -> null
-       version_id             = "27PFO4VrE4bTLE6uEkUgeCtnuffeD8J3" -> null
    }

  # aws_s3_object.origin_dist_artifact["static/js/UploadNewUploadPage.5e3c7894.chunk.js"] will be destroyed
  # (because key ["static/js/UploadNewUploadPage.5e3c7894.chunk.js"] is not in for_each map)
-   resource "aws_s3_object" "origin_dist_artifact" {
-       bucket                 = "cpfreporter-origin-357150818708-us-west-2" -> null
-       bucket_key_enabled     = false -> null
-       content_type           = "text/javascript" -> null
-       etag                   = "13f2500c8846e141491916afec0aba1d" -> null
-       force_destroy          = false -> null
-       id                     = "dist/static/js/UploadNewUploadPage.5e3c7894.chunk.js" -> null
-       key                    = "dist/static/js/UploadNewUploadPage.5e3c7894.chunk.js" -> null
-       metadata               = {} -> null
-       server_side_encryption = "AES256" -> null
-       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/UploadNewUploadPage.5e3c7894.chunk.js" -> null
-       source_hash            = "13f2500c8846e141491916afec0aba1d" -> null
-       storage_class          = "STANDARD" -> null
-       tags                   = {} -> null
-       tags_all               = {
-           "env"        = "staging"
-           "management" = "terraform"
-           "owner"      = "grants"
-           "repo"       = "cpf-reporter"
-           "service"    = "cpf-reporter"
-           "usage"      = "workload"
        } -> null
-       version_id             = "si74Qah3X3l5hBuz_lC1oDWFie9o6nr7" -> null
    }

  # aws_s3_object.origin_dist_artifact["static/js/UploadNewUploadPage.5e3c7894.chunk.js.LICENSE.txt"] will be destroyed
  # (because key ["static/js/UploadNewUploadPage.5e3c7894.chunk.js.LICENSE.txt"] is not in for_each map)
-   resource "aws_s3_object" "origin_dist_artifact" {
-       bucket                 = "cpfreporter-origin-357150818708-us-west-2" -> null
-       bucket_key_enabled     = false -> null
-       content_type           = "text/plain" -> null
-       etag                   = "7d6a0b9adab97e16ec109df2b8268b06" -> null
-       force_destroy          = false -> null
-       id                     = "dist/static/js/UploadNewUploadPage.5e3c7894.chunk.js.LICENSE.txt" -> null
-       key                    = "dist/static/js/UploadNewUploadPage.5e3c7894.chunk.js.LICENSE.txt" -> null
-       metadata               = {} -> null
-       server_side_encryption = "AES256" -> null
-       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/UploadNewUploadPage.5e3c7894.chunk.js.LICENSE.txt" -> null
-       source_hash            = "7d6a0b9adab97e16ec109df2b8268b06" -> null
-       storage_class          = "STANDARD" -> null
-       tags                   = {} -> null
-       tags_all               = {
-           "env"        = "staging"
-           "management" = "terraform"
-           "owner"      = "grants"
-           "repo"       = "cpf-reporter"
-           "service"    = "cpf-reporter"
-           "usage"      = "workload"
        } -> null
-       version_id             = "hjpx_hHEO55x.GLvB9hfmwbOCx7ngEy9" -> null
    }

  # aws_s3_object.origin_dist_artifact["static/js/UploadNewUploadPage.cc12cba5.chunk.js"] will be created
+   resource "aws_s3_object" "origin_dist_artifact" {
+       acl                    = (known after apply)
+       bucket                 = "cpfreporter-origin-357150818708-us-west-2"
+       bucket_key_enabled     = (known after apply)
+       checksum_crc32         = (known after apply)
+       checksum_crc32c        = (known after apply)
+       checksum_sha1          = (known after apply)
+       checksum_sha256        = (known after apply)
+       content_type           = "text/javascript"
+       etag                   = "9f0b09632a5947e9f0d2e1b9b7bd552d"
+       force_destroy          = false
+       id                     = (known after apply)
+       key                    = "dist/static/js/UploadNewUploadPage.cc12cba5.chunk.js"
+       kms_key_id             = (known after apply)
+       server_side_encryption = "AES256"
+       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/UploadNewUploadPage.cc12cba5.chunk.js"
+       source_hash            = "9f0b09632a5947e9f0d2e1b9b7bd552d"
+       storage_class          = (known after apply)
+       tags_all               = {
+           "env"        = "staging"
+           "management" = "terraform"
+           "owner"      = "grants"
+           "repo"       = "cpf-reporter"
+           "service"    = "cpf-reporter"
+           "usage"      = "workload"
        }
+       version_id             = (known after apply)
    }

  # aws_s3_object.origin_dist_artifact["static/js/UploadNewUploadPage.cc12cba5.chunk.js.LICENSE.txt"] will be created
+   resource "aws_s3_object" "origin_dist_artifact" {
+       acl                    = (known after apply)
+       bucket                 = "cpfreporter-origin-357150818708-us-west-2"
+       bucket_key_enabled     = (known after apply)
+       checksum_crc32         = (known after apply)
+       checksum_crc32c        = (known after apply)
+       checksum_sha1          = (known after apply)
+       checksum_sha256        = (known after apply)
+       content_type           = "text/plain"
+       etag                   = "e85a6c8f4bd5b4466b87ca45f9af1e92"
+       force_destroy          = false
+       id                     = (known after apply)
+       key                    = "dist/static/js/UploadNewUploadPage.cc12cba5.chunk.js.LICENSE.txt"
+       kms_key_id             = (known after apply)
+       server_side_encryption = "AES256"
+       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/UploadNewUploadPage.cc12cba5.chunk.js.LICENSE.txt"
+       source_hash            = "e85a6c8f4bd5b4466b87ca45f9af1e92"
+       storage_class          = (known after apply)
+       tags_all               = {
+           "env"        = "staging"
+           "management" = "terraform"
+           "owner"      = "grants"
+           "repo"       = "cpf-reporter"
+           "service"    = "cpf-reporter"
+           "usage"      = "workload"
        }
+       version_id             = (known after apply)
    }

  # aws_s3_object.origin_dist_artifact["static/js/UploadUploadsPage.8b5be2b7.chunk.js"] will be destroyed
  # (because key ["static/js/UploadUploadsPage.8b5be2b7.chunk.js"] is not in for_each map)
-   resource "aws_s3_object" "origin_dist_artifact" {
-       bucket                 = "cpfreporter-origin-357150818708-us-west-2" -> null
-       bucket_key_enabled     = false -> null
-       content_type           = "text/javascript" -> null
-       etag                   = "7cc1d8b6808269af108b8716dfbd48b6" -> null
-       force_destroy          = false -> null
-       id                     = "dist/static/js/UploadUploadsPage.8b5be2b7.chunk.js" -> null
-       key                    = "dist/static/js/UploadUploadsPage.8b5be2b7.chunk.js" -> null
-       metadata               = {} -> null
-       server_side_encryption = "AES256" -> null
-       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/UploadUploadsPage.8b5be2b7.chunk.js" -> null
-       source_hash            = "7cc1d8b6808269af108b8716dfbd48b6" -> null
-       storage_class          = "STANDARD" -> null
-       tags                   = {} -> null
-       tags_all               = {
-           "env"        = "staging"
-           "management" = "terraform"
-           "owner"      = "grants"
-           "repo"       = "cpf-reporter"
-           "service"    = "cpf-reporter"
-           "usage"      = "workload"
        } -> null
-       version_id             = "TZ7V4GXeP.wXeMFGLzYX59JugiAZLgvB" -> null
    }

  # aws_s3_object.origin_dist_artifact["static/js/UploadUploadsPage.8b5be2b7.chunk.js.LICENSE.txt"] will be destroyed
  # (because key ["static/js/UploadUploadsPage.8b5be2b7.chunk.js.LICENSE.txt"] is not in for_each map)
-   resource "aws_s3_object" "origin_dist_artifact" {
-       bucket                 = "cpfreporter-origin-357150818708-us-west-2" -> null
-       bucket_key_enabled     = false -> null
-       content_type           = "text/plain" -> null
-       etag                   = "43ff778014632a7ef9766fd4374290b4" -> null
-       force_destroy          = false -> null
-       id                     = "dist/static/js/UploadUploadsPage.8b5be2b7.chunk.js.LICENSE.txt" -> null
-       key                    = "dist/static/js/UploadUploadsPage.8b5be2b7.chunk.js.LICENSE.txt" -> null
-       metadata               = {} -> null
-       server_side_encryption = "AES256" -> null
-       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/UploadUploadsPage.8b5be2b7.chunk.js.LICENSE.txt" -> null
-       source_hash            = "43ff778014632a7ef9766fd4374290b4" -> null
-       storage_class          = "STANDARD" -> null
-       tags                   = {} -> null
-       tags_all               = {
-           "env"        = "staging"
-           "management" = "terraform"
-           "owner"      = "grants"
-           "repo"       = "cpf-reporter"
-           "service"    = "cpf-reporter"
-           "usage"      = "workload"
        } -> null
-       version_id             = "FkdjfExO_igq0MvnN1T2AJXhcRJD2GPy" -> null
    }

  # aws_s3_object.origin_dist_artifact["static/js/UploadUploadsPage.bb0182a1.chunk.js"] will be created
+   resource "aws_s3_object" "origin_dist_artifact" {
+       acl                    = (known after apply)
+       bucket                 = "cpfreporter-origin-357150818708-us-west-2"
+       bucket_key_enabled     = (known after apply)
+       checksum_crc32         = (known after apply)
+       checksum_crc32c        = (known after apply)
+       checksum_sha1          = (known after apply)
+       checksum_sha256        = (known after apply)
+       content_type           = "text/javascript"
+       etag                   = "a6a5f7d785ca9e3cdf219486287d1a62"
+       force_destroy          = false
+       id                     = (known after apply)
+       key                    = "dist/static/js/UploadUploadsPage.bb0182a1.chunk.js"
+       kms_key_id             = (known after apply)
+       server_side_encryption = "AES256"
+       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/UploadUploadsPage.bb0182a1.chunk.js"
+       source_hash            = "a6a5f7d785ca9e3cdf219486287d1a62"
+       storage_class          = (known after apply)
+       tags_all               = {
+           "env"        = "staging"
+           "management" = "terraform"
+           "owner"      = "grants"
+           "repo"       = "cpf-reporter"
+           "service"    = "cpf-reporter"
+           "usage"      = "workload"
        }
+       version_id             = (known after apply)
    }

  # aws_s3_object.origin_dist_artifact["static/js/UploadUploadsPage.bb0182a1.chunk.js.LICENSE.txt"] will be created
+   resource "aws_s3_object" "origin_dist_artifact" {
+       acl                    = (known after apply)
+       bucket                 = "cpfreporter-origin-357150818708-us-west-2"
+       bucket_key_enabled     = (known after apply)
+       checksum_crc32         = (known after apply)
+       checksum_crc32c        = (known after apply)
+       checksum_sha1          = (known after apply)
+       checksum_sha256        = (known after apply)
+       content_type           = "text/plain"
+       etag                   = "43ff778014632a7ef9766fd4374290b4"
+       force_destroy          = false
+       id                     = (known after apply)
+       key                    = "dist/static/js/UploadUploadsPage.bb0182a1.chunk.js.LICENSE.txt"
+       kms_key_id             = (known after apply)
+       server_side_encryption = "AES256"
+       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/UploadUploadsPage.bb0182a1.chunk.js.LICENSE.txt"
+       source_hash            = "43ff778014632a7ef9766fd4374290b4"
+       storage_class          = (known after apply)
+       tags_all               = {
+           "env"        = "staging"
+           "management" = "terraform"
+           "owner"      = "grants"
+           "repo"       = "cpf-reporter"
+           "service"    = "cpf-reporter"
+           "usage"      = "workload"
        }
+       version_id             = (known after apply)
    }

  # aws_s3_object.origin_dist_artifact["static/js/app.728f4d3a.js"] will be created
+   resource "aws_s3_object" "origin_dist_artifact" {
+       acl                    = (known after apply)
+       bucket                 = "cpfreporter-origin-357150818708-us-west-2"
+       bucket_key_enabled     = (known after apply)
+       checksum_crc32         = (known after apply)
+       checksum_crc32c        = (known after apply)
+       checksum_sha1          = (known after apply)
+       checksum_sha256        = (known after apply)
+       content_type           = "text/javascript"
+       etag                   = "99bc61ce7a73291005d7a167d60e6eaf"
+       force_destroy          = false
+       id                     = (known after apply)
+       key                    = "dist/static/js/app.728f4d3a.js"
+       kms_key_id             = (known after apply)
+       server_side_encryption = "AES256"
+       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/app.728f4d3a.js"
+       source_hash            = "99bc61ce7a73291005d7a167d60e6eaf"
+       storage_class          = (known after apply)
+       tags_all               = {
+           "env"        = "staging"
+           "management" = "terraform"
+           "owner"      = "grants"
+           "repo"       = "cpf-reporter"
+           "service"    = "cpf-reporter"
+           "usage"      = "workload"
        }
+       version_id             = (known after apply)
    }

  # aws_s3_object.origin_dist_artifact["static/js/app.728f4d3a.js.LICENSE.txt"] will be created
+   resource "aws_s3_object" "origin_dist_artifact" {
+       acl                    = (known after apply)
+       bucket                 = "cpfreporter-origin-357150818708-us-west-2"
+       bucket_key_enabled     = (known after apply)
+       checksum_crc32         = (known after apply)
+       checksum_crc32c        = (known after apply)
+       checksum_sha1          = (known after apply)
+       checksum_sha256        = (known after apply)
+       content_type           = "text/plain"
+       etag                   = "22534f5b586cb736e9cdf4c0742c3fd1"
+       force_destroy          = false
+       id                     = (known after apply)
+       key                    = "dist/static/js/app.728f4d3a.js.LICENSE.txt"
+       kms_key_id             = (known after apply)
+       server_side_encryption = "AES256"
+       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/app.728f4d3a.js.LICENSE.txt"
+       source_hash            = "22534f5b586cb736e9cdf4c0742c3fd1"
+       storage_class          = (known after apply)
+       tags_all               = {
+           "env"        = "staging"
+           "management" = "terraform"
+           "owner"      = "grants"
+           "repo"       = "cpf-reporter"
+           "service"    = "cpf-reporter"
+           "usage"      = "workload"
        }
+       version_id             = (known after apply)
    }

  # aws_s3_object.origin_dist_artifact["static/js/app.8e988fab.js"] will be destroyed
  # (because key ["static/js/app.8e988fab.js"] is not in for_each map)
-   resource "aws_s3_object" "origin_dist_artifact" {
-       bucket                 = "cpfreporter-origin-357150818708-us-west-2" -> null
-       bucket_key_enabled     = false -> null
-       content_type           = "text/javascript" -> null
-       etag                   = "85f4b6ae5c78d01d322de254a80047dd" -> null
-       force_destroy          = false -> null
-       id                     = "dist/static/js/app.8e988fab.js" -> null
-       key                    = "dist/static/js/app.8e988fab.js" -> null
-       metadata               = {} -> null
-       server_side_encryption = "AES256" -> null
-       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/app.8e988fab.js" -> null
-       source_hash            = "85f4b6ae5c78d01d322de254a80047dd" -> null
-       storage_class          = "STANDARD" -> null
-       tags                   = {} -> null
-       tags_all               = {
-           "env"        = "staging"
-           "management" = "terraform"
-           "owner"      = "grants"
-           "repo"       = "cpf-reporter"
-           "service"    = "cpf-reporter"
-           "usage"      = "workload"
        } -> null
-       version_id             = "lBramqdWa3xSdZoNZXZs52v4YUWor7We" -> null
    }

  # aws_s3_object.origin_dist_artifact["static/js/app.8e988fab.js.LICENSE.txt"] will be destroyed
  # (because key ["static/js/app.8e988fab.js.LICENSE.txt"] is not in for_each map)
-   resource "aws_s3_object" "origin_dist_artifact" {
-       bucket                 = "cpfreporter-origin-357150818708-us-west-2" -> null
-       bucket_key_enabled     = false -> null
-       content_type           = "text/plain" -> null
-       etag                   = "22534f5b586cb736e9cdf4c0742c3fd1" -> null
-       force_destroy          = false -> null
-       id                     = "dist/static/js/app.8e988fab.js.LICENSE.txt" -> null
-       key                    = "dist/static/js/app.8e988fab.js.LICENSE.txt" -> null
-       metadata               = {} -> null
-       server_side_encryption = "AES256" -> null
-       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/app.8e988fab.js.LICENSE.txt" -> null
-       source_hash            = "22534f5b586cb736e9cdf4c0742c3fd1" -> null
-       storage_class          = "STANDARD" -> null
-       tags                   = {} -> null
-       tags_all               = {
-           "env"        = "staging"
-           "management" = "terraform"
-           "owner"      = "grants"
-           "repo"       = "cpf-reporter"
-           "service"    = "cpf-reporter"
-           "usage"      = "workload"
        } -> null
-       version_id             = "AJZu3YyeiNQyfoW5EUtL37GPpIpc_mkM" -> null
    }

  # aws_s3_object.origin_dist_artifact["static/js/runtime-app.2c819207.js"] will be created
+   resource "aws_s3_object" "origin_dist_artifact" {
+       acl                    = (known after apply)
+       bucket                 = "cpfreporter-origin-357150818708-us-west-2"
+       bucket_key_enabled     = (known after apply)
+       checksum_crc32         = (known after apply)
+       checksum_crc32c        = (known after apply)
+       checksum_sha1          = (known after apply)
+       checksum_sha256        = (known after apply)
+       content_type           = "text/javascript"
+       etag                   = "b15d7caba841d187868cf52eba1e24e9"
+       force_destroy          = false
+       id                     = (known after apply)
+       key                    = "dist/static/js/runtime-app.2c819207.js"
+       kms_key_id             = (known after apply)
+       server_side_encryption = "AES256"
+       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/runtime-app.2c819207.js"
+       source_hash            = "b15d7caba841d187868cf52eba1e24e9"
+       storage_class          = (known after apply)
+       tags_all               = {
+           "env"        = "staging"
+           "management" = "terraform"
+           "owner"      = "grants"
+           "repo"       = "cpf-reporter"
+           "service"    = "cpf-reporter"
+           "usage"      = "workload"
        }
+       version_id             = (known after apply)
    }

  # aws_s3_object.origin_dist_artifact["static/js/runtime-app.c023cb3c.js"] will be destroyed
  # (because key ["static/js/runtime-app.c023cb3c.js"] is not in for_each map)
-   resource "aws_s3_object" "origin_dist_artifact" {
-       bucket                 = "cpfreporter-origin-357150818708-us-west-2" -> null
-       bucket_key_enabled     = false -> null
-       content_type           = "text/javascript" -> null
-       etag                   = "fb0a1fa605b5d978461998d12d2ba7a1" -> null
-       force_destroy          = false -> null
-       id                     = "dist/static/js/runtime-app.c023cb3c.js" -> null
-       key                    = "dist/static/js/runtime-app.c023cb3c.js" -> null
-       metadata               = {} -> null
-       server_side_encryption = "AES256" -> null
-       source                 = "/home/runner/work/cpf-reporter/cpf-reporter/web/dist/static/js/runtime-app.c023cb3c.js" -> null
-       source_hash            = "fb0a1fa605b5d978461998d12d2ba7a1" -> null
-       storage_class          = "STANDARD" -> null
-       tags                   = {} -> null
-       tags_all               = {
-           "env"        = "staging"
-           "management" = "terraform"
-           "owner"      = "grants"
-           "repo"       = "cpf-reporter"
-           "service"    = "cpf-reporter"
-           "usage"      = "workload"
        } -> null
-       version_id             = "7VFNjCKYbEJaJN40eweflDsLzqAAZZQd" -> null
    }

  # module.lambda_function-graphql.aws_lambda_function.this[0] will be updated in-place
  ~ resource "aws_lambda_function" "this" {
        id                             = "cpfreporter-graphql"
      ~ last_modified                  = "2023-12-21T17:23:47.000+0000" -> (known after apply)
      ~ qualified_arn                  = "arn:aws:lambda:us-west-2:357150818708:function:cpfreporter-graphql:42" -> (known after apply)
      ~ qualified_invoke_arn           = "arn:aws:apigateway:us-west-2:lambda:path/2015-03-31/functions/arn:aws:lambda:us-west-2:357150818708:function:cpfreporter-graphql:42/invocations" -> (known after apply)
      ~ s3_key                         = "graphql.1cbb23ad69ad38acfcd8dbd240d87c6d.zip" -> "graphql.dc448572876ddfd7912a8c6203fa928e.zip"
        tags                           = {}
      ~ version                        = "42" -> (known after apply)
        # (19 unchanged attributes hidden)

      ~ environment {
          ~ variables = {
              ~ "DD_COMMIT_SHA"                      = "7030b9f5535e75b78e9ba9041839bb72c3ad4a21" -> "f4950b0fcb622f34f112a4784672732214cb3d74"
              ~ "DD_TAGS"                            = "git.commit.sha:7030b9f5535e75b78e9ba9041839bb72c3ad4a21,git.repository_url:github.com/usdigitalresponse/cpf-reporter" -> "git.commit.sha:f4950b0fcb622f34f112a4784672732214cb3d74,git.repository_url:github.com/usdigitalresponse/cpf-reporter"
              ~ "DD_VERSION"                         = "7030b9f5535e75b78e9ba9041839bb72c3ad4a21" -> "f4950b0fcb622f34f112a4784672732214cb3d74"
                # (15 unchanged elements hidden)
            }
        }

        # (4 unchanged blocks hidden)
    }

  # module.lambda_function-graphql.aws_lambda_permission.current_version_triggers["APIGateway"] must be replaced
-/+ resource "aws_lambda_permission" "current_version_triggers" {
      ~ id                  = "APIGateway" -> (known after apply)
      ~ qualifier           = "42" # forces replacement -> (known after apply) # forces replacement
+       statement_id_prefix = (known after apply)
        # (5 unchanged attributes hidden)
    }

Plan: 14 to add, 6 to change, 12 to destroy.

Pusher: @dysmento, Action: pull_request_target, Workflow: Continuous Integration

<SelectField name="reportingPeriodId">
<option value={1}>23Q3</option>
<option value={2}>23Q4</option>
<option value={3}>24Q1</option>
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're going to need a variant of an Organization Cell that takes an organizationId and returns the agency and reporting period options to use here.


// return Object.values(projectRecords)
// }

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I commented out a fair amount of code because it isn't needed immediately for validating uploads.

@ed-snodgrass
Copy link
Contributor

@dysmento I'll take a look this evening to see if I can work through some of things you pointed out.

updateUpload,
markValidated,
markInvalidated,
} from 'src/services/uploads'
Copy link
Contributor

@ed-snodgrass ed-snodgrass Dec 20, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

there isn't a file at src/services/uploads. when I updated this import to point to src/services/uploads/uploads it was missing the markValidated and markInvalidated functions. Also, that uploads file is importing validate-upload, so I expect that circular dependency is causing an issue.

@ed-snodgrass
Copy link
Contributor

@dysmento , regarding your question about S3, the intent here is to use S3 for all files, while, I believe, ARPA does upload some files to a filesystem and some to S3.

@as1729
Copy link
Contributor

as1729 commented Dec 22, 2023

Discrete next tasks

@dysmento dysmento marked this pull request as ready for review December 22, 2023 19:46
Copy link
Contributor

@ed-snodgrass ed-snodgrass left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good

Copy link

github-actions bot commented Dec 23, 2023

QA Summary

QA Check Result
🌐 Web Tests
🔗 API Tests
📏 ESLint
🧹 TFLint

Test Coverage

Coverage report for api suite
St File % Stmts % Branch % Funcs % Lines Uncovered Line #s
🔴 All files 24.19 2.25 32.46 24.66
🟢  directives/requireAuth 100 100 100 100
🟢   requireAuth.ts 100 100 100 100
🟡  directives/skipAuth 50 100 0 50
🟡   skipAuth.ts 50 100 0 50 13
🔴  functions 0 100 0 0
🔴   graphql.ts 0 100 0 0 14-22
🔴  graphql 0 100 100 0
🔴   agencies.sdl.ts 0 100 100 0 1
🔴   expenditureCategories.sdl.ts 0 100 100 0 1
🔴   inputTemplates.sdl.ts 0 100 100 0 1
🔴   organizations.sdl.ts 0 100 100 0 1
🔴   outputTemplates.sdl.ts 0 100 100 0 1
🔴   projects.sdl.ts 0 100 100 0 1
🔴   reportingPeriods.sdl.ts 0 100 100 0 1
🔴   roles.sdl.ts 0 100 100 0 1
🔴   subrecipients.sdl.ts 0 100 100 0 1
🔴   uploadValidations.sdl.ts 0 100 100 0 1
🔴   uploads.sdl.ts 0 100 100 0 1
🔴   users.sdl.ts 0 100 100 0 1
🔴  lib 4.98 2.3 6.74 5.12
🔴   auth.ts 25 14.28 28.57 26.92 35-36,67-96,115,119
🔴   aws.ts 27.02 12.5 18.18 27.02 45-50,66-98,125-168,181
🔴   db.ts 31.25 50 50 31.25 15-35,45,47
🔴   ec-codes.ts 0 100 100 0 1
🟢   logger.ts 100 100 100 100
🔴   persist-upload.js 0 0 0 0 16-295
🔴   preconditions.ts 0 0 0 0 2-3
🔴   records.js 0 0 0 0 12-214
🔴   templateRules.ts 0 0 0 0
🔴   tracer.ts 0 100 100 0 5-14
🔴   validate-upload.js 0 0 0 0 18-790
🔴   validation-error.ts 0 0 0 0 14-22
🔴   validation-rules.js 0 0 0 0 6-194
🟡  services/agencies 70.58 0 83.33 70.58
🟢   agencies.scenarios.ts 100 100 100 100
🟡   agencies.ts 68.75 0 83.33 68.75 39-47
🟢  services/expenditureCategories 92.3 100 83.33 92.3
🟢   expenditureCategories.scenarios.ts 100 100 100 100
🟢   expenditureCategories.ts 91.66 100 83.33 91.66 46
🟢  services/inputTemplates 92.3 100 83.33 92.3
🟢   inputTemplates.scenarios.ts 100 100 100 100
🟢   inputTemplates.ts 91.66 100 83.33 91.66 47
🟢  services/organizations 92.3 100 83.33 92.3
🟢   organizations.scenarios.ts 100 100 100 100
🟢   organizations.ts 91.66 100 83.33 91.66 47
🟢  services/outputTemplates 92.3 100 83.33 92.3
🟢   outputTemplates.scenarios.ts 100 100 100 100
🟢   outputTemplates.ts 91.66 100 83.33 91.66 43
🟡  services/projects 80 100 62.5 80
🟢   projects.scenarios.ts 100 100 100 100
🟡   projects.ts 78.57 100 62.5 78.57 45-51
🟡  services/reportingPeriods 53.84 0 41.66 56
🟢   reportingPeriods.scenarios.ts 100 100 100 100
🟡   reportingPeriods.ts 52 0 41.66 54.16 21-31,42-45,72-82
🟢  services/roles 92.3 100 83.33 92.3
🟢   roles.scenarios.ts 100 100 100 100
🟢   roles.ts 91.66 100 83.33 91.66 40
🟡  services/subrecipients 80 100 62.5 80
🟢   subrecipients.scenarios.ts 100 100 100 100
🟡   subrecipients.ts 78.57 100 62.5 78.57 47-55
🔴  services/uploadValidations 0 100 0 0
🔴   uploadValidations.scenarios.ts 0 100 100 0 5
🔴   uploadValidations.ts 0 100 0 0 9-66
🟡  services/uploads 70 100 45.45 70
🟢   uploads.scenarios.ts 100 100 100 100
🟡   uploads.ts 68.42 100 45.45 68.42 49-66
🟡  services/users 52 0 38.46 52
🟢   users.scenarios.ts 100 100 100 100
🟡   users.ts 50 0 38.46 50 40-48,54-72
Coverage report for web suite
St File % Stmts % Branch % Funcs % Lines Uncovered Line #s
🔴 All files 13.49 12.6 12.32 12.76
🔴  src 25.92 0 21.42 25.92
🔴   App.tsx 0 0 0 0 3-35
🟢   Routes.tsx 100 100 100 100
🔴   auth.ts 35.71 100 16.66 35.71 33-45,68-88
🔴   entry.client.tsx 0 0 100 0 10-22
🔴  src/components/Agency/Agencies 0 100 0 0
🔴   Agencies.tsx 0 100 0 0 9-21
🔴  src/components/Agency/AgenciesCell 0 100 0 0
🔴   AgenciesCell.tsx 0 100 0 0 8-39
🔴  src/components/Agency/Agency 0 0 0 0
🔴   Agency.tsx 0 0 0 0 10-78
🔴  src/components/Agency/AgencyCell 0 100 0 0
🔴   AgencyCell.tsx 0 100 0 0 7-27
🔴  src/components/Agency/AgencyForm 0 0 0 0
🔴   AgencyForm.tsx 0 0 0 0 24-39
🔴  src/components/Agency/EditAgencyCell 0 100 0 0
🔴   EditAgencyCell.tsx 0 100 0 0 10-58
🔴  src/components/Agency/NewAgency 0 100 0 0
🔴   NewAgency.tsx 0 100 0 0 9-35
🟢  src/components/Navigation 100 100 100 100
🟢   Navigation.tsx 100 100 100 100
🔴  src/components/Organization/EditOrganizationCell 0 100 0 0
🔴   EditOrganizationCell.tsx 0 100 0 0 13-62
🔴  src/components/Organization/NewOrganization 0 100 0 0
🔴   NewOrganization.tsx 0 100 0 0 9-35
🔴  src/components/Organization/Organization 0 0 0 0
🔴   Organization.tsx 0 0 0 0 10-70
🔴  src/components/Organization/OrganizationCell 0 100 0 0
🔴   OrganizationCell.tsx 0 100 0 0 7-27
🔴  src/components/Organization/OrganizationForm 0 0 0 0
🔴   OrganizationForm.tsx 0 0 0 0 27-41
🔴  src/components/Organization/Organizations 0 100 0 0
🔴   Organizations.tsx 0 100 0 0 9-21
🔴  src/components/Organization/OrganizationsCell 0 100 0 0
🔴   OrganizationsCell.tsx 0 100 0 0 8-37
🟡  src/components/ReportingPeriodCell 55 0 55.55 47.05
🟢   ReportingPeriodCell.mock.ts 100 100 100 100
🔴   ReportingPeriodCell.stories.tsx 0 0 0 0 6-32
🟢   ReportingPeriodCell.tsx 100 100 100 100
🟡  src/components/ReportingPeriodsCell 57.14 28.57 60 50
🟢   ReportingPeriodsCell.mock.ts 100 100 100 100
🔴   ReportingPeriodsCell.stories.tsx 0 0 0 0 6-32
🟢   ReportingPeriodsCell.tsx 100 66.66 100 100 63-66
🔴  src/components/TableBuilder 0 0 0 0
🔴   DebouncedInput.tsx 0 0 0 0 13-32
🔴   Filter.tsx 0 0 0 0 6-15
🔴   TableBuilder.tsx 0 0 0 0 22-70
🔴   TableHeader.tsx 0 0 0 0 5-42
🔴   TableRow.tsx 0 100 0 0 3-7
🔴  src/components/Upload/EditUploadCell 0 100 0 0
🔴   EditUploadCell.tsx 0 100 0 0 10-68
🔴  src/components/Upload/NewUpload 0 100 0 0
🔴   NewUpload.tsx 0 100 0 0 7-30
🔴  src/components/Upload/Upload 0 0 0 0
🔴   Upload.tsx 0 0 0 0 12-100
🔴  src/components/Upload/UploadCell 0 100 0 0
🔴   UploadCell.tsx 0 100 0 0 7-32
🔴  src/components/Upload/UploadForm 0 0 0 0
🔴   UploadForm.tsx 0 0 0 0 21-95
🔴  src/components/Upload/Uploads 0 0 0 0
🔴   Uploads.tsx 0 0 0 0 9-66
🔴   columns.tsx 0 0 0 0 7-62
🔴  src/components/Upload/UploadsCell 0 100 0 0
🔴   UploadsCell.tsx 0 100 0 0 8-53
🔴  src/components/User/EditUserCell 0 100 0 0
🔴   EditUserCell.tsx 0 100 0 0 10-60
🔴  src/components/User/NewUser 0 100 0 0
🔴   NewUser.tsx 0 100 0 0 9-32
🔴  src/components/User/User 0 0 0 0
🔴   User.tsx 0 0 0 0 9-93
🔴  src/components/User/UserCell 0 100 0 0
🔴   UserCell.tsx 0 100 0 0 7-31
🔴  src/components/User/UserForm 0 0 0 0
🔴   UserForm.tsx 0 0 0 0 25-39
🔴  src/components/User/Users 0 100 0 0
🔴   Users.tsx 0 100 0 0 9-24
🔴  src/components/User/UsersCell 0 100 0 0
🔴   UsersCell.tsx 0 100 0 0 8-43
🟡  src/layouts/AuthenticatedLayout 60 50 100 60
🔴   AuthenticatedLayout.stories.tsx 0 100 100 0 5-13
🟢   AuthenticatedLayout.tsx 100 50 100 100 24
🟢  src/lib 100 100 100 100
🟢   formatters.tsx 100 100 100 100
🔴  src/pages/Agency/AgenciesPage 0 100 0 0
🔴   AgenciesPage.tsx 0 100 0 0 7-11
🔴  src/pages/Agency/AgencyPage 0 100 0 0
🔴   AgencyPage.tsx 0 100 0 0 7-8
🔴  src/pages/Agency/EditAgencyPage 0 100 0 0
🔴   EditAgencyPage.tsx 0 100 0 0 7-8
🔴  src/pages/Agency/NewAgencyPage 0 100 0 0
🔴   NewAgencyPage.tsx 0 100 0 0 3-4
🔴  src/pages/FatalErrorPage 0 0 0 0
🔴   FatalErrorPage.tsx 0 0 0 0 15
🟡  src/pages/LoginPage 50 100 100 50
🔴   LoginPage.stories.tsx 0 100 100 0 5-13
🟢   LoginPage.tsx 100 100 100 100
🔴  src/pages/NotFoundPage 0 100 0 0
🔴   NotFoundPage.tsx 0 100 0 0 2
🔴  src/pages/Organization/EditOrganizationPage 0 100 0 0
🔴   EditOrganizationPage.tsx 0 100 0 0 7-8
🔴  src/pages/Organization/NewOrganizationPage 0 100 0 0
🔴   NewOrganizationPage.tsx 0 100 0 0 3-4
🔴  src/pages/Organization/OrganizationPage 0 100 0 0
🔴   OrganizationPage.tsx 0 100 0 0 7-8
🔴  src/pages/Organization/OrganizationsPage 0 100 0 0
🔴   OrganizationsPage.tsx 0 100 0 0 7-8
🟡  src/pages/ReportingPeriodsPage 50 100 100 50
🔴   ReportingPeriodsPage.stories.tsx 0 100 100 0 5-13
🟢   ReportingPeriodsPage.tsx 100 100 100 100
🔴  src/pages/Upload/EditUploadPage 0 100 0 0
🔴   EditUploadPage.tsx 0 100 0 0 7-8
🔴  src/pages/Upload/NewUploadPage 0 100 0 0
🔴   NewUploadPage.tsx 0 100 0 0 3-4
🔴  src/pages/Upload/UploadPage 0 100 0 0
🔴   UploadPage.tsx 0 100 0 0 7-8
🔴  src/pages/Upload/UploadsPage 0 100 0 0
🔴   UploadsPage.tsx 0 100 0 0 7-8
🟡  src/pages/UploadTemplatePage 50 100 50 50
🔴   UploadTemplatePage.stories.tsx 0 100 100 0 5-13
🟡   UploadTemplatePage.tsx 75 100 50 75 9
🔴  src/pages/User/EditUserPage 0 100 0 0
🔴   EditUserPage.tsx 0 100 0 0 7-8
🔴  src/pages/User/NewUserPage 0 100 0 0
🔴   NewUserPage.tsx 0 100 0 0 3-4
🔴  src/pages/User/UserPage 0 100 0 0
🔴   UserPage.tsx 0 100 0 0 7-8
🔴  src/pages/User/UsersPage 0 100 0 0
🔴   UsersPage.tsx 0 100 0 0 7-11
🔴  src/utils 0 0 0 0
🔴   index.ts 0 0 0 0 3-37

Pusher: @dysmento, Action: pull_request_target, Workflow: Continuous Integration

api/src/lib/records.js Fixed Show fixed Hide fixed
api/src/lib/records.js Fixed Show fixed Hide fixed
api/src/lib/records.js Fixed Show fixed Hide fixed
api/src/lib/records.js Fixed Show fixed Hide fixed
api/src/lib/records.js Fixed Show fixed Hide fixed
api/src/lib/records.js Fixed Show fixed Hide fixed
api/src/lib/records.js Fixed Show fixed Hide fixed
api/src/lib/records.js Fixed Show fixed Hide fixed
@dysmento dysmento enabled auto-merge (squash) December 23, 2023 21:58
@dysmento dysmento merged commit 1927dbe into main Dec 23, 2023
19 checks passed
@dysmento dysmento deleted the feature/24_submit_workbook_page branch December 23, 2023 23:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants