A way to keep all wappler elements in sync if one of them is modified. Refactoring QoL

One thing that Bubble gets right is using internal non-modifiable ids for every single element in their platform for each app. This could be a data type(DB table), data item(row), UI element, etc

The purpose of this is to be able to abstract what you visualize from how it all connects behind.

I can change that name of a field in one place and I won’t have to change it elsewhere because bubble internally is establishing a link between them via internal non mutable IDs.

It would help a lot if Wappler kept record in meta files or something about the connections between the different elements from App and Server Connect.

As an example. If I change the SC connect file name it will update automatically or present me with a prompt to confirm the change for all AC elements that reference the SC.
Or if I change the name of an input element it will update the SC form.

The hard part would probably be keeping everything in sync as you can edit the code yourself.

It probably is not an easy thing to be done but it would be a hell of a QoL change.

Yes we were planning to organize a meta database within Wappler per project where all components that are used and their links are kept.

That will help refactoring.

Using universal IDs might not be feasible as we will have to add them in all dom nodes. So your page will be full with id’s

So we will be looking for better solutions. Also you can’t stick the universal id’s in expressions.

5 Likes

I use atom to find and replace the server connect’s old name with the new one. I find this gives the functionality that you mention, and hasn’t failed me yet. It looks in every project file, and pulls out all the references to that Id/name/whatever and updates them all.
I just did a complete rename of all my database tables (I had used hyphens instead of underscores) and safely used this method to update all the references to all the tables in my app.
Wappler has find and replace but it’s a little clunky, compared to the silky smooth one Atom has.

2 Likes

(I realise this may be considered slightly off-topic, coming from another persective, but anyway…)

This is what FileMaker does too. It’s very convenient but I have reservations about it: there is a price to pay for this convenience (I don’t mean financial) and it’s not 100% reliable.

I don’t know Bubble, but from what I understand, it’s similar to FileMaker in that everything is integrated - the front-end, scripting and database etc. - making it feasible to track every type of object and assign an ID to it. This of course imposes the type of restrictions and limitations which would make Wappler a very different type of software.

I expect for most FileMaker users, they can change the name of any object without being concerned that anything will break - and up to a point, it’s a great feature. For more advanced developers, this is not always the case, as object names may be created dynamically, at runtime, using indirection etc. For this and other reasons, I’m probaby as cautious about changing object names or deleting objects etc. in FileMaker as I would be in Wappler. In either case, I’ll search for references to objects first (though this may not conclusive), and searching for references is much faster and easier in Wappler (though it would be even better with some improvements to the existing search facility).

I very much like the idea of the feature George describes - a meta database of all components in a project. I think it could be an ideal solution. Such databases are what many developers use with FileMaker, but they are third-party, expensive and generally cumbersome to use.

I don’t like internal IDs either. At least in Wappler’s context. I just mentioned it’s what Bubble gets right for the type of software they are providing.

As you can see that was also what I proposed :slight_smile:

2 Likes

This is not in my tier-list of most desirable requests, but only because I assume that it is very hard to implement. So I just take it as inevitable and get used to it.

But apart from that, it must be the top one!
It will improve the quality of work in Wappler drastically.

At the moment you can’t just rename fields in tables in DB; you can’t rename or rearrange the server actions; the same for page components. Because it’s gonna mess everything up. :upside_down_face:

P.S.: Some support for this request also here. Automatically rename table name in database query steps if changed through database manager