Обсуждение: Code Organisation

Поиск
Список
Период
Сортировка

Code Organisation

От
"Ravi Chemudugunta"
Дата:
Hi,

I realise this may be a subjective topic ; however:

what does everyone think about grouping a set of functions together,
by related it maybe that they call on each other but more so live in
the same file on disk (before they get submitted) ... we are trying to
use the output of pg_dump for versioning rather than having our own
file for e.g. inventory.sql under the tree somewhere.

(does anyone have any ideas on the topic of version control itself ?)

The only problem with doing it this way is once the functions get
admitted into the database (and our inventory.sql file is deleted
because it will incorporated into pg_dump somewhere) all context is
lost,

somehow it seems like a a set of functions in a file helps you figure
out whats happening.

I have thought about two ways to group functions:

by prefix e.g. inventory_do_stuff() or
- use of schemas
inventory.do_stuff

the advantage of schemas is functions within the same related group do
not have to qualify access. for e.g. inventory_something() doesn't
have to call inventory_do_stuff() but rather just do_stuff() (ofcourse
this requires that inventory be in the search path).  I have written a
simple function that appends a schema to the search_path without
destroying it.

Is there any other ways to do this cleanly ?

--
:wq

Re: Code Organisation

От
"Scott Marlowe"
Дата:
On Tue, Nov 18, 2008 at 6:38 PM, Ravi Chemudugunta
<chemuduguntar@gmail.com> wrote:
> Hi,
>
> I realise this may be a subjective topic ; however:
>
> what does everyone think about grouping a set of functions together,
> by related it maybe that they call on each other but more so live in
> the same file on disk (before they get submitted) ... we are trying to
> use the output of pg_dump for versioning rather than having our own
> file for e.g. inventory.sql under the tree somewhere.
>
> (does anyone have any ideas on the topic of version control itself ?)
>
> The only problem with doing it this way is once the functions get
> admitted into the database (and our inventory.sql file is deleted
> because it will incorporated into pg_dump somewhere) all context is
> lost,

You're halfway there.  Just make a table called something like
changetrack (id int primary key, description text); and then every
update to your database make it look something like this:

begin;
insert into changetrack (id,description) values (1,'First update,
create simple schema');
create table...
alter table...
yada yada yada
commit;

and repeat that for each update.  Then you can see which were applied
just by looking at your changetrack table.  You can have multiple
updates in a file, and group the ones together into individual
transactions that make sense.