Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Check how TGE handles a similar functionality

  2. Implement a naїve version of the functionality (always overwrites on sync, doesn’t handle getCustomfieldValue, etc.)

  3. Validate whether all of the points in the Questions are relevant to the actual behaviour of the Grid in that basic implementation version.

  4. Write potential answers/suggestions to the questions with some detail on the implementation.

  5. Get approval on the clarifications from Questions

  6. Agree and document the timescale of the full implementation, and add it to the overall roadmap.

  7. Implement a more thorough version of the functionality

Questions:

Question

1

Which source will be the primary? Database or App?

Suggest database should be the primary source due to it security

2

How often does data sync? Real-time, period, or when user click on “Re-synchonize”?

3

How to recognize data loss of sync?

4

How the temporarily data from App will be handled? When user change data from App but lost connection to database, these changes will be saved to which place?

5

How the UI interact when the synchonize is being process?

6

If the connection to the DB is lost temporarily, do we lock the Grid from being edited? Do we block it from being viewed?

If the Grid remains editable, do we sync the data after the connection with the DB is restored? How is that handled given that the normal behaviour in this case is that DB data overrides Jira data, since DB is the primary storage?

Hung: To simplify the process, we can display a warning to notify users when the data is not synchronized correctly. Additionally, we can provide a "Re-synchronize" button, which, when clicked, will fetch all the data from the database and replace the current data in the UI grid. This approach ensures that the database acts as the primary source for synchronization.

7

How can we save the history of changes?

8

How to recognize and display error to the app when the connection is lost?

9

When the connection is lost, can user still use the grid? What will happen in the App in this case?

10

What happen when many users update a grid?

11

Should the data between app and database be encrypted?

12

How can we handle with big data from database?

13

How to handle if app and database have different restriction? Like allow null value, different in data type?

14

Does this functionality need to be present on Cloud as well as on Server

Hung: There is no restriction so I think we can do for both

15

Support Offline?

16

Process for user to track the synchonize action?

17

How the TGE manages the getCustomfieldValue call from Jira’s own API? Do we provide the data pulled from the table on that call? Is it a Service that TGE exports?

18

How will the Row ID be handled when new rows are added on the DB side and not through the regular means (manual, API)? Does the ID get generated when the data is loaded into the Jira Grid view? Does it get generated automatically?

Does the DB data overwrite default rows automatically on issue-create if the user enters a non-existent Issue ID first and then an Issue with that ID is created?

Hung: We keep auto_increment ID on both side, and use another field “UUID” to manage the data to synchonize.

With the data save from FE, we can use library like uuidv4

WIth the data save from database, we can use function UUID() from mysql

Code Block
CREATE TABLE MyTable (
    id INT AUTO_INCREMENT PRIMARY KEY,
    uuid CHAR(36) NOT NULL DEFAULT (UUID()),
    name VARCHAR(255),
    age INT
);
19

If the DB Table sourced rows contain non-standard Row IDs, do they get transformed and re-inserted? Can we make the correct format of the Row ID be populated on the SQL side?

Hung: the same answer as above

20

Should we use a different format for Row IDs that are primarily stored in a remote DB?

Hung: UUID is an option that I suggest

21

Should the case of initialising TGNG from a pre-existing table be supported?

Hung: Yes, that is also a case that Francis suggest when we talk about bulk import

22

Do we handle Attachment columns by just storing the Attachment ID?

HUng: Tested on current Data Mirror function, it will save the Attachment ID with the value property

Screenshot 2025-01-07 at 16.40.18.png
23

Do wrong/non-existing Attachment ID values get ignored or do we add a custom error? Does the same behaviour apply to wrong/non-existing values on User/Multi/Single-select?

Hung: With the current behaviour, it will ignore, so do User/Multi/Single-select. But to make it more effective, we can display a #error like Excel